我們使用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
+關注
關注
2266文章
10873瀏覽量
354845 -
IAP
+關注
關注
2文章
163瀏覽量
24251 -
代碼
+關注
關注
30文章
4751瀏覽量
68359
原文標題:IAP代碼與APP代碼合并燒錄示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論