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