因為在使用RT-Thread RTOS的時候發現官方提出了一種通用的BootLoader方案,支持F1和F4系列的芯片,正好手頭有板子便試著用了下,順便給大家分享一下經驗總結吧。
硬件資源
正點原子stm32f407zgt6探索者開發板,片上Flash(ROM)大小為1024KB,RAM大小為192KB,板載一個SPI Flash W25Q128。
BootLoader配置
根據官方文檔:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/,(因為微信無法插入外部鏈接,請復制至外部瀏覽器打開)BootLoader的基本配置如下,加密壓縮的配置可以不選。
上述的分區表以及bootloader所占空間可以用下面的圖表示,偏移地址的概念為從0x08000000開始偏移。flash空間的前128KB用來存放Bootloader固件,因此排在BootLoader之下的download分區的起始地址為0x08020000。
生成Bootloader固件,固件會自動發送到自己的郵箱。
燒錄Bootloader
將得到的Bootloader固件通過STM32 ST-LINK Utility.exe 燒錄到片上flash。要注意的是,燒錄的起始地址為0x0800000。
燒錄完成后串口工具會輸出一下信息:
要注意的是,其中的NJUST字樣是自定義的,可以在bootloader生成的頁面自行定義。兩個CRC32的error信息可以忽略,因為此時的flash中并沒有包含分區表,分區表信息需要我們通過燒錄app程序完成初始化配置。
FAL分區表中的onchip_flash為片上flash空間,起始地址為0x08020000,扇區大小為128KB。
燒錄app程序和打包
參考官方文檔:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/(因為微信無法插入外部鏈接,請復制至外部瀏覽器打開)
燒錄出廠固件
出廠固件的keil編譯相關設置同app程序一樣,中斷向量表偏移地址也是一樣的。在制作出廠固件app_factory時,需要將keil生成的bin用ota打包器進行打包,打包器的固件分區名為app,固件版本為1.0.0,然后將打包生成的app_factory.rbl改后綴名為app_factory.bin,最后使用st-link-utility將修改后綴名的app_factory.bin燒錄到Flash的0x08060000地址即可。要注意,不可以直接把keil編譯的bin文件直接下載到factory分區,因為此時的bin并沒有app的頭信息,這個頭信息需要由OTA打包器打包后才能添加。
恢復出場固件的方法:按住WK_UP按鍵的同時按下復位按鍵,保持WK_UP按鍵處于按下狀態10秒,即可進入恢復狀態。
-
STM32
+關注
關注
2266文章
10873瀏覽量
354853 -
RTOS
+關注
關注
22文章
809瀏覽量
119441 -
bootloader
+關注
關注
2文章
234瀏覽量
45550 -
STM32F407
+關注
關注
15文章
187瀏覽量
29376
原文標題:基于STM32F407的STM32通用BootLoader使用經驗
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論