前言
对带有IAP的嵌入式软件,生产大批量加工时,研发需要提供Boot和App的合并Hex文件,这样才能加快生产进度。
Hex文件的简单说明
编译器编译出的HEX文件一般格式如下:
:020000040800F2 //烧录起始地址
:10000000C8BD0620D10100085D3B0008DD350008B1 //数据
:10001000593B0008C9040008CD6900080000000031 //数据
:100020000000000000000000000000000D49000872 //数据
… //数据
:0488D00000000000A4 //数据
:04000005080001BD31 //线性地址记录
:00000001FF //结束
Boot和App的Hex合并说明
1.把Boot的最后一行去掉,再把App的所有文件复制到Boot后即可。具体如下:
:020000040800F2 //boot起始地址
:10000000C8BD0620D10100085D3B0008DD350008B1 //Boot数据
:10001000593B0008C9040008CD6900080000000031 //Boot数据
:100020000000000000000000000000000D49000872 //Boot数据
…//Boot数据
:0488D00000000000A4 //Boot数据
:04000005080001BD31 //线性地址记录Boot
:020000040801F1//App起始地址
:1000000040BB0220A5EA0208E59301087F8A0308A5//APP数据
:10001000E7930108EB930108EF930108000000004B//APP数据
:10002000000000000000000000000000F3//APP数据
…//APP数据
:0C3B4000581698C821AC2D530800000056//APP数据
:04000005080101BD30//APP线性地址记录
:00000001FF//结束
2.多个app合并方法:如果有两个APP,把Boot的最后一行去掉,去掉App1的Hex文件最后一行,再把App1文件复制到Boot后,然后把App2所有文件复制到刚刚合并的文件中。
Hex格式详解参考
第一个字节 表示本行数据的长度;
第二、三字节表示本行数据的起始地址;
第四字节表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
‘00’ Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
‘01’ End of File Record:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
‘02’ Extended Segment Address Record:用来标识扩展段地址的记录
‘03’ Start Segment Address Record:开始段地址记录
‘04’ Extended Linear Address Record:用来标识扩展线性地址的记录
‘05’ Start Linear Address Record:开始线性地址记录
然后是数据,最后一个字节 为校验和。
校验和的算法为:计算校验和前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和
注意事项
1.合并文件时不要留有空格
2.注意Boot和App的起始地址