目录
1.SM基本概念
2.芯片启动阶段safety相关解读
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相关解读
芯片启动阶段包括两大块内容,模拟上电和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。
3.小结
我们简述了SM基本概念以及芯片启动阶段Safety机制,接下来我们继续描述应用启动阶段相关功能安全机制,TC3xx启动的功能安全机制浅析(2)-CSDN博客