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