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