TC3xx启动的功能安全机制浅析

汽车   2024-07-02 08:50   广东  
目录

1.SM基本概念

2.启动中safety相关解读

2.1 芯片启动阶段

2.2 应用启动阶段 

3.小结

之前描述TC3xx Boot Firmware逻辑时提到了功能安全的内容,但没有完全展开;启动阶段与功能安全相关的内容如下图所示:

其中,
  • 灰色背景指在BootRom Fireware里的运行逻辑,这部分我们改变不了,但是可以通过UCB进行配置;
  • 浅绿色背景是应用启动阶段,包含用户的启动代码,这部分就随心所欲了; 
但是,在背景里有很多不同颜色的内容,例如SM、ESM、SMC等等,这些到底表示什么?对于启动代码的设计有什么帮助?我们来具体分析分析。

1.SM基本概念

SM是safety mechanism的缩写,什么是SM。根据英飞凌定义:
Safety Mechanism是用于避免\控制系统失效、探测\控制随机硬件失效的一种活动或者技术手段。 
这就比较明确了,安全机制来管控失效,而系统失效(Systematic Failures)我们可以在设计阶段尽量去避免;随机硬件失效(Random Hardware Failures)则只能在系统运行时探测和控制,根据安全机制的作用域,可以划分为2大类:
  • Safety Mechanism(SM):可以交由MCU内部的软件或者硬件处理的机制;
  • External Safety Mechanism(ESM):需要有系统级别的软件或者硬件方案来处理的机制
而之前我们聊过SMU,alarm的行为是需要应用软件进行配置的,因此SMC(Safety Mechanism Configuration)就是用来提示使用者Check是否根据系统定义正确配置了alarm行为。

2.启动中safety相关解读

2.1 芯片启动阶段

芯片启动阶段包括两大块内容,模拟上电和BootFirmware运行,其功能安全相关流程如下:
系统上电后,一旦电压和Backup时钟达到目标值后,硬件会触发SM[HW]:PMS:PBIST,该机制的具体含义如下图所示:
那么很明显,这个PBIST就是由MCU内部PMS这个模块硬件实现,全称Power Built-in Self Test;PBIST仅在冷启动释放前对电压监控、供电功能等进行自测,这个如果没测过,片子就挂了,所以它不需要有任何alarm,硬件全权处理。
测试通过后解除断言,就来到了我们比较熟悉的Boot Firmware阶段。这个阶段虽然修改不了代码,但是可以通过UCB配置影响运行逻辑;在上述示例中,首先要求了SSW RAM INIT,这是因为冷启动后RAM里是随机值,如果去做Memory BIST,肯定全是错误,因此TC3xx提供了UCB17\25(UCB_DFLASH)使得用户可以根据需要配置些RAM需要在SSW阶段进行初始化:
对应寄存器DMU_HF_PROCONRAM.LMUSEL\RAMINSEL,如下图:
对应配置项如下:
当SSW(Boot Firmware1)根据UCB配置将数据装载至相关寄存器后,还会有一套程序CHSW(Boot Firmware2)对结果做一系列检查,预防该阶段出现随机硬件失效,对应安全机制:SM[SW]:FW:MCU_STARTUP_PREOS_FW。
同样的,上述机制依旧没有alarm对应,SSW阶段探测到错误,通过ESR0报告使得MCU进入错误状态;CHSW则会将错误状态记录到STEMEx,由用户来判断这部分错误:
在CHSW运行前,英飞凌提供了LBIST相关配置,我们在BMHD里配置了LBISTENA = 1B,SSW阶段会自动运行LBIST,对应安全机制SM[HW]:MCU:LBIST,该机制是通过检测MCU数字逻辑电路来探测潜伏和多点故障。
LBIST的触发是需要软件配置Pattern等参数等,对应寄存器SCU_LBISTCTRLx;那么在SSW阶段如果我们配置了UCB.BMHD.LBISTENA = 1,SSW就会使用一套默认配置,这个可以在每个具体型号片子手册里找到,例如TC37x AA的LBIST Configuration 配置如下:
需要注意的是,一旦LBIST启动MCU就不能用了,因此LBIST结束后保存相关结果到寄存器,并产生系统复位,重新运行SSW。

2.2 应用启动阶段 

在用户启动阶段,与功能安全相关的内容是比较多的,我们要考虑LBIST触发(如果SSW没有触发LBIST)、LBIST结果检查,MONBIST触发,MBIST触发,SMU的alarm配置等。
因此我们首先总结需要配置的安全机制,包括:
SMC[SW]:PMS:MONBIST_CFG
        应用软件用于配置MONBIST参数并触发MONBIST( Monitor Built-in Self Test,用于检测二级电压监控、standby alarm path路径是否正常),对应配置模块PMS\SMU_Standby
SMC[SW]:VMT:MBIST
        应用软件用于配置哪些Memory并触发MBIST,对应配置模块MTU
SMC[SW]:MCU:LBIST_CFG

应用软件用于配置LBIST Pattern并触发,对应配置模块SCU_LBIST

具体配置方法可以在之前SMU、MTU的文章里面查询。
接下来我们继续基于流程来讨论.
应用代码开始运行后,根据当前产品ASIL等级,选择性做如下功能安全相关操作:
(1)需要检查LBIST结果,如果没有SSW没有触发,则需要在该阶段触发;对应安全机制ESM[SW]:MCU:LBIST_RESULT,由于是系统级别的机制,因此也没有alarm进行匹配。 
(2配置并触发MONBIST,测试完成后,还需要通过相应寄存器MONBISTAT检查MONBIST结果。这一部分异常处理措施也是由产品系统来定义,对应机制ESM[SW]:PMS:MONBIST_RESULT;
(3)MONBIST处理完成后,应用软件需要检查Boot Firmware是否正确执行,包括寄存器值的设置、SMU alarm是否都在预定义的范围里,如果检查有问题,就需要考虑通过再次冷复位,来判断是否出现了芯片级别的永久失效,对应机制ESM[SW]:SYS:MCU_FW_CHECKESM[SW]:SYS:MCU_STARTUP.
(4)如果都通过了,就需要对SMU alive、REG_MONITOR进行测试。
针对SMU Alive,需要使用SMU指令SMU_AliveTest(),进行测试,对应alarm21[16]:
针对REG_MONITOR,我们需要配置SMU_Stanby 对应寄存器例如RMCTL,进行测试,对应alarm共计11个。
(5)通过配置MTU相关寄存器,我们可以保证RAM没有故障,对应alarm如下:
(6)最后确保使能与应用相关的所有SMU警报。需要注意一点,在PLL配置时需要注意Clock Monitor、PLL loss of lock detection等alarm的行为。

3.小结

上文我们简单总结了SM基本概念,梳理了启动阶段定义的各种安全机制,包括SM和ESM。不得不感叹英飞凌在车规MCU的经验老道,在方案设计上十分周全。
好好学习,站在巨人的肩膀上才能看得更远。

-end-


分享不易,恳请点个【👍】和【在看】

汽车ECU开发
持续为您提供汽车科技、技术
 最新文章