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

關於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開發板,程式執行正常。