目录
一、概述
1、hex文件简述
作用十六进制编码的可执行文件,包含地址、校验和等信息。这个文件比bin文件大,可以直接通过文本编辑器查看。烧录程序时候可以用hex文件或者bin文件,bin文件比较精小,OTA升级等操作使用bin更合适。效果如下图:
2、bin文件简述
纯二进制机器码,无地址信息,仅包含程序的可执行代码和数据。只提供烧录作用,纯二进制机器码,阅读效果不好,如下图:
3、map文件简述
又名链接映射文件,作用记录所有符号(函数、变量)的地址、占用的内存段(如CODE、DATA)及总内存使用量。这个文件作用很大,对于调试阶段,可以看到全局变量、函数所在的地址以及大小等。在【超级详细!!】Keil编译下的.map文件详解与实战有详细解读,效果如下图:
4、sct文件简述
又名分散加载脚本,作用定义代码和数据的存储位置(如Flash、RAM分区),控制内存布局。通俗一点讲可以把特定的变量或者函数指定到固定地址,用于优化复杂存储架构的代码分布。效果如下图:
5、axf文件简述
又名ARM可调试文件,作用包含完整的可执行代码、调试信息(符号表、源码行号等)及内存布局信息。调试时加载到芯片,支持单步执行、变量监视等功能 ,效果图下图:
6、dis文件简述
又名:反汇编文件,作用逆向分析代码逻辑,可以更深入的排查硬件异常,常用于调试场景。效果如下图:
二、生成步骤
1、hex文件生成
2、map文件生成
3、sct文件生成
sct文件是自动生成的。
4、axf文件生成
axf文件也是keil编译时自动生成的
5、bin文件生成
bin文件生成和dis反汇编文件生成差不多。Run#1和Run#1一个可以用来生成bin文件,一个可以用来生成dis反汇编文件。我们现在查看bin文件。
结构如下图,首先找到fromelf.exe文件存放的路径,然后查找如下图所示的路径,这里是.\Objects\project,有的会因为文件名字不同。
fromelf可执行文件的地址 --bin -o .\Objects\project.bin .\Objects\project.axf
示例如下,D:\keil\keil_v5\ARM\ARMCC\bin\fromelf.exe是存放这个文件的路径,直接搜索全文即。其余只需要查看如上图所示.\Objects\文件名,中的文件名即可。
D:\keil\keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o .\Objects\project.bin .\Objects\project.axf
模板如下示例
fromelf.exe路径 --bin -o .\Objects\文件名.bin .\Objects\文件名.axf
路径如下
6、dis文件生成
dis反汇编文件和bin文件生成方式类似,只是其中结构有一点点改变。
格式如下:
fromelf.exe路径 --text -a -c --output=文件名.dis .\Objects\文件名.axf
示例如下
D:\keil\keil_v5\ARM\ARMCC\bin\fromelf.exe --text -a -c --output=project.dis .\Objects\project.axf
路径如下