• 資料介紹
    • 1、前言
    • 2、STM32H563 OEMiROT 的默認(rèn)行為
    • 3、修改成支持 SWAP
    • 4、小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

LAT1456 定制 OEMiROT 的 APP SWAP 功能

03/11 16:26
313
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

LAT1456 定制 OEMiROT 的 APP SWAP 功能

345.42 KB

1、前言

STM32 MCU 雙 Bank 功能有利于固件升級(jí)的實(shí)現(xiàn)。例如,新固件可以被寫入在未運(yùn)行的bank 中,而當(dāng)前 bank 仍然運(yùn)行舊固件;升級(jí)完成后,可以對(duì)新固件進(jìn)行試運(yùn)行,不合格則進(jìn)行回滾;合格的話則可以簡(jiǎn)單地切換到新固件,減少了系統(tǒng)的停機(jī)時(shí)間。那么,對(duì)于 Security 用戶,如果也使用雙 Bank 功能,會(huì)帶來一些問題,例如,入口地址發(fā)生變化,不符合安全啟動(dòng)的入口地址唯一化的原則;其次,雙 Bank 切換也要求對(duì)兩個(gè)Bank 進(jìn)行正確的同樣設(shè)置,否則,Bank 切換會(huì)導(dǎo)致 Security 漏洞;最后,OEMiROT 并沒有提供雙 Bank 切換的參考代碼。但是,即使是安全升級(jí),依然需要備份回滾的功能,例如,客戶希望,新固件寫入在未運(yùn)行的區(qū)域,而當(dāng)前的區(qū)域仍然運(yùn)行舊代碼;升級(jí)完成后,可以對(duì)新固件進(jìn)行試運(yùn)行,不合格則進(jìn)行回滾;合格則保留。

OEMiROT 是可以支持這樣的需求的。OEMiROT 的 SWAP 功能能夠?qū)π鹿碳M(jìn)行試運(yùn)行,當(dāng)用戶確認(rèn)后,系統(tǒng)默認(rèn)引導(dǎo)新程序,否則繼續(xù)使用舊固件。

2、STM32H563 OEMiROT 的默認(rèn)行為

OEMiROT 的默認(rèn)行為 Overwrite。也就是新的固件會(huì)覆蓋舊的固件。這個(gè)可以從OEMiROT_S_Code_Image.xml 或者 OEMiROT_NS_Code_Image.xml的內(nèi)容可以看出,例如,對(duì)于 OEMiROT_NS_Code_Image.xml 有以下配置。

3、修改成支持 SWAP

OEMiROT 基于 MCUBoot 開發(fā)了相應(yīng)的工具,能夠非常方便的進(jìn)行是否支持 SWAP 的功能。只需要注解掉位于STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIApplicationsROTOEMiROT_BootInc的 flash_layout.h 中的宏MCUBOOT_OVERWRITE_ONLY。

4、小結(jié)

我們可以看到,使用 STM32Cube 生態(tài)系統(tǒng)很容易根據(jù)客戶自己的升級(jí)需求對(duì) OEMiROT 的固件升級(jí)行為進(jìn)行定制,例如,采用默認(rèn)的覆蓋模式或者支持升級(jí)后確認(rèn)或者備份回滾的功能。

資料預(yù)覽

相關(guān)推薦