我們使用STM32芯片開發產品時,有時需要自帶升級功能。因此,開發時除了需要準備基本的應用代碼外,還得準備一套升級代碼。通常稱前者為IAP代碼或BOOT代碼,后者稱之為APP代碼。一般來講,這兩套代碼基于兩個工程完成并生成相應的執行文件,首次燒錄時往往希望兩套代碼合并在一起進行燒錄,這樣方便、省事。
這里就該需求,利用ST提供的工具軟件STLINKUtility來示范下合并過程。
因為只是模擬兩個不同地址區的文件合并,所以這里的兩個工程代碼幾乎一樣,也很簡單,只是存放的地址空間不同。
我使用的開發板是STM32L476RGNucleo板。代碼功能都是接受按鍵,每收到1次按鍵動作,就打印出目前所在工作區。當收到3次按鍵后則從當前工作區跳往另一工作區。
兩個工程的內存及中斷矢量安排如下兩幅圖:
除了上面的配置差異外,兩個工程的代碼幾乎一樣,只是輸出提示有別。
這里使用的是IAR IDE環境,基于上面兩個工程分別生成IAP.HEX和APP.HEX兩個執行文件。
然后打開STLINKUtility工具,連接開發板,將芯片擦除干凈。接著,開始燒錄,先燒IAP.hex文件。【其實先燒錄誰無所謂】
之后,將當前IAP.HEX文件關閉,再調APP.hex文件進行燒錄。注意這次燒錄時選擇跳過FLASH的擦除操作,因為剛開始已經全擦,而且前面已經寫了IAP代碼。
到此,兩個工程的代碼都寫進芯片了。
現在,先在VIEW菜單里點擊下Device Memory,然后在File菜單里選擇文件另存操作。你選擇HEX或BIN格式都可以。
使用BIN格式的話注意燒錄時給出正確的起始地址。這個另存出來的文件就是合并過的文件了,可以直接拿來燒錄。
下面是我基于合并文件燒錄的測試結果。跟實際預期效果一樣,每按鍵1次做1次輸出,3次后跳轉,這樣往返操作。
操作很簡單,也很方便。之前偶爾也會有人問起這個話題。這次整理本文做驗證時,結果在做合并時總是失敗。因為之前有驗證過,堅信這個操作是可行的。后來懷疑可能是我電腦系統方面的原因,換成家里那臺電腦測試起來就很順暢,來回驗證多次都正常。看來,我那臺電腦該重裝或換掉了。
原文標題:IAP代碼與APP代碼合并燒錄示例
文章出處:【微信公眾號:ST MCU 信息交流】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
STM32
+關注
關注
2295文章
11032瀏覽量
365223 -
IAP
+關注
關注
2文章
165瀏覽量
25066 -
代碼
+關注
關注
30文章
4900瀏覽量
70797
原文標題:IAP代碼與APP代碼合并燒錄示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
AT32 IAP using the USART
機智云配網教程 第二期:生成MCU代碼包與調試

HarmonyOS 代碼工坊的指尖開發,讓 APP 開發所見即所得

程序燒錄原理
使用PE micro通過s32 design studio刷寫代碼時遇到的問題求解決
用STM32Cubeprogrammer燒錄TrustZone的示范程序不成功怎么解決?
源代碼加密、源代碼防泄漏c/c++與git服務器開發環境

代碼整潔之道-大師眼中的整潔代碼是什么樣

評論