前段時間要寫一個BootLoader程式,想起來好像在STM32的HAL庫裡面看到過相關的Demo,打算參考一下。打開相關的目錄看了一下,确實是有相關檔案:
但是沒找到工程檔案。沒辦法,那就自己百度吧,關鍵詞OpenBootloader一搜尋,發現這不是ST原創的,是一個開源的項目。簡稱OpenBLT,是一種開源引導加載程式,可以在任何微控制器上運作,并使用支援Usart、Can、USB、SD卡等多種類型的通信接口來執行軟體更新。
官網位址:
https://www.feaser.com/openblt/doku.php?id=homepage
下載下傳位址:
https://sourceforge.net/projects/openblt/files/
百度網盤:
連結:https://pan.baidu.com/s/1ZZV7AxGna5cwH_EkIDjftA?pwd=cdq1
提取碼:cdq1
下載下傳下來後發現,裡面有很多種單片機的Demo程式,還有不同的IDE。
正好手上有個STM32G0的開發闆,拿來試一下。打開G071的Keil目錄,裡面有Boot程式和使用者程式Prog兩個工程。
首先将Boot 程式用仿真器下載下傳到開發闆中,打開配套的上位機軟體MicroBoot v2.05,這裡使用的是序列槽更新,設定好序列槽号和波特率。
點選Browse選擇編譯好的使用者程式,這裡是.srec格式的檔案,點選選擇後會直接下載下傳程式。如下:
由于使用者程式不大,下載下傳過程還是挺快的。而且Boot程式編譯後隻有7KB左右,也不大。該單片機沒有CAN、USB等接口,對于其它一些單片機,可以配置為通過其它接口方式更新程式。例程裡幾乎有STM32全系列的Demo,用起來很友善。想移植到其它單片機的可能需要自己研究一下了,主要是接口和flash擦寫部分程式。
這裡說明一下,.srec格式的檔案的生成方式跟bin檔案類似,在Keil中設定如下:
另外,使用者程式的Flash起始位址是通過.sct檔案配置的:
也可以在IDE裡配置,兩種方式都可以。