我們使用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
+關注
關注
2309文章
11162瀏覽量
373471 -
IAP
+關注
關注
2文章
169瀏覽量
26063 -
代碼
+關注
關注
30文章
4968瀏覽量
73984
原文標題:IAP代碼與APP代碼合并燒錄示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
IC燒錄總是出錯?可能是燒錄座不匹配
如何正確配置AG32 MCU,實現FLASH或者代碼加密?
芯片編程器使用指南:如何避免芯片燒錄過程中的常見錯誤
芯片燒錄原理是什么?一文讀懂芯片程序燒錄全過程
如何給Gokit3燒錄程序(MCU+FlyMcu版)
快速上手!帶你用LVGL工具完成樂鑫科技ESP32-S3 2.8寸串口屏UI開發!代碼完全開源!
ota升級完成后,bootloader沒有將download區的新代碼搬運到app區?
STM32+esp8266連接機智云,上傳溫濕度數據并控制繼電器開關(平臺配置、代碼生成、代碼移植)
AT32 IAP using the USART
機智云配網教程 第二期:生成MCU代碼包與調試
HarmonyOS 代碼工坊的指尖開發,讓 APP 開發所見即所得
IAP代碼和APP代碼合并燒錄過程示范
評論