1、话题引入 在使用Keil集成开发环境中大伙使用频率高的文件大概就是.hex吧,如果考虑内存布局等会使用到.map文件,如果遇到了疑难bug还会在仿真过程中看一看汇编窗口栏。 然而bin文件作为嵌入式最为直接的固件,同样也是我们非常需要获得的文件,比如进行远程升级等等,一方面可以直接通过其他hex转bin工具转化,另一方面通过集成开发环境自带的功能进行转化即可。 同样有时候我们不想通过debug状态下的汇编栏进行汇编查看,而是想直接分析每个源文件编译所生成的汇编文件来定位问题和优化性能,集成开发环境能够有生成汇编文件的功能就再方便不过了。 2、生成bin文件 1、formelf.exe介绍 fromelf.exe即keil下的一个处理elf文件的工具,elf文件英文名为Executable and Linking Format ,该文件包括符号表,调试信息,汇编等等,所以通过使用fromelf.exe可以输出较多信息文件,比如hex、bin、asm等。 对于此工具详细的说明文件可以参考:using_the_fromelf_utility.pdf 该文档网上很容易搜索到,这里就不板书了。 如果你想省点事,可以直接使用cmd输出formelf.exe的帮助信息,过程如下。 2、formelf.exe详细说明 1、首先在windows运行栏中找到cmd命令输入。 2、输入命令行.\fromelf.exe --help bug菌对上面的输出简单的注释了下。
输出bin和汇编 在keil中进行如下配置 ,表示在工程编译以后所执行的命令行。 命令行如下,方便大伙copy:
确定配置好以后重新编译,最终编译器输出如下信息。 从输出信息来可以了解到bin文件和asm文件均由.axf文件通过fromelf工具转化而来,相信转化命令的通配符大家也可以理解了,输出结果如下: 这样看来.axf文件所包含的信息非常之多,其全称为:Arm executable File,其实.axf文件与gcc中的elf文件是类似的,Keil默认生成.axf文件。 如果在Keil中没有勾选hex文件的生成,那么就用.axf文件来进行烧录。 而如果勾选了Hex文件生成,其实就是Keil通过调用fromelf将axf转换为hex文件,所以编译后可以在输出文件中同时看到axf和hex文件。 3、C与汇编混合展示 我们打开前面的.asm文件如下图所示: 零零散散我们可以看到几个C函数,不过阅读起来稍微有点吃力,大伙应该还是比较喜欢阅读debug时候汇编框中C语言与汇编语言一一对应的形式,这样也更好理解汇编语言。 1、生成.txt和.i文件 我们在keil中勾选如下几项,然后进行重新编译。 其中在工程目录的*.txt即为汇编与C混合文件,而*.i为经过了预处理的文件。 2、对比.c和.i文件 对于预处理过程主要是去掉注释和展开宏等,下面我们对比一下源文件与.i文件。 3、查看.txt文件 生成的.txt即为C代码与汇编的混合文件。 |