介紹
考慮到瑞薩的MCUBoot的ROM占用和某些客戶的需求,本篇主要講述在不使用瑞薩MCUboot驅(qū)動下,如何實(shí)現(xiàn)簡單的bootloader功能。
主要內(nèi)容
在寫代碼之前,首先必須規(guī)劃Boot和App的存放位置,如下圖。我使用的是R7FA2L1AB2DFM,有256K的ROM。我把Boot從0x00開始存儲,預(yù)計(jì)存儲7K左右;App從0x4000開始存儲。為了在仿真時(shí)區(qū)分Boot和App,這里選擇了點(diǎn)亮LED的方式來區(qū)分,當(dāng)只亮一個(gè)LED時(shí)表示當(dāng)前是Boot在運(yùn)行,當(dāng)兩個(gè)LED交替閃爍時(shí)代表App在運(yùn)行。

BOOT工程:
1創(chuàng)建一個(gè)boot工程,添加UART和Flash驅(qū)動,F(xiàn)lash驅(qū)動只選Code Flash Programming,選擇只亮一個(gè)LED燈來區(qū)別BOOT和APP。


2編寫代碼,實(shí)現(xiàn)串口接收串口助手發(fā)來的APP.bin

3當(dāng)串口接收完后,用Flash驅(qū)動把接收到的數(shù)據(jù)寫到APP存儲的rom地址。這里我選擇把APP存在0x4000

4調(diào)用下圖函數(shù),實(shí)現(xiàn)APP跳轉(zhuǎn)。注意,跳轉(zhuǎn)前先把所有運(yùn)行的驅(qū)動關(guān)閉。


5編譯,可對比得出,精簡版bootloader只是用了7K左右的rom,比使用了MCUboot后的ROM占用少5K。


APP工程:
1實(shí)現(xiàn)APP的功能邏輯代碼,這里我選擇是使用GPT定時(shí)器,讓開發(fā)板的兩個(gè)LED燈交替閃爍。

2通過文本打開fsp.ld文件,添加紅框位置的語句,地址與BOOT工程的跳轉(zhuǎn)地址對應(yīng)。這個(gè)步驟的目的是為了讓APP工程以0x4000這個(gè)地址作為起始地址,它的向量表也會以這個(gè)地址作為基準(zhǔn)來存儲。

3編譯并生成bin文件。

仿真調(diào)試:
仿真BOOT工程,在PC端用串口助手燒錄APP.bin,可以看到開發(fā)板從一開始只亮一個(gè)LED到兩個(gè)LED交替閃爍。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
147文章
18605瀏覽量
387045 -
ROM
+關(guān)注
關(guān)注
4文章
578瀏覽量
88546 -
bootloader
+關(guān)注
關(guān)注
2文章
241瀏覽量
47676
發(fā)布評論請先 登錄
如何去實(shí)現(xiàn)基于STM32L0的簡單Bootloader呢
如何在STM32F103C8上實(shí)現(xiàn)一個(gè)簡單的bootloader?
如何在STM32F103C8上實(shí)現(xiàn)一個(gè)簡單的bootloader
研究下stm32基于BootLoader的IAP功能
4510 bootloader的實(shí)現(xiàn)與分析
Stellaris BootLoader分析
BootLoader_BootLoader是什么
ARM Bootloader 的實(shí)現(xiàn)C 和 ASM 混合編程
STM32系統(tǒng)bootloader的應(yīng)用有哪些
【MCU】BootLoader的簡單介紹
幾種MCU bootLoader的實(shí)現(xiàn)方案
在STM32F103C8上實(shí)現(xiàn)一個(gè)簡單的bootloader
STM32H7實(shí)現(xiàn)BootLoader內(nèi)SDRAM的初始化注意事項(xiàng)
mm32-2nd-bootloader技術(shù)進(jìn)階設(shè)計(jì):實(shí)現(xiàn)Ymodem更新代碼

如何實(shí)現(xiàn)簡單的bootloader功能
評論