STM32 hex合併及一鍵燒寫

有時候我們程序需要遠程升級,這時候就需要一段 IAP 程序和一段 APP 程序,IAP 負責引導檢測升級,APP 負責實現業務邏輯,如果每次都手動打開程序下載,則很麻煩,特別時需要大量出貨的時候,每個都需要下載兩次,而使用 JFlash 再配合批處理腳本的話就可以直接雙擊一個腳本搞定所有事情。附件的話可以直接加我 QQ 無償分享,CSDN 需要積分,我也會上傳。

參考文檔爲 jlink 驅動安裝目錄:\SEGGER\JLink_V644\Doc\Manuals\UM08003_JFlash.pdf,裏面可以找到下面腳本中用到的關於燒寫的所有命令的用法及含義,其它關於 .bat 腳本的我也只會一點,因爲不需要深入研究便可完成。

下面是我自己根據需求用批處理實現的一鍵燒寫腳本,可在 windows 直接運行(需要管理員權限),因爲我的工程包含兩個 .hex 文件,一個爲引導程序,一個爲應用程序

@ECHO OFF
ECHO Open a project and data file, start auto processing and exit
ECHO. %換行%
TOOL\JFlash.exe -openprjTOOL\jlinkCfgFile.jflash -openHEX\iap.hex,0x08000000 -mergeHEX\app.hex,0x08008000 -saveasHEX\iap_app.hex -auto -startapp -exit
IF ERRORLEVEL 1 goto ERROR
goto END
:ERROR
ECHO J-Flash ARM:  Error!
pause
:END

直接將這段內容複製到 .txt 文本文件中,然後將文件後綴改爲 .bat 就可以雙擊運行了

其中第四行就是關於 JFlash 燒寫的部分,首先指定使用的工具,然後 -openprj 打開 jflash 工程(自己打開 JFlash 軟件創建一個保存就行了), -open 打開所需要燒寫的 .hex 文件,英文逗號後面緊跟着的是要下載到芯片 flash 地址的起始地址,注意 IAP 程序和 APP 程序下載的地址是不一樣的,而且要注意文件的大小,不能出現覆蓋的問題,-merge 爲追加的意思,也就是合併文件,然後我將合併後的文件另存爲一個新的 .hex 文件,這只是爲了在個別下載不了的情況下使用的,-auto 會完成擦除,燒寫,校驗三個操作,-startapp 會在下載完成後自動運行程序,-exit 在下載完成後退出 JFlash 軟件,如果下載出錯的話頁面會報錯並且不會自動退出,下載成功則不會有任何提示直接退出。

上面的工作做好後,就需要準備所需要的文件了,下面是我截圖的所需要的文件

其中 HEX 文件夾,用於存放需要燒寫的 .hex 文件,如下(iap_app.hex 時運行腳本自動生成的)

TOOL 文件夾用於存放JFlash 軟件運行需要的文件及芯片描述文件,這些都可以在 jlink 驅動安裝目錄找到,jlinkCfgFile.jflash 是我自己根據芯片及需求保存的 jflash 工程,這個得根據自己芯片不同來重新創建並保存到此目錄,注意文件名和路徑,如果不和這個一樣,則需要修改腳本

TOOL\ETC 目錄猜測是跟芯片 flash 內存描述有關的東西

這些東西都備齊後,一個一鍵燒寫就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章