Hex文件分析及IAP+App合并
一、Hex文件分析
Hex文件带地址信息,Bin文件不带地址
以boot.hex文件为例,烧录在单片机0x0000
1)文件头分析
HEX文件
:020000040000FA
:100000005021001099010000A1010000A30100008F
:10001000A5010000A7010000A90100009EF3FFEF69
相应的BIN文件
:020000040000FA
02 数据长度
0000 数据地址
04 扩展线性地址记录
0000 数据
FA 校验码,256-(020000040000的和)
:100000005021001099010000A1010000A30100008F
10 数据长度16个字节
0000 数据地址0x0000
00 数据记录
5021001099010000A1010000A3010000 数据
8F 校验码
2)文件尾
:102A50000000000000000000000000000000000076
:042A60000000000072
:04000005000000E512
:00000001FF
:042A60000000000072
04 数据长度4个字节
2A60 数据地址0x2A60
00 数据记录
00000000 数据
72 校验码
:04000005000000E512
04 数据长度
0000 数据地址
05 开始线性地址记录
000000E5 数据记录
打开.map文件,查看__main地址为0x000000e5
__main 0x000000e5 Thumb Code 8 __main.o(!!!main)
12 校验码
以App.hex文件为例,烧录在单片机0x6000
1)文件头分析
:020000040000FA
:1060000058C40010C5610000CD610000CF610000E0
:10601000D1610000D3610000D56100009EF3FFEF65
:020000040000FA
02 数据长度
0000 数据地址
04 扩展线性地址记录
0000 数据
FA 校验码,256-(020000040000的和)
:1060000058C40010C5610000CD610000CF610000E0
10 数据长度16个字节
6000 数据地址0x6000
00 数据记录
58C40010C5610000CD610000CF610000 数据
E0 校验码
2)数据地址大于0xFFFF
:10FFF000EF63B2BE0809713FD47CACBE5213723FAE
:020000040001F9
:10000000128FA6BE4714733FE59AA0BEDD0B743F66
:020000040001F9
02 数据长度
0000 数据地址
04 扩展线性地址记录
0001 数据记录,是下一条记录的基地址(0x0001 << 16 = 0x10000)
F9 校验码
:10000000128FA6BE4714733FE59AA0BEDD0B743F66
10 数据长度16个字节
0000 数据地址, 0x10000 + 0x0000 = 0x10000
00 数据记录
128FA6BE4714733FE59AA0BEDD0B743F 数据
66 校验码
3)数据地址再次大于0xFFFF
:10FFF000280FC813300FC823380FC833400F401DD7
:020000040002F8
:10000000480FC815500FC825580FC835600FC01DC0
:020000040002F8
02 数据长度
0000 数据地址
04 扩展线性地址记录
0002 数据记录,是下一条记录的基地址(0x0002 << 16 = 0x20000)
F8 校验码
:10000000480FC815500FC825580FC835600FC01DC0
10 数据长度16个字节
0000 数据地址, 0x20000 + 0x0000 = 0x20000
00 数据记录
480FC815500FC825580FC835600FC01D 数据
C0 校验码
4)文件尾
:1036300029066914490C032F2626023E01000000CA
:04000005000060E5B2
:00000001FF
:04000005000060E5B2
04 数据长度
0000 数据地址
05 开始线性地址记录
000060E5 数据记录
打开.map文件,查看__main地址为0x000060E5
__main 0x000060e5 Thumb Code 8 __main.o(!!!main)
B2 校验码
:00000001FF
00 数据长度
00000 数据地址
01 文件结束记录
FF 校验码
二、IAP+App的hex文件合并
IAP的hex文件删除最后一行,再把App的hex文件粘贴到后面,中间不留空行。