关于HEX文件拼接(转载)

    在用到单片机做工程的时候,为了升级方便需要进行远程升级固件,我使用的是STM32单片机,这个时候就要使用到hex文件的拼接;我们远程更新方法来自于安卓等系统的烧录思路,先烧录一个boot程序,再烧录一个app程序,他们都存在于单片机的代码FLASH里面,boot程序一般是一个很小的程序运行在FLASH的首地址,APP程序分布在剩余的FLASH里面,按照这个理论FLASH可以保存多个APP程序.boot程序会指定跳转到哪里运行.升级固件要烧录两个HEX文件这样给调试和固化带来麻烦,好在万能的网友是有大智慧的给出了拼接HEX的方法,节约了我们的时间.大体思路是删除第一个hex文件的尾巴,将第二个hex文件的头删除复制到第一个hex文件后面就可以了.如下转载的方法,测试是可行的.

 

 

Question

由于分散加载文件设置的原因,工程生成的hex文件被分成两部分,一般情况下使用Flash Magic需要分别下载两次,但这样比较麻烦、效率低下,能否将两个文件合并,只下载一次?

 

Answer

本文只介绍如何将hex文件合并的问题:

以附件的两个hex文件为例,该程序运行在EasyARM2131开发板上,通过串口向外发送数据。

ROM_EXEC1文件的格式如下(可以使用记事本打开查看):

:020000040000FA                                    文件头记录

:1000000018F09FE518F09FE518F09FE518F09FE5C0      程序区开始

……

……(中间的省略)

……

:080690002C2100000000000015                        程序区结束

:00000001FF                                        文件结束(EOF)记录

 

ROM_EXEC2文件的格式和ROM_EXEC1类似。

用记事本新建一个文本文件,命名为new.hex,将ROM_EXEC1的内容全部复制到新文件,复制ROM_EXEC2文件的程序区(除了第一行与最后一行外)并将其插入最后一行之前,之后保存文件即可。

将新的hex文件下载到EasyARM2131开发板,程序运行正常。

posted @ 2018-12-01 10:58  努力的人会幸运  阅读(1370)  评论(0编辑  收藏  举报