OpenBLT Bootloader的使用分享
前言
分享的C語言的帖子大家似乎不太感興趣,那我們就拿起吃灰的板子來玩吧。。
前幾天在安富萊公眾號有了解到OpenBLT,今天我們就來實踐一下:
OpenBLT 簡介
OpenBLT是一種開源引導加載程序,可以在任何微控制器上運行并使用任何類型的通信接口來執(zhí)行軟件更新,而無需專用的調(diào)試器硬件。
官網(wǎng)介紹頁:
https://www.feaser.com/openblt/doku.php?id=homepage
源碼下載頁:
https://sourceforge.net/projects/openblt/files/
關于STM32的IAP、ISP、BootLoader相關的內(nèi)容見往期筆記:
OpenBLT實踐
下載源碼,得到:
我們拿個ARMCM0_STM32G0_Nucleo_G071RB_Keil來跑跑看:
1、首先,編譯OpenBLT BootLoader并使用ST-LINK下載OpenBLT BootLoader程序。OpenBLT BootLoader工程中我們需要可以關注如下信息:
boot程序的存放的flash的起始地址及最大size為8KB。實際占用為6.85kB:
所以這個size可以根據(jù)實際需要調(diào)整,稍微留出足夠余量給boot程序即可。剩下的全給app。
2、編譯APP demo程序。我們需要注意APP工程的如下信息:
APP的flash起始地址為0x8002800,下面使用MicroBoot工具下載app程序就是往這個地址寫入app程序。
該app程序默認編譯生成.axf后綴的調(diào)試文件,再經(jīng)過formelf工具生成對應的.srec后綴的文件,這個文件就是我們要下載到板子里運行的可執(zhí)行文件。這個后綴文件我們不經(jīng)??吹?。
.srec后綴的文件是一種FLASH格式的編程文件,是Motorola公司制定的一種燒寫格式標準。SREC文件是描述地址與數(shù)據(jù)的文件。
其內(nèi)容如:
(ps:關于hex文件、bin文件、axf文件的區(qū)別可移步至:《一文看懂hex文件、bin文件、axf文件的區(qū)別》)
3、使用openblt\Host路徑下的MicroBoot.exe工具下載.srec后綴的APP可執(zhí)行程序:
然后點Browser去openblt\Target\Demo\ARMCM0_STM32G0_Nucleo_G071RB_Keil\Prog\bin路徑下查找.srec后綴的文件,即可自動下載到板子里:
可以看到flash編程地址(下載地址)就是0x8002000地址。板子led閃爍,成功:
OpenBLT要點分析
無boot程序時,app程序存放于0x08000000,向量表也是位于這個地址。當存在有boot程序,我們的app程序在修改其起始地址的同時也要同步修改向量表地址。
第一種方法是修改SystemInit函數(shù):
第二種方法是修改.sct文件。demo使用的就是第二種方法:
所以,如果我們的boot程序過大,在調(diào)整boot程序的預留空間大小的同時也要同步修改app這邊的這些信息。
還需要注意的細節(jié)就是,boot程序的預留空間大小應為目標芯片扇區(qū)大小的整數(shù)倍,因為這是最小擦除單位。
如STM32G0系列的扇區(qū)大小為0x800(2 KB),boot程序的預留空間大小為0x2000(8KB),占4個扇區(qū)的大小。
以上就是本次的分享,感謝閱讀!如有錯誤,歡迎指出!
感興趣的朋友可以自己去動手實踐,關于OpenBLT BootLoader的帖子至今為止網(wǎng)上并不多見,需要靠大家一起多總結(jié)多分享出來、一同學習。
猜你喜歡
為了便于公眾號讀者交流學習,小編創(chuàng)建了相關相關交流群??游挥邢蓿信d趣的朋友可以掃碼下方二維碼加我微信,由我邀請入群:
歡迎大家進群交流、共同進步。同時,我也會關注一些大家問的一些問題,從中挑選一些具有代表性的、并且在我知識范圍內(nèi)的問題寫出相關文章做分享。
免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!





