國產(chǎn)車(chē)規MCU OTA方案總結
今天沒(méi)有廢話(huà),啪一下很快,把目前接觸到的國內帶eFlash的車(chē)規MCU硬件OTA方案做一個(gè)梳理。
本文引用地址:http://dyxdggzs.com/article/202503/468597.htm1. 旗芯微FC4150 OTA
旗芯微FC4150是基于A(yíng)RM Cortex(快去審核下官網(wǎng)介紹,少了個(gè)T)-M4F內核的車(chē)規MCU,ASIL-B功能安全等級,內置HSM,支持國際、國家密碼標準,基本框架如下:
注意這個(gè)96 KB Rom,這大小很有意思,它把Flash Driver存放到里面,天然就具備了RWW屬性,針對單bank來(lái)說(shuō),當我們要擦PFlash時(shí),省卻了copy driver到ram這一步,這也看到了他們對于自己芯片和代碼非常自信。
由于其主頻、Memory容量、功能安全等級的限制,主要面向車(chē)身相關(guān)應用,例如車(chē)窗、座椅、車(chē)門(mén)等等。
該產(chǎn)品系列支持P-Flash分別為2M、1M、1Msuperfit、512K,有意思的是僅1Msuperfit、512K支持OTA功能,容量高一點(diǎn)如2M反而還不支持OTA,不知道是不是和最初flash ip選型有關(guān)。
FC4150F512 支持雙bank swap功能,當開(kāi)啟該功能后,硬件OTA控制器支持 2x256KB Flash,每個(gè)Bank包含256個(gè)Sector。
相較于英飛凌整個(gè)Bank的AB切換,FC4150的OTA Flash地址是可以進(jìn)行配置,顆粒度為8K,與之相關(guān)的配置項為:OTA_EN, OTA_START_ADDR, OTA_END_ADDR, OTA_VER_LOC。
當然,配置方法和大廠(chǎng)車(chē)規MCU的UCB、OptionByte、DCM差不多,只是換了個(gè)說(shuō)法叫NVR。
上電后,FMC會(huì )把上述配置信息讀取到內部對應寄存器里,總結如下:
在使用上有個(gè)點(diǎn)需要注意在OTA_CTRL里面,需要設置OTA Active Bank,它是依據OTA_VER_LOC里定義地址存放的版本信息來(lái)進(jìn)行對比,
當OTA_CTRL.OTA_ACTIVE = 0,PFlash0 為Active Bank;
當OTA_CTRL.OTA_ACTIVE = 1,PFlash1為Active Bank。
示意如下:
OTA的區域是根據OTA_Start address、End Address進(jìn)行配置,那這是否可以認為假設PF0只配置128K用于OTA,那么PFlash0、1后面的128KB是可以使用的,這就變成了局部OTA,示意如下:
這么一看,確實(shí)吸納了很多前人的經(jīng)驗。
2. 云途YTM32B1MD OTA
YTM32B1MD是一款功能安全ASIL B的車(chē)規MCU,使用ARM Cortex-M33內核,最高主頻120MHz,PFlash 共512KB,分為2*256KB兩個(gè)Bank,支持RWW屬性,因此也支持OTA。
在該片子里使用EFM(Embedded Flash Module)來(lái)管理AB SWAP,通過(guò)設置EFM CMD寄存器中 指令Boot Swap來(lái)進(jìn)行切換;切換后需要進(jìn)行系統復位后才有效,可以用過(guò)EFM STS.BOOT_INFO狀態(tài)來(lái)進(jìn)行判斷當前處于哪個(gè)Bank,邏輯如下:
3.小結
目前看起來(lái),最近幾年新出的國產(chǎn)MCU普遍都會(huì )把AB Swap硬件特性作為一個(gè)需求進(jìn)行實(shí)現,為汽車(chē)ECU軟件升級和回滾機制做準備,從原理上看起來(lái)是比較清晰的,設計和使用起來(lái)也比較方便,就是不確定容不容易鎖板子。
不過(guò)在這種AB Swap在功能安全和信息安全上的設計,我并沒(méi)有看到國產(chǎn)MCU在這方面的考慮,從0到1的過(guò)程非常艱辛,也非常需要理論基礎和經(jīng)驗。
評論