stm32专题三十六:MDK编译过程和文件类型(三)

生成 bin 和 hex文件

若编译过程无误,即可把工程生成前面对应的*.axf 文件,而在 MDK 中使用下载器(DAP/JLINK/ULINK 等)下载程序或仿真的时候, MDK 调用的就是*.axf 文件,它解释该文件,然后控制下载器把*.axf 中的代码内容下载到 STM32 芯片对应的存储空间,然后复位后芯片就开始执行代码了。

然而,脱离了 MDK 或 IAR 等工具,下载器就无法直接使用*.axf 文件下载代码了,它们一般仅支持 hex 和 bin 格式的代码数据文件。默认情况下 MDK 都不会生成 hex 及 bin 文件,需要配置工程选项或使用 fromelf 命令。

fromelf的命令描述:

stm32专题三十六:MDK编译过程和文件类型(三)

stm32专题三十六:MDK编译过程和文件类型(三)

bin 和 hex 文件详解

bin文件就是纯二进制数据,无特殊格式

hex 是 Intel 公司制定的一种使用 ASCII 文本记录机器码或常量数据的文件格式,这种文件常常用来记录将要存储到 ROM 中的数据,绝大多数下载器支持该格式。

hex格式的具体描述如下所示,非常重要。

stm32专题三十六:MDK编译过程和文件类型(三)

5个记录,每部分的具体意义:

stm32专题三十六:MDK编译过程和文件类型(三)

stm32专题三十六:MDK编译过程和文件类型(三)

接下来,我们分析一下这几条hex文件的内容和意义:

stm32专题三十六:MDK编译过程和文件类型(三)

为了更清楚地对比 bin、 hex 及 axf 文件的差异,我们来查看这些文件内部记录的信息来进行对比:

stm32专题三十六:MDK编译过程和文件类型(三)