1. 程式人生 > >關於HEX文件拼接(轉載)

關於HEX文件拼接(轉載)

文件合並 answer man 運行 all 復制 mes 轉載 加載

在用到單片機做工程的時候,為了升級方便需要進行遠程升級固件,我使用的是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開發板,程序運行正常。

關於HEX文件拼接(轉載)