在嵌入式开发中,生成bin文件是必不可少的一步,使用Keil MDK作为编译工具,能够快速地生成bin文件。然而,对于初学者来说,如何使用MDK编译器生成bin文件还存在一些困难。在本文中,我们将围绕着“MDK生成bin文件”的话题,为大家介绍MDK编译器的使用步骤以及实用技巧,帮助大家快速学习并掌握这个过程。
一、MDK编译器
Keil MDK是一款应用广泛的嵌入式软件开发套件,MDK内置了ARM编译器、调试器及其他开发工具,支持包括Arm Cortex-M系列、Arm Cortex-A系列和Armv8-M系列等众多芯片,可以帮助开发者在无需切换软件工具的情况下完成从开发、调试到产品上市的整个周期。
二、生成bin文件步骤
1. 新建一个Keil项目
在MDK中,需要新建一个项目来进行编译。在新建项目的时候,需要指定芯片型号和开发板的类型,如下图所示。
![image-20211020162859082](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020162859082.png)
2. 编写代码并保存
在新建的项目中,可以编写自己的C/C++代码。编写完代码后,需要保存。
3. 选择build target并进行编译
选择需要编译的Target,在菜单栏选择“Project —> Build target”,启动编译器进行编译,等待编译完成。
![image-20211020164236854](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020164236854.png)
4. 编译完成后生成bin文件
编译完成后,选择“Project —> Options for Target...—>Output”,在Output中选中“Create HEX File”和“Create BIN File”。
![image-20211020164635223](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020164635223.png)
在保存完成之后,就可以在工程文件夹中看到生成的bin文件。这个bin文件就是代码编译生成的可执行文件,可以直接烧录到芯片中运行。
三、实用技巧
1. 设置头文件路径
当一个项目中使用了多个文件时,需要正确地调整头文件路径。在Keil中,选择“Project —> Options for Target...—>C/C++ —>Include Paths”。
一般情况下,所有的头文件都在库文件夹中,可以通过添加库文件夹路径来达到正确包含头文件的目的,如下图所示。
![image-20211020165212760](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020165212760.png)
2. 提高编译速度
编译速度对于嵌入式开发来说十分重要,Keil MDK内置的编译器的编译速度比其他编译器慢得多,但是通过设置编译选项,可以大大提高编译速度。
在编译选项中,有两个选项可以提高编译速度:1)启用快速优化 2)使用lto链接器。
![image-20211020165915733](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020165915733.png)
启用快速优化可以提高编译和链接速度,同时还可以减小生成的目标文件的大小。使用lto链接器则可以替代传统的链接器,可以更有效地利用编译时的信息,从而有效地减小目标文件的大小。
3. 添加自定义的启动文件
在使用Keil进行编译时,系统会默认添加一个启动文件,该文件一般被命名为“startup_xx.s”。如果需要使用自定义的启动文件,可以在项目选项中进行设置。
设置方法:选择“Options for Target...—>Debug”选项卡,清空“ST/linker/Utility —>Input”,然后在“User”里输入自定义的启动文件名。
![image-20211020170522360](https://gitee.com/zhangxiaopan6466360/pictureBed/raw/master/image-20211020170522360.png)
总结
以上就是使用MDK编译器生成bin文件的步骤及实用技巧,通过这些方法,希望读者们能够更快地掌握整个编译过程并编写出更加高效的代码。需要注意的是,在实际的开发过程中,还需要针对具体的项目进行调整和处理,不同的项目有其独特的需求和情况。因此,需要开发者根据实际情况来学习和使用这些技巧。