小猫爪:S32K3学习笔记10-S32K3之EIM和ERM

news/2025/1/7 19:15:35/

小猫爪:S32K3学习笔记10-S32K3之EIM和ERM

  • 1 前言
  • 2 EIM(Error Injection Module)
  • 3 ERM(Error Reporting Module)
  • 4 MCAL配置和代码
  • END

1 前言

  这Safety第一站就是EIM(Error Injection Module)和ERM(Error Reporting Module)。看名字就知道这两个模块是一对大聪明,一个负责注入错误,一个负责汇报错误。

2 EIM(Error Injection Module)

  首先得知道EIM这个注入错误的对象其实是S32K3的Memory。首先EIM把S32K3的整个Memory按照大小和功能总共分成了31个区域(众所周期,K3是有低配版,所以K3系列不是都有31个区域的,这一点具体得参考RM手册),然后为每个区域单独规划一个通道,即EIM总共有31个通道。

  我截取部分通道如下(其他通道具体请参考RM手册EIM章节):
在这里插入图片描述
  在表中能看到通道号和对应的区域,那么Data bits和Check bits,这两个东西代表着什么意思呢?其中Data bits指的是这个Memory总线上得数据位数,而Check bits则是对应的检验数。举个例子,在K3的Flash中是有ECC校验机制的,那么在这里,Data bits即为数据的位数,而Check bits即为ECC校验码的位数。

  31个通道搞清楚了,那么EIM是怎么给目标区域注入错误的呢?EIM的功能框图如下所示:
在这里插入图片描述
  可以很清楚的看到其实EIM的注入错误,并不是去真实的去改变目标地址的数据和校验值,而是在总线上做手脚,在data和check传输的过程中强行翻转bit,导致传输到其他模块的data和check不匹配,从而达到注入错误的目的。这手段简直就是树叶擦屁股,给爷漏了一手啊。所以说基于这个原理的话,只要你给相关区域注入了错误,那么只要访问这整个区域的任何一处地址那都会触发ECC错误。

  原理搞清楚了,接下来看卡这个操作在寄存器中是怎么体现的。打开寄存器,EIM总共就三个寄存器,一个是EIMCR, EICHEN,EICHx_WORDy(x表示通道号),这也就意味着EIM的操作及其简单。

  1. 写EIMCR,使能全局EIM通道开关
  2. 写EICHEN,使能单个通道开关
  3. 写EICHx_WORDy,决定翻转data和check的哪一个bit,就把对应的bit置1(不同通道对应的bit分布在上面的表格中有描述)。
  4. 成功写入EICHx_WORDy后,EICHEN中单个通道的开关会被Disable。

  这里需要注意一点,data和check建议只翻转一个,而且翻转控制在1bit和2bit。如果超过2bit的话可能会导致意想不到的事情发生。

3 ERM(Error Reporting Module)

  再来看看EIM的大兄弟ERM,EIM负责注入错误,而ERM负责汇报错误。当然ERM不仅仅能汇报EIM注入的错误,只要是Memory处出现了相关的错误,那么ERM都能够检测出来。在这里可以提一下,这里的错误指的是相关Memory发生了ECC错误,因为K3的Memory都是有ECC检测机制的。

  ERM则是根据访问Memory的不同主机以及访问的不同区域划分出不同的Module,每个module对应一个通道,总共有20个通道,如下:
在这里插入图片描述
  在表中可以清晰的看到不同通道号对应的不同Module,以及一个叫做Capture Status,描述了当ERM检测到memory错误时,它最后能汇报出的该错误的信息。其中single-bit error和multi-bit error为错误类型,其中single为可纠正错误,而multi为不可纠正错误;sysdrome为ECC校验的sysdrome值,此外还有发生错误的物理地址。

  这里扯个题外话,有人可能会有疑问,表中的17,18,19三个通道分别是FLASH的port0,1,2,这三个port分别代表什么?这就要涉及到K3的FLASH的访问端口了,K3根据FLASH的不同访问主机整出了三个访问端口,如下:
在这里插入图片描述
  其中p0是给CM7_0用的,p2是给CM7_用的,而p1则是给其他主机用的,如HSE,DMA。这就是ERM通道表中17,18,19通道的由来。

  ERM的工作机制非常简单,当检测到Memory发生了ECC错误的时候,相关标志置位,记录错误发生的地址和sysdrome,如果使能了中断,那么会产生相应的中断。

  再来看看其在寄存器中的体现,ERM的寄存器有CRx, SRx,EARx,SYNx,CORR_ERR_CNTx(x表示通道号)。

  1. 配置CRx,根据需求使能相关中断
  2. 检测到错误时,SRx相关标志置位
  3. EARx记录发生错误的地址,SYNx记录ECC sysdrome
  4. CORR_ERR_CNTx错误累加器加1
  5. 如果使能了中断,则产生中断,用户可在中断中进行相关错误处理操作

4 MCAL配置和代码

  EIM和ERM的MCAL的配置非常简单,甚至在MCAL中都没有单独的配置模块和分块,如果要使用EIM和ERM,只需要在Mcu模块中使能一下两者的时钟即可,如下:
在这里插入图片描述

  关于EIM和ERM的MCAL驱动不在RTD标准包里面,而是在SPD软件包里,SPD在NXP官网上就可以下载,下载完发现在SPD的安装包里面只有四个模块:
在这里插入图片描述
  EIM和ERM的功能则是集成在了eMcem中,而关于EIM和ERM的使用大多就是使用EIM注入错误,用ERM得到错误信息并处理。与EIM和ERM有关的函数有如下:

//注入错误
Std_ReturnType eMcem_InjectFault( eMcem_FaultType nFaultId );
//清除错误标记
Std_ReturnType eMcem_ClearFaults( eMcem_FaultType nFaultId );
//获取ERM错误信息
Std_ReturnType eMcem_GetMemErrInfo( eMcem_ChannelType nChannelId, eMcem_MemErrInfoType *pInfo );
//配置EIM错误bit
Std_ReturnType eMcem_SetupInjectionChannel( eMcem_FaultType nChannelId, uint16 u16BitPos1, uint16 u16BitPos2 );

  在这里就不做例子了,因为除了ERM(负责收集Memory的ECC错误)之外,K3还有一个更大的错误收集器,那就是FCCU,它可以收集ERM所有的错误,此外,它还收集了K3内部的所有错误,所以一般都是使用EIM注入错误,使用FCCU来处理,而ERM只是用来协助错误处理的工具人。等说到FCCU的时候,将三者集合在一起出个示例。

END


http://www.ppmy.cn/news/348634.html

相关文章

感受M200KIII

这几天回广州了,阔别了好久了M200KIII终于又见面了。迫不及待的开机试听了一下蔡琴的《渡口》哇塞随着强劲有力的第一通鼓声敲下,配合着下潜到海底的低音冲击感,真是妙不可言啊。 蔡琴的中音真不是盖的,不愠不火充满磁性的声音让…

Shell脚本攻略:${ }获取文件名和后缀

目录 一、理论 1. ${ }分别替换得到不同的值 2. ${ } 可针对不同的变数状态赋值(沒设定、空值、非空值) 二、实验 1.打印文件名和后缀名 2.${}分别替换 一、理论 1. ${ }分别替换得到不同的值 # 是 去掉左边(键盘上#在 $ 的左边); %…

故事:棒球梦想·棒球7号位

棒球是一项极富竞技性和挑战性的运动,它需要球员们具备高度的技术水平,强健的体魄和坚定的意志力。对于我来说,棒球不仅是一种运动,更是我人生中最珍贵的梦想之一。 小时候,我对棒球就有着浓厚的兴趣。每当我看到电视上…

【头歌-Python】9.1 X射线衍射曲线绘制(project)第3~4关

第3关:X 射线衍射曲线峰值 任务描述 本关任务:读文件中的数据绘制线图形并加绘制峰值。 相关知识 为了完成本关任务,你需要掌握: python 读取文件中的数据使用 matplotlib 绘制图形 python 读取文件 python读取文件可以用以…

【C++】是内存管理,但C++ !! 模板初阶

目录 一,回望C语言内存 二, C 内存管理方式 1. 内置类型 2. 自定义类型 3. new & malloc 返回内容区别 4. operator new & operator delete 5. malloc/free和new/delete的区别总结 6. 定位new表达式(placement-new) (了…

AOC U2790PQU 评测

这款显示器的分辨率同样为4K,除了浏览照片和进行后期调色外,制图、剪辑视频时,都能获得更为清晰、锐利的细节,而IPS面板本身的广视角特性也几乎让使用者能够从任何一个角度看清屏幕。 AOC U2790PQU怎么样这些点很重要 http://www.…

AOC有什么用

AOC是 "Active Optical Cable" 的缩写,它是一种光学电缆,可以将视频、数据和音频信号以光纤的形式传输。这种电缆的优点是传输速度快、传输距离远、信号传输稳定、耐用性好,适用于各种高清视频传输应用。

计算机屏幕很暗怎么办,如果aoc显示屏的亮度很暗怎么办

有时候我们的aoc监视器很暗,我们该怎么办?让我们向编辑学习,为深色aoc显示器提供一个简单的解决方案!希望你喜欢它! 黑暗aoc显示的解决方案: 打开控制面板,然后单击“系统和安全性”. 单击以更改电池设置. …