目录
前言
在<<学习笔记|AURIX™ TC3xx NVM是非易失性存储器>>一文我们详细介绍了TC3xx芯片的Memory种类及布局;在<<TC37x芯片FLASH基本概念介绍>>一文我们介绍了Flash相关的基本概念;在<<TC3xx芯片DMU介绍>>一文我们介绍了写或擦除Flash需要使用的DMU;<<TC3xx芯片电源管理系统PMS详解>>一文的Standby Mode章节介绍了Standby RAM的。
在<<如何监控TC3xx芯片PFlash的ECC错误>>一文中详细介绍了如何监控TC3xx芯片PFlash的ECC错误。本文将详细介绍TC3xx芯片RAM的错误检测。
缩略词
简写 |
全称 |
MTU |
Memory Test Unit |
SSH |
SRAM Support Hardware |
SBE |
Single Bit Error Notification & Tracking Enable |
DBE |
Double Bit Error Notification and Tracking Enable |
注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!
正文
1.有哪些RAM及其主要功能
Memory Type |
Description |
DSPR |
属于RAM(Local RAM, 数据在掉电后丢失)。可用于程序运行后的数据存放(全局变量,栈空间的局部变量等);也可用于存放代码指令并执行程序(instruction fetch)及存放数据常量。也就说,DSPR可读可写可执行。且如下图所示,Local CPU读写DSPR的延迟时间为0(最快)。 |
DLMU |
属于RAM(Local RAM, 可配置为Standby RAM)。DLMU可读可写可执行,读数据的速度和DSPR一样快,但是写数据的速度不如DSPR。 |
PSPR |
属于RAM(Local RAM)。可读可写可执行,读写数据的速度不如DSPR,但是执行代码(fetch instruction)的速度最快。一些对代码执行速度要求高的算法可以放到PSPR里面运行,能提高算法的效率。 |
Data Cache |
DCache完全由CPU接管,对于用户来讲只需要配置是否开启DCahe功能。 |
Program Cache |
PCache完全由CPU接管,对于用户来讲只需要配置是否开启PCahe功能。 |
2.谁来实现RAM监控
TC3xx芯片的MTU模块配合使用SSH能够实现内存纠错与检测:
-系统中的SRAM块可以通过MTU配置内存错误检测/纠正。
-可纠正和不可纠正的错误检测。
-地址错误检测。
MTU检测到RAM错误后后报警通知到SMU:从每个SRAM/SSH,向MTU发送3个报警,然后转发到SMU。这些是CE报警、UCE报警和ME报警(CE, UCE, ME请参考后续章节)。
关于MTU模块,后续会有专门的文章介绍,敬请期待!
3.有哪些RAM监控事件
CPU0_DMEM、CPU0_DMEM1也就是CPU0 DSPR. 因为RAM区域比较大,所以在每个CPU核上会有两个SSH.
CPU0_PMEM也就是CPU0 PSPR
CPU0_DLMU_STBY也就是CPU0 DLMU
Error Addr Buffer
ETRR Buffer用于ram错误后的地址记录,上图的depth为5也就是说有5组ETRR寄存器用于记录错误地址(后面章节详细描述)。
ECC type
系统中使用两种不同的ECC code,用于不同的内存- SECDED code或DED code(注意:ECC Code是在写RAM时写入,读RAM时校验).
SECDED:最高可以检测到双位错误(DBE),同时也可以纠正单位错误(SBE)。
DED:可以检测到双位错误,但不能纠正任何错误。
ECC granularity
ECC粒度为2意味着每个物理SRAM块有2个ECC字。
Mux factor
为了减少单个随机硬件错误(例如,alpha粒子攻击或接触失败)导致超过单个比特错误的概率,每个逻辑数据字中的位被某个因素(4、8或16)交错。这意味着,逻辑数据字中的两个连续位实际上物理上相距4、8或16位。在SSH实例表中提到了在每个SRAM中使用的mux因子(不太理解....了解下就行)。
SECDED类型的ECC错误会有两种故障类型发送SMU, CE和UCE, CE代表SBE错误,UCE代表DBE错误。
DED类型的ECC保护只会发送UCE类型故障给SMU.
问题:有哪些RAM监控事件?
答:
1)ECC Correction Event Occurred. 也就是发生ECC 单bit错误(SBE)且纠正后上报给SMU的事件。
2)ECC Uncorrectable Event Detected.也就是发生了ECC双位错误,但不能纠正错误后上报给SMU的事件。
3)Address Error Detected.地址错误监控机制用于检测SRAM的地址生成逻辑,和检测数据写入的错误类似。
-- 有效的输入地址未选择字行/位行。
-- 选择多个字行/位行的有效输入地址。
--一个有效的输入地址选择了错误的字行/位行。
--一个有效输入地址,选择一个不存在的(如,超出范围)字行/位行。
4)ETRR Overflow Detected.
5)Error Critical for SSH Operation Detected.
6) Less Critical Safety-FF Errors (Enable Bits in ECCS, ALMSRCS).
7)Disabling of alarm notifications.
8)Disabling of safety mechanisms.
注意:4--> 8对应错误事件不知道啥意思,但是3 --> 8都对应SMU中的Miscellaneous error detection alarm. 具体参考后面的RAM监控报警章节。
4.如何开启RAM监控
MTU模块的CLC(Clock Control Register)寄存器用于控制RAM错误监控功能的开启与关闭。
SBE, DBE, ADDRE等RAM错误需要ALMSRCS对应寄存器的Enable位使能(配置为1)后才会使能故障通知和跟踪(Notification and tracking),这样才能将Alarm通知到SMU以及将错误信息保存到ETRR和ETRRINFO寄存器中。
注意:ALMSRCS寄存器默认就使能了(reset value为1)所有的enable位。
同样,ECCS寄存器的CENE, UCENE和TRE等Bit默认也是使能的(Rest value为1),这样RAM相关的Error才能通知到SMU.
5.如何记录RAM监控信息
监控到RAM发送错误后一般会触发SMU的Alarm,SMU对应Alarm的Action一般是中断,在Action中我们需要获取一些错误发生时的现场信息,这样才能方便后续的故障排查。
Error Tracking Register (ETRR寄存器)
ETRR寄存器包含检测到的错误的地址。每个SSH实例实现了5个寄存器。ETRR (0)包含最后一次检测到的错误。连续的错误会增加以前的错误。可纠正、不可纠正和地址错误以相同的方式存储在这里。
输入的每个地址的错误类型(单比特错误(SBERR),双比特错误(DBERR)或地址错误(ADDRERR))存储在MCi_ERRINFOx寄存器的相应条目中。如果在已经存储的地址上出现不同错误类型的新错误(ERRINFO内容不匹配),则该地址将再次在ETRR寄存器中存储第二次,这一次在相应的ERRINFO寄存器中存储新的错误类型。但是,在已经存储的地址(ERRINFO内容将与之匹配)上出现的新错误不会再次作为单独的条目存储。
一次只能跟踪一个新条目。如果多个错误同时发生在不同的内存块(SRAM towers)ECCD。
无论有多少ETRR寄存器仍然可用,都会设置EOV,并且发生错误的最低内存索引将存储在ETRR.MBI中。注意,如果在同一内存块的不同子塔中同时发生一个以上的错误,
不设置ECCD.EOV,如果子塔(sub-towers)中的错误类型不同,则所有错误类型都存储在相应的ERRINFO寄存器中。
如果启用,ECCD寄存器中的CERR、UCERR和SERR位也会被适当地设置。
被跟踪的地址是物理的,即该地址直接等同于SRAM地址输入信号。
相关联的有效位被/包含在寄存器ECCD中。VAL.ECCD.TRC清除相关的有效位,ETRR和ERRINFO的所有内容也将被清除。
它包含了可纠正、不可纠正的情况和地址错误的错误地址。一旦所有的寄存器都用完了,ECCD.EOV被设置。
Usage of MCi_ETRRx registers
MCi_ETRRx寄存器存储物理地址,即在sram的输入处的地址。此地址与系统地址不相同(见MEMMAP章)。用户应该依靠MCi索引(i)来找出错误发生在哪个SSH中。但是,不建议将MCi_ETRRx寄存器中的地址转换回系统地址。
Error Information Register
MCi_ETRRx寄存器包含检测到的错误的地址。使用错误信息寄存器(ERRINFO)可以找到与每个ETRR地址项对应的内存位置上的错误类型。每个ETRR条目对应于实现一个错误信息寄存器。只有当相应的ETRR条目有效(ECCD.VAL = 1),并被ECCD.TRC清除。
6.有哪些RAM监控报警
如下图所示,每个CPU都有对应的11个RAM监控相关的Alarm. 在实现RAM监控的时候需要配置所有RAM监控相关的Alarm的Action.
7.RAM故障注入测试
原文始发于微信公众号(汽车电子嵌入式):TC3xx芯片RAM的错误检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论