目录
- 旗芯微FC4150 OTA
- 云途YTM32B1MD OTA
- 小结
今天没有废话,啪一下很快,把目前接触到的国内带eFlash的车规MCU硬件OTA方案做一个梳理。
1. 旗芯微FC4150 OTA
旗芯微FC4150是基于ARM Cortex(快去审核下官网介绍,少了个T)-M4F内核的车规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的A\B切换,FC4150的OTA Flash地址是可以进行配置,颗粒度为8K,与之相关的配置项为:OTA_EN, OTA_START_ADDR, OTA_END_ADDR, OTA_VER_LOC。
当然,配置方法和大厂车规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的区域是根据OTA_Start address、End Address进行配置,那这是否可以认为假设PF0只配置128K用于OTA,那么PFlash0、1后面的128KB是可以使用的,这就变成了局部OTA,示意如下:
这么一看,确实吸纳了很多前人的经验。
2. 云途YTM32B1MD OTA
YTM32B1MD是一款功能安全ASIL B的车规MCU,使用ARM Cortex-M33内核,最高主频120MHz,PFlash 共512KB,分为2*256KB两个Bank,支持RWW属性,因此也支持OTA。
在该片子里使用EFM(Embedded Flash Module)来管理A\B SWAP,通过设置EFM CMD寄存器中 指令Boot Swap来进行切换;切换后需要进行系统复位后才有效,可以用过EFM STS.BOOT_INFO状态来进行判断当前处于哪个Bank,逻辑如下:
3.小结
目前看起来,最近几年新出的国产MCU普遍都会把A\B Swap硬件特性作为一个需求进行实现,为汽车ECU软件升级和回滚机制做准备,从原理上看起来是比较清晰的,设计和使用起来也比较方便,就是不确定容不容易锁板子。
不过在这种A\B Swap在功能安全和信息安全上的设计,我并没有看到国产MCU在这方面的考虑,从0到1的过程非常艰辛,也非常需要理论基础和经验。
就这样!今天很快!
作者:快乐的肌肉
来源:汽车MCU软件设计
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。