2020年3月3日星期二

[STM32] M0 系列的 IAP 程式跳轉-2

在前面一篇介紹(M0 系列的 IAP 程式跳轉-1)我們已經完成 IAP 和 主程式 2 個 Project,在還沒完成 IAP 下載功能前是否可以先驗證 ? 答案是可以的。

首先,要將前面產出的 hex 檔案 轉換成 bin 檔案。在 compile 時可以直接設定 bin 產出,我這裡是使用 gcc compiler 所以我這裡在 Post-build steps 項目中需要設定

arm-none-eabi-objcopy -S -O binary "${ProjName}.elf" "${ProjName}.bin"
就會自動產出 bin 檔案。

OK,現在需要一個 Hex editor 工具軟體 (網址: https://mh-nexus.de/en/)。下載並安裝完成後,我們先開啟 IAP 的 bin 檔案。

在 File / Open... 載入 bin 檔案,並將拉到最後。我們要找最後位址點

STM32 IAP

以這張截圖來說就是 20 後面,在 Offset 顯示 1CE8。因為前面設定 SRAM 的位置是 0h ~ 3FFFh ,所以兩值要相減就會得到填滿的數值。以這裡會得到 2318。

在 Edit / Insert bytes , 這樣就可以填滿到 3FFFh。另存新名稱 IAPBoot.bin。

STM32 IAP

這時候可以關掉 Hex Editor 軟體。而主程式名稱改成 mainAP.bin
接下來 開啟 cmd 命令列視窗。下二條指令

copy IAPBoot.bin APALL.bin
type mainAP.bin >> APALL.bin

意思是 新增一個 APALL.bin , 然後緊接著 mainAP.bin 主程式。 這樣就完成了
再透過 ST-LINK 將 APALL.bin 作為燒錄檔案,來驗證是否會跳到主程式段。


0 comments:

發佈留言