TC3xx芯片RAM的错误检测

admin 2024年4月2日11:28:37评论3 views字数 3907阅读13分1秒阅读模式

目录

TC3xx芯片RAM的错误检测

前言

<<学习笔记|AURIX™ TC3xx NVM是非易失性存储器>>一文我们详细介绍了TC3xx芯片的Memory种类及布局;在<<TC37x芯片FLASH基本概念介绍>>一文我们介绍了Flash相关的基本概念;在<<TC3xx芯片DMU介绍>>一文我们介绍了写或擦除Flash需要使用的DMU<<TC3xx芯片电源管理系统PMS详解>>一文的Standby Mode章节介绍了Standby RAM的。

<<如何监控TC3xx芯片PFlash的ECC错误>>一文中详细介绍了如何监控TC3xx芯片PFlashECC错误。本文将详细介绍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及其主要功能

TC3xx芯片RAM的错误检测

Memory Type

Description

DSPR

属于RAMLocal RAM, 数据在掉电后丢失)。可用于程序运行后的数据存放(全局变量,栈空间的局部变量等);也可用于存放代码指令并执行程序(instruction fetch)及存放数据常量。也就说,DSPR可读可写可执行。且如下图所示,Local CPU读写DSPR的延迟时间为0(最快)

DLMU

属于RAMLocal RAM, 可配置为Standby RAM)。DLMU可读可写可执行,读数据的速度和DSPR一样快,但是写数据的速度不如DSPR

PSPR

属于RAMLocal RAM)。可读可写可执行,读写数据的速度不如DSPR,但是执行代码(fetch instruction)的速度最快。一些对代码执行速度要求高的算法可以放到PSPR里面运行,能提高算法的效率。

Data Cache

DCache完全由CPU接管,对于用户来讲只需要配置是否开启DCahe功能。

Program Cache

PCache完全由CPU接管,对于用户来讲只需要配置是否开启PCahe功能。

参考文章:如何监控TC3xx芯片PFlash的ECC错误

2.谁来实现RAM监控

TC3xx芯片的MTU模块配合使用SSH能够实现内存纠错与检测:

-系统中的SRAM块可以通过MTU配置内存错误检测/纠正。

-可纠正和不可纠正的错误检测。

-地址错误检测。

MTU检测到RAM错误后后报警通知到SMU:从每个SRAM/SSH,向MTU发送3个报警,然后转发到SMU。这些是CE报警、UCE报警和ME报警(CE, UCE, ME请参考后续章节)。

关于MTU模块,后续会有专门的文章介绍,敬请期待!

TC3xx芯片RAM的错误检测

3.有哪些RAM监控事件

TC3xx芯片RAM的错误检测

CPU0_DMEMCPU0_DMEM1也就是CPU0 DSPR. 因为RAM区域比较大,所以在每个CPU核上会有两个SSH.

CPU0_PMEM也就是CPU0 PSPR

CPU0_DLMU_STBY也就是CPU0 DLMU

Error Addr Buffer

ETRR Buffer用于ram错误后的地址记录,上图的depth5也就是说有5ETRR寄存器用于记录错误地址(后面章节详细描述)。

ECC type

系统中使用两种不同的ECC code,用于不同的内存- SECDED codeDED code(注意ECC Code是在写RAM时写入,读RAM时校验).

SECDED最高可以检测到双位错误(DBE),同时也可以纠正单位错误(SBE)。

DED可以检测到双位错误,但不能纠正任何错误。

ECC granularity

ECC粒度为2意味着每个物理SRAM块有2ECC字。

Mux factor

为了减少单个随机硬件错误(例如,alpha粒子攻击或接触失败)导致超过单个比特错误的概率,每个逻辑数据字中的位被某个因素(4816)交错。这意味着,逻辑数据字中的两个连续位实际上物理上相距4816位。在SSH实例表中提到了在每个SRAM中使用的mux因子(不太理解....了解下就行)

TC3xx芯片RAM的错误检测

SECDED类型的ECC错误会有两种故障类型发送SMU, CEUCE, CE代表SBE错误,UCE代表DBE错误。

DED类型的ECC保护只会发送UCE类型故障给SMU.

TC3xx芯片RAM的错误检测

问题:有哪些RAM监控事件?

1ECC Correction Event Occurred. 也就是发生ECC bit错误(SBE且纠正后上报给SMU的事件。

2ECC Uncorrectable Event Detected.也就是发生了ECC双位错误,但不能纠正错误后上报给SMU的事件

3Address Error Detected.地址错误监控机制用于检测SRAM的地址生成逻辑,和检测数据写入的错误类似。

-- 有效的输入地址未选择字行/位行。

-- 选择多个字行/位行的有效输入地址。

--一个有效的输入地址选择了错误的字行/位行。

--一个有效输入地址,选择一个不存在的(如,超出范围)字行/位行。

4ETRR Overflow Detected.

5Error Critical for SSH Operation Detected.

6Less Critical Safety-FF Errors (Enable Bits in ECCS, ALMSRCS).

7Disabling of alarm notifications.

8Disabling of safety mechanisms.

注意4--> 8对应错误事件不知道啥意思,但是3 --> 8都对应SMU中的Miscellaneous error detection alarm. 具体参考后面的RAM监控报警章节

4.如何开启RAM监控

MTU模块的CLCClock Control Register)寄存器用于控制RAM错误监控功能的开启与关闭。

TC3xx芯片RAM的错误检测

SBE, DBE, ADDRERAM错误需要ALMSRCS对应寄存器的Enable位使能(配置为1)后才会使能故障通知和跟踪(Notification and tracking),这样才能将Alarm通知到SMU以及将错误信息保存到ETRRETRRINFO寄存器中。

注意ALMSRCS寄存器默认就使能了(reset value1)所有的enable位。

TC3xx芯片RAM的错误检测

TC3xx芯片RAM的错误检测

同样,ECCS寄存器的CENE, UCENETREBit默认也是使能的(Rest value1),这样RAM相关的Error才能通知到SMU.

TC3xx芯片RAM的错误检测

TC3xx芯片RAM的错误检测

5.如何记录RAM监控信息

监控到RAM发送错误后一般会触发SMUAlarmSMU对应AlarmAction一般是中断,在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寄存器中的CERRUCERRSERR位也会被适当地设置。

被跟踪的地址是物理的,即该地址直接等同于SRAM地址输入信号。

相关联的有效位被/包含在寄存器ECCD中。VAL.ECCD.TRC清除相关的有效位,ETRRERRINFO的所有内容也将被清除。

它包含了可纠正、不可纠正的情况和地址错误的错误地址。一旦所有的寄存器都用完了,ECCD.EOV设置。

TC3xx芯片RAM的错误检测

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清除

TC3xx芯片RAM的错误检测

6.有哪些RAM监控报警

如下图所示,每个CPU都有对应的11RAM监控相关的Alarm. 在实现RAM监控的时候需要配置所有RAM监控相关的AlarmAction.

TC3xx芯片RAM的错误检测

TC3xx芯片RAM的错误检测

TC3xx芯片RAM的错误检测

7.RAM故障注入测试

原文始发于微信公众号(汽车电子嵌入式):TC3xx芯片RAM的错误检测

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月2日11:28:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   TC3xx芯片RAM的错误检测https://cn-sec.com/archives/2618514.html

发表评论

匿名网友 填写信息