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

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

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

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

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

介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因為我們重點(diǎn)介紹前三種。

Direct XIP(Execute In Place)模式

6ddf386e-2483-11ef-91d2-92fbcf53809c.png

MCUboot Direct XIP模式流程圖

接下來我們看第三種升級模式,Direct XIP(Execute In Place),跟前兩種模式Overwrite和Swap最大的不同在于,代碼是就地執(zhí)行的,即升級后的代碼直接在Secondary Slot中執(zhí)行。

上電后芯片中燒錄的是Bootloader和Primary Slot中User Application v1.0,運(yùn)行的過程中,芯片收到升級指令,接收新firmware并燒錄到Secondary Slot中,然后跳轉(zhuǎn)至Secondary Slot中執(zhí)行。

如果查看升級操作的起始狀態(tài)和結(jié)束狀態(tài)會發(fā)現(xiàn),芯片從運(yùn)行Primary Slot中的低版本v1.0代碼變?yōu)檫\(yùn)行Secondary Slot中的高版本v2.0代碼,因此完成了一次升級。

從Direct XIP模式的流程可以看出它的一些特點(diǎn):

支持代碼回滾/回退/降級。由于升級完成后,低版本v1.0 Image依然存儲在芯片中,因此若在高版本v2.0 上發(fā)現(xiàn)bug需要修復(fù),則有機(jī)會重新執(zhí)行升級程序使得代碼回到v1.0。

升級過程中不涉及對flash的擦除和寫入操作,因此Boot時間較短,是三種模式中時間最短的。

關(guān)于各種模式之間的更多細(xì)節(jié)比較,請參考下圖中的內(nèi)容:

6df8c07c-2483-11ef-91d2-92fbcf53809c.png

各升級模式特性比較

關(guān)于Secondary Slot的屬性,既可以是片上flash,也可以是外部flash。FSP對外部的支持為QSPI Flash,可以映射到地址總線上的存儲空間。假如利用外部flash如QSPI作為Secondary slot,則不支持Direct XIP模式。

另外,由于映像文件Image的傳輸途徑可能具有潛在風(fēng)險,又或者使用外部flash存儲新Image擔(dān)心被盜用,則推薦使用加密存儲的方式。假如使用加密存儲,則不支持Direct XIP模式。

前面提到了MCUboot可以實現(xiàn)安全boot,即判斷目標(biāo)Image的完整性和合法性,根據(jù)結(jié)果決定是否執(zhí)行固件升級操作,這個過程也可以叫做安全校驗。

安全校驗的設(shè)計可謂豐儉由人,整體的原則是,安全級別越高,帶來的代碼量增加越大,啟動時間越長。

MCUboot的安全校驗意味著,待更新的Image文件需要增加一些標(biāo)識,才能被bootloader識別,原始的文件無法通過安全校驗。

下面的圖展示了處理后的Application Image各部分信息

6e1587ca-2483-11ef-91d2-92fbcf53809c.png

利用Python腳本處理后的Application Image

MCUboot的安全校驗的實現(xiàn)方式包括:

增加Header,位于更新后的Bootloader和Application實際起始地址中間。其中包含了豐富的信息,比較關(guān)鍵的部分如Image的版本及大小。

增加TLV (Type Length Value),緊跟在Application之后。其中包含了Image文件對應(yīng)的HASH哈希值和對Image文件生成的簽名信息。

增加Trailer,位于Slot頂端,和TLV之間會填充固定數(shù)值。根據(jù)升級模式的不同,Trailer的格式和含義也不同,在此不展開。值得一提的是,對于Swap模式,Trailer中包含了Bootloader進(jìn)行升級時的判斷標(biāo)志,更多細(xì)節(jié)請參考MCUboot官網(wǎng)對于此部分的說明。

由于Bootloader占用了flash空間0地址開始的部分且大小幾乎不變,因此在設(shè)計的時候,需評估flash的空間劃分,使得Bootloader盡量小以讓出更多空間給Application利用。關(guān)于Bootloader優(yōu)化,我們不在本章中展開說明。

決定Bootloader大小的關(guān)鍵要素有以下幾個:

升級模式,Overwrite最小,Swap最大

安全校驗的級別,級別越高代碼量越大

對于Flash劃分,需要遵循的基本原則是,每個區(qū)域(Bootloader,Primary Slot和Secondary Slot)均占據(jù)完整的Block size,具體到RA產(chǎn)品,請在硬件手冊中確認(rèn)Block size的值。

以RA6M4 1M Code Flash產(chǎn)品為例,共有38個Block,其中低8個Block大小為8KB,高地址上的Block大小均為32KB。

6e311670-2483-11ef-91d2-92fbcf53809c.png

RA6M4 Flash Block地址信息

本章總結(jié)

本篇我們介紹了MCUboot的基本概念和設(shè)計的基本原則,后續(xù)的文章中,會針對每一種升級模式,做更詳細(xì)的說明。

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

    關(guān)注

    452

    文章

    50206

    瀏覽量

    420843
  • 燒錄
    +關(guān)注

    關(guān)注

    8

    文章

    252

    瀏覽量

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

    關(guān)注

    0

    文章

    34

    瀏覽量

    7100

原文標(biāo)題:MCUboot系列(1-2)簡介以及在RA FSP上的支持

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

收藏 人收藏

    評論

    相關(guān)推薦

    四種支持向量機(jī)用于函數(shù)擬合與模式識別的Matlab示例程序

    四種支持向量機(jī)用于函數(shù)擬合與模式識別的Matlab示例程序,內(nèi)容主要在個文件夾里面[hide] [/hide]
    發(fā)表于 03-13 15:46

    四種不同供電模式的LED拓?fù)?b class='flag-5'>介紹

    本文中,小編將為大家介紹四種在LED供電當(dāng)中經(jīng)常使用的四種拓?fù)浣Y(jié)構(gòu)。感興趣的朋友快來看一看吧。 首先需要從了解轉(zhuǎn)換器的最小及最大輸出電壓入手。這只是將所有LED正向壓降與傳感電阻器電壓相加的總數(shù)
    發(fā)表于 10-10 15:07

    STM32芯片GPIO的四種輸入模式四種輸出模式

    STM32芯片的GPIO一共有8配置模式,對8模式的理解如下1.四種輸入模式上拉輸入:在默認(rèn)
    發(fā)表于 05-21 07:55

    單片機(jī)四種輸入模式

    單片機(jī)四種輸入模式 MCU輸入模式有浮空、上拉、下拉、模擬輸入這四種模式,如果采用上拉或者下拉模式
    發(fā)表于 08-24 16:19

    變頻器主要支持四種模式

    變頻器主要支持四種模式:無PG的V/F模式,有PG的V/F模式,無PG的矢量控制模式,有PG的矢
    發(fā)表于 09-03 06:57

    介紹AUTOSAR支持四種功能安全機(jī)制

    1、AUTOSAR的四種功能安全機(jī)制雖然AUTOSAR不是一個完整的安全解決方案,但它提供了一些安全機(jī)制用于支持安全關(guān)鍵系統(tǒng)的開發(fā)。本文用于介紹AUTOSAR支持
    發(fā)表于 06-10 17:33

    二維碼的四種主要應(yīng)用模式

    本文介紹二維碼主要的四種應(yīng)用模式,包括讀取數(shù)據(jù)模式、解碼上網(wǎng)模式、解碼驗證模式、解碼通信
    發(fā)表于 01-25 11:52 ?3402次閱讀

    WIFI模塊四種工作模式介紹_WIFI模塊工作模式淺析

    WIFI模塊常見的四種工作模式:透傳模式、串口指令模式、HTTPD Client模式、GPIO模式
    發(fā)表于 01-19 14:45 ?2.8w次閱讀

    獲得 2 MHz 開關(guān)頻率的四種設(shè)計技巧

    獲得 2 MHz 開關(guān)頻率的四種設(shè)計技巧
    發(fā)表于 11-02 08:16 ?0次下載
    獲得 <b class='flag-5'>2</b> MHz 開關(guān)頻率的<b class='flag-5'>四種</b>設(shè)計技巧

    獲得2MHz開關(guān)頻率的四種設(shè)計技巧

    獲得2MHz開關(guān)頻率的四種設(shè)計技巧
    發(fā)表于 11-02 08:16 ?0次下載
    獲得<b class='flag-5'>2</b>MHz開關(guān)頻率的<b class='flag-5'>四種</b>設(shè)計技巧

    IEC 61851標(biāo)準(zhǔn)中的四種EV充電模式

    在本文中,我們將了解國際電工委員會 (IEC) 規(guī)定的不同 EV 充電模式。這些模式在處理電動汽車傳導(dǎo)充電系統(tǒng)的 IEC 61851 標(biāo)準(zhǔn)中指定。該標(biāo)準(zhǔn)描述了四種不同的充電模式,稱為
    的頭像 發(fā)表于 06-24 15:06 ?9525次閱讀
    IEC 61851標(biāo)準(zhǔn)中的<b class='flag-5'>四種</b>EV充電<b class='flag-5'>模式</b>

    GPIO的四種輸入模式介紹

    32位寄存器共同控制。 輸出和輸入都是針對芯片引腳來講的(即引腳的對外輸出,和外界對引腳的輸入)。 四種輸入模式介紹 輸入模式下可讀取端口的高低電平或電壓。例如各類傳感器(使用ADC功
    的頭像 發(fā)表于 11-09 16:51 ?6152次閱讀
    GPIO的<b class='flag-5'>四種</b>輸入<b class='flag-5'>模式</b><b class='flag-5'>介紹</b>

    淺析電子負(fù)載常見的的四種工作模式

    淺析電子負(fù)載常見的的四種工作模式 電子負(fù)載是電子設(shè)備的一,用于模擬負(fù)載并測試電源的性能。它在電子行業(yè)和電力領(lǐng)域有廣泛的應(yīng)用。電子負(fù)載常見的四種工作
    的頭像 發(fā)表于 01-22 13:43 ?2067次閱讀

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

    隨著嵌入式系統(tǒng)的發(fā)展,產(chǎn)品對于代碼升級功能的需求越來越大。通過代碼升級,可以實現(xiàn)諸如支持新功能,修復(fù)故障等目標(biāo)。
    的頭像 發(fā)表于 06-13 10:55 ?2112次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>MCUboot</b><b class='flag-5'>支持</b>的<b class='flag-5'>四種</b><b class='flag-5'>升級</b><b class='flag-5'>模式</b>(1)

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

    前面介紹MCUboot的基礎(chǔ)知識(請查看上方“簡介以及在RA FSP上的支持”文章),上次介紹了Overwrite模式(請查看上方“RA
    的頭像 發(fā)表于 06-13 16:01 ?656次閱讀
    <b class='flag-5'>MCUboot</b> Swap<b class='flag-5'>模式</b><b class='flag-5'>升級</b>的流程和注意事項