单片机Bootloader与App的Hex文件手动合并方法

前言

对带有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的起始地址

发布了2 篇原创文章 · 获赞 2 · 访问量 19

猜你喜欢

转载自blog.csdn.net/weixin_47057981/article/details/105536533