在用到单片机做工程的时候,为了升级方便需要进行远程升级固件,我使用的是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开发板,程序运行正常。