作者 | strongerHuang
微信公眾號 | 嵌入式專欄
現在很多產品都有IAP(BootLoader)和APP(應用程序),一般在量產的時候,需要把兩部分程序合在一起。
一般來說,通過編程(下載)工具就能實現程序拼接,以及hex/bin格式互轉。
下面結合STM32,以及對應的ST-LINK Utility、STM32CubeProg工具給大家簡單描述下:
-
IAP、APP程序拼接
-
hex、bin格式的互轉
1
理解bin、hex、axf
想要掌握程序IAP+APP程序拼接,需要理解程序文件hex、bin文件格式內容。
用一個表格來區(qū)分bin、hex和axf三者的關系:
bin
hex
axf
程序數據
程序數據
程序數據
地址、類型、校驗等標記信息
地址、類型、校驗等標記信息
調試信息
Bin文件
Bin文件就是一種沒有格式的程序文件,只是包含了程序數據。
Hex文件
Hex是由Intel制定的一種十六進制標準文件格式,是由編譯器轉換而成的一種用于下載帶處理器里面的文件。
Hex文件格式是由一行一行的十六進制數據組成,每行包含:開始、長度、數據、類型、校驗和等重要信息。
axf文件
axf文件是經過編譯器編譯之后,包含具有程序、調試等更多信息的一種文件。
對比MDK-ARM編譯后三個文件大小
Objects目錄下:
Demo.axf(236K)
Demo.hex(4K)
Bin目錄下:
Demo.bin(2K)
2
通過工具實現IAP+APP拼接
用于產品量產,燒錄的程序文件,一般是hex,或bin文件。
不管是hex文件,還是bin文件,我們都需要通過燒錄軟件 + 燒錄(編程)工具實現。
燒錄軟件針對不同MCU,一般有不同的燒錄軟件。
針對STM32,一般建議使用官方提供的STVP、ST-LINK Utility和STM32CubeProg 這三種編程軟件。
拼接說明 IAP 和 APP程序的起始地址是不同的,因此燒錄進芯片,是存儲在兩片區(qū)域的。
燒錄程序的時候,特別是燒錄bin文件(沒有地址)時,要注意設置好起始地址。hex文件有地址地址,不用自己設置地址。
讀取“合并”程序的時候,同樣要注意起始地址,還有讀取大小,保證讀取全部程序。
比如通過ST-LINK Utility讀取STM32程序:
通過STM32CubeProg讀取STM32程序:
再次提示:
-
燒錄bin文件時,設置好起始地址;
-
讀取時,設置起始地址,讀取大?。?/span>
-
保存可選擇hex,還是bin文件;
3
通過工具實現bin、hex格式轉換在某些情況下需要使用特定格式的文件,比如我們遠程升級,要求通過bin文件實現。
通過上面的介紹,其實你會發(fā)現,使用編程軟件ST-LINK Utility,或STM32CubeProg,就能直接另存為hex,或bin文件格式。ST-LINK Utility另存為:
STM32CubeProg另存為:
之前我有介紹在MDK-ARM中,直接轉換成bin文件的文章: Keil MDK利用 fromelf 實現axf 轉 bin 的方法
當然,這些方法是比較簡單,也比較使用的方法。bin和hex格式文件互相轉換的工具,網上有很多,感興趣的朋友可以搜索了解一下。
------------ END ------------
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!





