接下來(lái)我們需要在hal_entry.c中增加對(duì)函數(shù)mcuboot_quick_setup()的調(diào)用。在e2 studio界面下,Project Explorer中找到Developer Assistance找到Call Quick Setup,鼠標(biāo)左鍵點(diǎn)選,保持左鍵按下的狀態(tài),拖動(dòng)到hal_entry.c文件的hal_entry()函數(shù)定義之前。

利用Developer Assistant向源碼中增加mcuboot_quick_setup定義
然后在hal_entry()入口處增加對(duì)函數(shù)mcuboot_quick_setup的調(diào)用。

在hal_entry()入口處增加調(diào)用mcuboot_quick_setup
Build Project可以順利完成,提示“0 errors, 0 warnings”。在Debug文件夾下確認(rèn)包含同名的***.bld文件,用文本編輯器打開(kāi),檢查內(nèi)容。

Bootloader Project Build生成的.bld文件
.bld文件是XML格式的,主要包含兩部分:
第一部分是symbol,主要是Bootloader對(duì)Flash Layout的設(shè)定,F(xiàn)LASH_IMAGE_START值為0x00018200,即位于Primary Slot的Application Project實(shí)際Link(鏈接)地址。FLASH_IMAGE_LENGTH值為0x0002FE00,即Primary Slot大小(0x30000)減掉Header Size(0x200)。
第二部分是對(duì)Application Image進(jìn)行簽名所用到的Python命令,該命令的輸入是Application Project Build生成的原始Binary(二進(jìn)制)文件,輸出是同名的簽名后的文件,后綴是.bin.signed。同時(shí)傳入的參數(shù)還有文件版本,簽名所用的密鑰等。由于RA4M2搭載了支持TrustZone的Cortex-M33內(nèi)核,因此文件的結(jié)構(gòu)包含了對(duì)TrustZone的支持。對(duì)于不啟用TrustZone的應(yīng)用場(chǎng)景,我們僅需關(guān)注Python命令的第一部分。
2將Application Project和Bootloader關(guān)聯(lián)起來(lái)
接下來(lái),我們要利用該Bootloader調(diào)試目標(biāo)Application Project,如何才能將Bootloader和Application關(guān)聯(lián)起來(lái)呢?就需要借助剛才提到的Bootloader Project Build所生成的***.bld文件。
除了新建Project,也可以將任意一個(gè)現(xiàn)有的Project跟Bootloader關(guān)聯(lián)起來(lái),此時(shí),該P(yáng)roject編譯的地址為Primary Slot起始地址加上Header大小。
Application Project會(huì)利用.bld中的內(nèi)容替代原始的鏈接腳本文件(linker script file)。編譯的起始地址來(lái)自標(biāo)號(hào)FLASH_IMAGE_START,圖中的值為0x00018200,可以看到,Header大小0x200已經(jīng)包含進(jìn)來(lái)。
另外,由于需要使用Python對(duì)Application Image進(jìn)行處理,因此需要在本地安裝Python以及相關(guān)插件的支持。該操作僅需執(zhí)行一次。
具體的步驟如下,在Project Tree界面下找到ramcu-toolsMCUbootscripts,鼠標(biāo)點(diǎn)擊右鍵,Command Window,則會(huì)在打開(kāi)命令行界面,并進(jìn)入scripts文件夾。鍵入如下命令,安裝Python所需的lib。
pip3 install --user -r scripts/requirements.txt

Python安裝所需Lib的提示信息
Python命令中包含e2 studio中的Placeholder,針對(duì)某個(gè)具體的Project,在執(zhí)行的時(shí)候會(huì)解析為Workspace下的Project路徑以及Project名稱。
通過(guò)環(huán)境變量將Application Project關(guān)聯(lián)起來(lái)
打開(kāi)Application Project的屬性界面,在C/C++ Build → Build Variables下添加.bld文件。

添加.bld文件到Application Project的Build Variables
同時(shí),對(duì)Application Project Image進(jìn)行簽名操作所需的公鑰放在Bootloader中,因此也需要將該文件鏈接到Application Project中,具體的實(shí)現(xiàn)方式如下:

添加Public Key for Sign
注意,此時(shí)Public Key for Sign依然位于Bootloader Project所在路徑,該配置只是引入該文件的地址,使得在Application Project中調(diào)用Python腳本對(duì)Image進(jìn)行簽名操作時(shí)找到該P(yáng)ublic Key。
另外,Image文件的版本信息可以通過(guò)添加Environment variable實(shí)現(xiàn),配置方式如下:

將Image版本號(hào)添加到Environment variable
最終生成的版本信息會(huì)以4字節(jié)添加到Header中。
為保證每次Environment variables有變化或者Bootloader生成的***.bld發(fā)生改變時(shí),Application Project都可以重新編譯,需在Pre-build中增加以下內(nèi)容:
rm -f ${ProjName}.elf

Pre-build step添加刪除***.elf的操作
完成了以上的所有基礎(chǔ)配置后,可以編譯Application Project。在Console界面查看Build Log,可以發(fā)現(xiàn)編譯完成后,增加了對(duì)Image文件的處理。

對(duì)Image簽名操作對(duì)應(yīng)的Python內(nèi)容
此時(shí)生成的***.bin.signed文件包含了Header,TLV和Trailer等內(nèi)容,可以被Bootloader識(shí)別并運(yùn)行。利用工具打開(kāi)該文件,可以發(fā)現(xiàn)它不同于原始的Application Image文件:

.bin.signed文件結(jié)構(gòu)
開(kāi)始的0x200字節(jié)是Header信息,在e2 studio中通過(guò)Environment variable傳入的版本信息1.0.0在0x14地址偏移上。關(guān)于其他部分的細(xì)節(jié),感興趣的朋友可自行查閱。
Application Image開(kāi)始的0x200處,第二個(gè)4字節(jié)即當(dāng)前的中斷向量表起始地址,可以看到是小端格式的0x00018ab9,在Primary Slot地址空間(0x00018000~0x87FFF)內(nèi)。
未完待續(xù)
-
SWAP
+關(guān)注
關(guān)注
0文章
52瀏覽量
13703 -
源碼
+關(guān)注
關(guān)注
8文章
687瀏覽量
31397 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4419瀏覽量
67706 -
FSP
+關(guān)注
關(guān)注
0文章
48瀏覽量
7775
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA2L1 MCU e2 studio和FSP的使用指南
RA MCU眾測(cè)寶典 | 在RA MCU上快速部署LWIP——以CPKCOR-RA8D1為例
RA系列使用FSP配置外設(shè)驅(qū)動(dòng)相關(guān)資料介紹
使用RA2E1 MCU和FSP實(shí)現(xiàn)超低設(shè)計(jì)
【視頻教程】瑞薩RA單片機(jī)FSP開(kāi)發(fā)(3)FSP架構(gòu)-解釋Blinky架構(gòu)[上]
RA Overwrite模式在FSP中的支持
MCUboot Swap模式升級(jí)的流程和注意事項(xiàng)
RA Swap模式在FSP中的支持(2)
瑞薩FSP6.2:RA8新品支持與功能大升級(jí)!
RA Swap模式在FSP中的支持(1)
評(píng)論