keil mdk生成文件.hex和.bin文件分析

如何生成.bin文件

将cmd目录切换到name.axf下,输入fromelf --bin --output name.bin name.axf,就可以生成bin文件。
或者在mdk中设置,如下图

hex文件

hex文件包含如下格式
开始符号+字节数+地址+类型+数据+校验

其中类型有

0x01 数据
0x01 文件结束
0x02 扩展的段地址
0x03 开始段地址
0x04 扩展线性地址
0x05 开始线性地址
keil mdk生成文件.hex和.bin文件分析_第1张图片

分析上图中的hex文件,0x08000000是开始地址,之后在该地址上加,
0x08000000是STM32flash的起始地址。注意cortex-m3是小端模式存储示意如下:

地址 数据
0x08000000 0x20000660
0x08000004 0x080001B1
0x20000660正是复位后SP的指针,堆栈是向低地址增长的。
0x080001B1正是复位后 Reset_Handler的地址。
以上hex文件中的数据按地址存储到stm32的flash中。

bin文件

bin文件内容是直接存储到flash中的。用一般的编辑器打开后是乱码。用winhex软件可以查看。这与hex中的数据是相同的,只是没有那些标记,是纯粹的写入flash中的数据。
keil mdk生成文件.hex和.bin文件分析_第2张图片

这些数字代表什么意思呢?

这些都是机器码,是arm-v7指令的编码。查看工程的.axf文件可以得到反汇编代码,得到的与上述存储的数据是一致的。
fromelf -c name.axf 即可生成反汇编代码。

你可能感兴趣的:(51单片机,单片机,嵌入式硬件)