0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCUboot Swap模式升級的流程和注意事項

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 2024-06-13 16:01 ? 次閱讀

前面介紹了MCUboot的基礎知識(請查看上方“簡介以及在RA FSP上的支持”文章),上次介紹了Overwrite模式(請查看上方“RA Overwrite模式在FSP中的支持”文章),本次著重介紹其中的Swap模式,以及在FSP中如何配置,如Flash怎樣劃分、安全校驗的方式等。

本文以RA4M2 512K Code Flash產(chǎn)品為例,使用Flat mode(不啟用TrustZone)說明Swap模式進行升級時的注意事項。

首先回顧一下Swap模式升級的流程。

1cf2cfc2-293a-11ef-91d2-92fbcf53809c.png

MCUboot Swap模式圖解

從代碼框架來看,整體劃分為三部分,Bootloader,Primary Slot(保存了低版本的User Application v1.0)和Secondary Slot(保存了待更新的高版本User Application v2.0)。

初始狀態(tài)下,芯片中燒錄了Bootloader和Primary Slot,代碼從Bootloader處啟動,跳轉(zhuǎn)至Primary Slot中的User Application v1.0。在User Application v1.0運行過程中,接收來自外部的更高版本Firmware v2.0,并燒寫到Secondary Slot中,燒寫完成后,執(zhí)行軟件復位Software reset,代碼重新從Bootloader開始運行。此時Bootloader判斷Secondary Slot中有待更新的Image,檢查其完整性等,校驗通過后,將Secondary Slot中的內(nèi)容和Primary Slot中的內(nèi)容交換(利用Scratch area作為暫存區(qū)域)。然后跳轉(zhuǎn)到Primary Slot中執(zhí)行。比較升級操作的初始狀態(tài)和終止狀態(tài),發(fā)現(xiàn)Primary Slot中運行的代碼從低版本的v1.0變?yōu)楦甙姹镜膙2.0。

在e2 studio中進行開發(fā)時,Bootloader和User Application為相互獨立的Project,但位于同一個Workspace中。先Build Bootloader Project,然后Build位于Primary Slot的User Application Project,由于Bootloader規(guī)定了對于整個存儲空間的劃分,同時包含了對User Application Image進行簽名/驗簽所用的密鑰,因此Application Project會依據(jù)Bootloader build輸出的Bootloader Data File代替原有的Linker Script File(鏈接腳本文件)進行l(wèi)ink,并利用Bootloader包含的密鑰進行Image映像文件的處理。

1新建Bootloader并配置MCUboot參數(shù)

由于Bootloader是整個系統(tǒng)的關(guān)鍵,因此我們第一步創(chuàng)建Bootloader Project并配置一些關(guān)鍵選項如Flash Layout和加密算法等。

對于Bootloader Project,可以在e2 studio中新建并命名。在FSP的Stack選項卡下,點擊New Stack → Bootloader → MCUboot,即可將該功能添加進來。

1cfd730a-293a-11ef-91d2-92fbcf53809c.png

FSP中添加MCUboot

添加MCUboot之后,由于它依賴一些底層驅(qū)動,如Flash,Crypto等,因此會在初始界面提示錯誤,按照提示信息逐個修復即可,此處不詳細展開。

1d05850e-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot

注意,如需使用示例密鑰對Application Image進行處理,則需要添加MCUboot Example Keys。該Key僅供測試使用,量產(chǎn)時需進行替換。

1d15db7a-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot Example Keys配置

假如使用Crypto相關(guān)的driver,則參考下圖的配置修復相關(guān)error。

1d210536-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot下MbedTLS (Crypto Only)配置參考

將所有的錯誤修正后,配置MCUboot的關(guān)鍵屬性。

1d359d20-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot General屬性

展開Common選項下的General屬性,對于幾個可配置的關(guān)鍵選項,說明如下:

升級模式Upgrade Mode,可以從Overwrite,Swap和Direct XIP中選擇,此次選擇Swap。該選項是決定Bootloader大小的關(guān)鍵性因素,Overwrite模式最小,Swap模式最大。

Validate Primary Image,建議設定為Enabled,除非資源非常緊張,開啟這部分功能帶來的代碼量增加不過幾十字節(jié)而已。

Downgrade Prevention (Overwrite Only),由于該選項僅在Overwrite模式可選,因此設定為Disabled。

1d3fd59c-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot Signing and Encryption Options屬性

展開Common選項下的Signing and Encryption Options屬性,對于幾個可配置的關(guān)鍵選項,說明如下:

簽名類型Signature Type,規(guī)定了對于Application Image進行簽名所用的方式,可從None,ECDSA P-256,RSA 2048,RSA 3072四項中任選其一。假如使能簽名,則代碼量最小的是ECDSA P-256

Custom可以從--confirm和--pad兩者中任選其一

- 默認選項為--confirm,在對Image進行簽名操作時,會將該Image做標記,Bootloader判斷時會將Secondary Slot和Primary Slot交換。下次復位時,兩個Slot不會交換。

- 設定為--pad時,簽名操作會將Image的Trailer部分標記為“可考慮使用該Image升級”。將Image寫入Secondary Slot之后,Bootloader會先將Secondary Slot和Primary Slot進行交換,使得Secondary Slot中的Image得到一次執(zhí)行的機會。在執(zhí)行的過程中,假如調(diào)用了boot_set_confirmed()函數(shù),則下次復位后,不執(zhí)行Swap。假如在執(zhí)行的過程中,并沒有調(diào)用boot_set_confirmed()函數(shù),則下次復位后,繼續(xù)執(zhí)行Swap,代碼回到舊版本的Image。這是實現(xiàn)代碼回滾的一種方式,我們會在下一篇文章中做詳細介紹。

Encryption Scheme,根據(jù)對于Application Image是否加密進行設定。默認是Disabled,假如使能,則可以從ECIES-P256和RSA-OAEP (RSA 2048 only)中任選其一。Encryption Enabled情況下,Bootloader代碼量會明顯增加。

接下來配置Flash Layout

對于Flash Layout來說,由于升級模式已鎖定Swap,在此基礎上決定Bootloader的大小因素就只剩下校驗算法的選擇了。

由于Bootloader占據(jù)從0地址開始的空間,而RA4M2在低地址上的8個block大小均為8KB,因此我們先將Bootloader大小設定為64KB,即0x10000。Swap模式需要保留一個Block大?。?2K)的空間用于對兩個Slot內(nèi)容進行交換,因此還剩512 – 8*8 – 32 = 416KB。假如將這416KB等分,則208K無法被32K整除,因此只能等分Block 8~Block 19,Primary Slot和Secondary Slot各占6個Block (32KB)。

既然如此,我們索性把Bootloader設定為96KB(Block 0~8),即0x18000。Primary Slot占據(jù)6個Block (Block 9~14),Secondary Slot占據(jù)6個Block (Block 15~20),最高地址的Block 21作為Swap模式下的Scratch area。

1d525d7a-293a-11ef-91d2-92fbcf53809c.png

RA4M2 Code Flash地址空間

1d5c6e78-293a-11ef-91d2-92fbcf53809c.png

FSP中MCUboot Flash Layout設置

Bootloader Flash Area Size (Bytes):

設定為0x18000即可

Image 1 Header Size (Bytes):

前面的劃分Primary Slot和Secondary Slot包含Header,對于Cortex-M33內(nèi)核的產(chǎn)品,有中斷向量表對齊的要求,因此我們建議將Header size統(tǒng)一設定為0x200,以支持Application的所有中斷。

Image 1 Flash Area Size (Bytes):

根據(jù)前面的計算結(jié)果,填入0x30000(6個32K block)

Scratch Area用于暫存兩個Slot內(nèi)容交換時的最小單元,因此我們將Scratch Area大小設定為Block size 0x8000(32K)。

至此,對于Bootloader的配置已經(jīng)完成了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4696

    瀏覽量

    68083
  • FSP
    FSP
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    7091

原文標題:MCUboot系列(3-1)RA Swap模式在FSP中的支持

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPC流程和要注意事項簡介

    FPC流程和要注意事項簡介 做FPC有幾年了,自己也學習和總結(jié)了一些經(jīng)驗。想和大家交流下。先聊聊流程吧!
    發(fā)表于 03-17 10:15 ?5815次閱讀

    PCB的設計流程,有什么注意事項?

    使用PADS的印制板設計軟件PowerPCB進行印制板設計的流程和一些注意事項
    發(fā)表于 04-23 06:52

    硬件開發(fā)流程注意事項是什么

    硬件開發(fā)流程注意事項是什么
    發(fā)表于 04-27 06:15

    STM32低功耗模式有哪些注意事項?

    STM32低功耗模式有哪些注意事項
    發(fā)表于 11-23 06:17

    如何升級Recovery?有哪些注意事項

    如何升級Recovery?有哪些注意事項
    發(fā)表于 03-09 06:39

    FAQ0095事件喚醒Deepsleep模式注意事項

    事件喚醒Deepsleep模式注意事項
    發(fā)表于 10-23 07:05

    FAQ0133外設事件中斷響應流程注意事項

    外設事件中斷響應流程注意事項介紹一種保障回調(diào)任務可被精確響應的方法
    發(fā)表于 10-23 07:47

    膽機使用的注意事項

    膽機使用的注意事項:膽機使用的注意事項 我是初哥, 現(xiàn)在對膽機感興趣, 但聽說膽機使用麻煩, 請問有什么需要注意的?湖南吉首火車站 范增不必擔心, 膽機的使用方法
    發(fā)表于 11-29 17:09 ?46次下載

    TCL各機芯軟件升級操作步驟及注意事項

    TCL各機芯軟件升級操作步驟及注意事項
    發(fā)表于 09-06 15:02 ?18次下載

    工業(yè)機器人電器系統(tǒng)注意事項

    工業(yè)機器人電器系統(tǒng)注意事項:系統(tǒng)設計流程
    發(fā)表于 02-25 18:11 ?1次下載

    LED照明產(chǎn)品認證流程注意事項

    LED照明產(chǎn)品認證流程注意事項
    發(fā)表于 09-14 08:34 ?7次下載

    COFT控制模式的Buck LED驅(qū)動芯片中 COFF的配置和注意事項

    COFT控制模式的Buck LED驅(qū)動芯片中 COFF的配置和注意事項
    發(fā)表于 10-28 11:59 ?0次下載
    COFT控制<b class='flag-5'>模式</b>的Buck LED驅(qū)動芯片中 COFF的配置和<b class='flag-5'>注意事項</b>

    使用注意事項

    使用注意事項
    發(fā)表于 03-17 20:14 ?1次下載
    使用<b class='flag-5'>注意事項</b>

    使用注意事項

    使用注意事項
    發(fā)表于 07-07 19:04 ?0次下載
    使用<b class='flag-5'>注意事項</b>

    介紹MCUboot支持的四種升級模式(2)

    介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因為我們重點介紹前三種
    的頭像 發(fā)表于 06-13 10:56 ?666次閱讀
    介紹<b class='flag-5'>MCUboot</b>支持的四種<b class='flag-5'>升級</b><b class='flag-5'>模式</b>(2)