0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

S32K1xx的ECC错误处理机制

痞子衡嵌入式 来源:大宁笔记不重名 2023-03-16 09:10 次阅读

1. 背景

ECC(Error Correcting Code)的目的是保证RAM和Flash等存储器中数据和程序代码的完整性和可靠性,在汽车MCU中被广泛应用,引起位错误的原因有多种,包括辐射(中子或阿尔法粒子)、电磁干扰、电噪声或电路短路等原因。在原理上ECC是在对用户开放的存储器之外的区域额外增加存储单元来存储ECC计算结果,所以通常不占用额外的RAM空间,当数据被读取时ECC会实时校验待读取数据的正确性,在检测到错误时及时进行自动纠正或者产生错误通知,进而产生实施相应的安全机制。

KW45也支持RAM的ECC错误检测,最近有用户问到其工作机制和错误处理机制,刚好看到S32K1有篇文档AN12522介绍相关内容,尽管两者在RAM区间的划分,ECC支持的范围以及错误注入功能上有很多区别,但其思想基本一致,可以作为借鉴,此文直接分享(仅修改一个翻译错误之处)。

S32K1xx系列中使用的ECC方法提供单错误纠正(SEC)和双错误检测(DED)功能。本应用笔记旨在描述如何在S32K1xx系列中实现ECC保护,并了解S32K14x和S32K11x器件的特定ECC事件响应。

2. SRAM ECC错误处理

2.1 上电复位后SRAM初始化

S32K1 SRAM分为两个区域:SRAM_L和SRAM_U。RAM的实现使得SRAM_L和SRAM_U位于内存映射中的一个连续块。有关更多详细信息,可以参阅参考手册中随附的S32K1xx_memory_map.xlsx文件。

Note: S32K11x器件的SRAM_L不受ECC保护, 用作系统RAM的FlexRAM 没有ECC, LPUART和FlexCAN RAM受 ECC保护。

SRAM的复位状态未知,因此数据可能包含随机数据。对任何地址的第一次读取尝试都很可能会产生不可纠正的ECC错误。在读取每个内存地址之前,必须将其写入一个已知值。如果读取未初始化的内存地址,则读取操作可能会导致多位ECC错误和AHB上的错误。因此, SRAM必须在上电后初始化,包括外设RAM存储器,如LPUART和FlexCAN RAM。

2.2 使用的ECC算法

SRAM的ECC实现使用修改汉明码方案,该方案具有40位校验基,由32位数据和8奇偶校验位组成。

2.3 单比特错误的ECC

S32K14x 和S32K11x设备以相同的方式处理单比特错误。错误报告模块(ERM)可以生成中断(如果已启用)以通知单比特位更正事件,该事件可以通过将CR0[ESCIEx]位设置为1来启用。在事件发生后,可以通过三种方式处理错误:

MCU正常运行:MCU检测到故障(故障检测时间)然后纠正(故障反应时间)。此时MCU继续正常运行。

具有适当的功能安全机制来管理故障:MCU检测故障(故障检测时间)然后纠正(故障反应时间)。此时软件必须切换 到safe_state_system(safe_state_system是一种没有不合理的概率发生对任何人身体伤害或健康损害的操作模式)。Safe_state_system必须由用户定义。

有任何合适的功能安全机制:MCU检测到故障(故障检测时间),然后纠正它,但没有通知用户发生了错误。容错时间间隔(FTTI)过后,可能会出现危险。

4aa1b820-c374-11ed-bfe3-dac502259ad0.png

2.4 不可纠正错误的ECC

S32K14x和S32K11x设备以不同的方式处理不可纠正的错误。错误报告模块(ERM)可以生成中断(如果已启用)以通知双位错误事件,可以将CR0[ENCIEx]位设置为1来启用该事件。

S32K14x错误处理:当故障发生时,CPU跳转到错误报告模块(ERM)中断处理程序(如果启用)。

S32K11x错误处理:

当发生故障时,CPU首先跳转到硬故障(hard fault)错误中断处理程序,紧接着,ERM中断标志被置位。

此时,用户必须检查ERM状态寄存器是否显示不可纠正的ECC错误事件。

如果是,建议遵循推荐的反应(系统复位)。

Note: 必须确保在硬故障异常处理期间不对SRAM_U进行读访问,否则会导致内核锁定。因此,应更新链接器文件, 以使堆栈、向量表、硬故障处理程序中使用的变量等不应位于SRAM_U, 建议放置在SRAM_L和FlexRAM。(此处原文翻译有错)

一旦发生此事件,有三种方法可以继续:

MCU正常运行:MCU检测到故障(故障检测时间)然后上报(故障反应时间)

具有适当的功能安全机制来管理故障:MCU检测到故障(故障检测时间)然后上报(故障反应时间)。

有任何合适的功能安全机制:MCU检测故障(故障检测时间)。容错时间间隔(FTTI)过后,将出现危险。

4ad87612-c374-11ed-bfe3-dac502259ad0.png

2.5 SRAM错误注入

错误注入模块(EIM)用于诊断目的,以便在访问SRAM时引发读取数据的单位和多位反转。当EIM用于向内存注入故障时,对SRAM的任何访问都会产生相应的注入错误(单位或双位错误)。EIM支持两个错误注入通道,分别对应于特定的RAM阵列。下表显示了不同S32K1xx衍生产品的通道分配。

4af986fe-c374-11ed-bfe3-dac502259ad0.png

对于安全应用,建议检查将错误注入SRAM的ECC功能,以检查此类错误的报告。

3. FLASH ECC错误处理

S32K1xx Flash中实现的ECC逻辑可以自动纠正单比特故障,并可以检测每个NVM分区(section)的多比特故障。使用 FERCNFG[DFDIE]位启用多位故障。当检测到多位错误时,FERSTAT[DFDIF]标志置位,产生中断请求。当FlexNVM区域配置为模拟EEPROM时,在从模拟EEPROM读取数据复制到EEERAM之前,任何单位ECC错误都会自动更正。在有效的模拟EEPROM位置上的任何双位ECC错误,包含需要复制到EEERAM的数据,反映为EEERAM中都为1的相应数据记录。

3.1 使用的ECC算法

NVM存储器的ECC实现使用修改汉明码方案,该方案具有72位校验基,由64位数据和8个奇偶校验位组成。

3.2 不可纠正错误的ECC

S32K14x和S32K11x设备以相同的方式处理不可纠正的错误。闪存模块(FTFC)可以生成中断(如果已启用)以通知多位错误事件,该事件可以通过将FERCNGFG[DFDIE]位设置为1来启用。

• S32K1xx错误处理:当故障发生时,FERSTAT[DFDIF]标志置位,通知检测到双位故障。闪存控制器将生成导致总线故障 (bus fault)的AHB错误响应(如果启用)。处理总线故障后,跳转到闪存模块(FTFC)中断处理程序(如果已启用)。软件可以根据错误发生在代码空间还是数据空间来处理错误。

如果在执行机器异常过程中出现不可纠正的错误故障,则应进入安全状态。

默认情况下禁用总线故障。因此,它将升级为硬故障(hard fault)。

3.3 闪存错误模拟

闪存模块(FTFC)允许用户模拟FERSTAT[DFDIF]标志的设置已检查相关的中断程序。设置FERCNFG[FDFD]位会创建错误仿真

考虑到真正的流程是在进入闪存错误处理程序之前首先跳转到BusFault(如果启用)。

不允许对闪存位置内的位进行累积编程(没有擦除的情况下连续编程操作)

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17110

    浏览量

    350898
  • FlaSh
    +关注

    关注

    10

    文章

    1632

    浏览量

    147909
  • 存储器
    +关注

    关注

    38

    文章

    7481

    浏览量

    163751
  • sram
    +关注

    关注

    6

    文章

    766

    浏览量

    114671
  • ECC
    ECC
    +关注

    关注

    0

    文章

    97

    浏览量

    20555

原文标题:S32K1xx的ECC错误处理机制

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式编程错误处理机制设计

    本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下。
    发表于 04-28 09:59 761次阅读
    嵌入式编程<b class='flag-5'>错误处理机制</b>设计

    S32K1XX系列MCU复位问题的解决方法

    最近有朋友调试S32K1XX系列的一块控制板,遇到了一个奇怪的问题,就是板子不断复位,无法连接下载器,而且问题找不到,于是我协助他调试了一下,然后最后发现竟然是芯片内部的复位导致的,而且10块板子均有复位波形【注意不是一直低电平的复位】,且并不是硬件设计的原因,今天分享给大家。
    发表于 08-23 13:03 2344次阅读
    <b class='flag-5'>S32K1XX</b>系列MCU复位问题的解决方法

    Rust语言中错误处理机制

    可能的错误,实际运行中仍然可能出现各种各样的错误,比如文件不存在、网络连接失败等等。对于这些不可预测的错误,我们必须使用错误处理机制来进行处理
    的头像 发表于 09-19 14:54 1401次阅读

    S32K1xx系列MCU的EEE(Emulated EEPROM)使用详解 精选资料分享

    内容提要引言(基于MCU的嵌入式系统中EEPROM的实现方式)1. S32K1xx系列MCU的EEE工作机制详解1.1 S32K1xx系列MCU的片上存储器资源1.2
    发表于 09-13 07:43

    S32K1xx系列MCU启动过程是怎样的

    内容提要注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下。引言1. S32K1xx系列MCU启动过程详解
    发表于 11-01 07:10

    如何搭建s32k1xx的环境?

    如何搭建s32k1xx的环境?
    发表于 02-09 07:55

    安装S32SDK S32K1XX RTM 4.0.2,IDE无法识别安装是怎么回事?

    我正在尝试安装 S32SDK S32K1XX RTM 4.0.2,但在安装下载的 exe 后,IDE 无法识别安装。有一些指南通过 .zip 文件描述安装,但只有在下载时才会有 exe。如何指示 S32Design Studio
    发表于 03-30 08:49

    S32K3xx EMIOS模块与S32K1xx FTM模块相比有什么优势?

    我想知道S32K3xx EMIOS模块与S32K1xx FTM模块相比有什么优势?
    发表于 03-31 09:08

    S32K1xx开发包和S32K1实时驱动的区别是什么?

    S32DS (Design Studio) 中的 S32K1xx 开发包是什么。 什么是 S32K1 实时驱动程序。 区别和应该安装哪个还是都安装?
    发表于 05-24 10:39

    AN5426,S32K1XX微控制器的硬件设计指南

    本文档为S32K1XX微控制器的硬件设计指南,有需要的可以下载!
    发表于 12-22 16:12 75次下载
    AN5426,<b class='flag-5'>S32K1XX</b>微控制器的硬件设计指南

    NXP半导体产品S32K1XX数据手册下载

    NXP半导体产品S32K1XX数据手册下载
    发表于 08-02 09:23 15次下载

    vb关闭当前应用重新加载_S32K1xx系列MCU应用指南之芯片锁死(lockup)复位原因分析与恢复方法详解...

    内容提要1. S32K1xx系列MCU的存储器加密(Security)和保护(Protection)工作机制1.1 S32K1xx系列MCU的Flash配置区域(Flash
    发表于 10-28 21:06 11次下载
    vb关闭当前应用重新加载_<b class='flag-5'>S32K1xx</b>系列MCU应用指南之芯片锁死(lockup)复位原因分析与恢复方法详解...

    S32K1xx系列MCU的EEE(Emulated EEPROM)使用详解

    内容提要引言(基于MCU的嵌入式系统中EEPROM的实现方式)1. S32K1xx系列MCU的EEE工作机制详解1.1 S32K1xx系列MCU的片上存储器资源1.2
    发表于 11-18 17:21 25次下载
    <b class='flag-5'>S32K1xx</b>系列MCU的EEE(Emulated EEPROM)使用详解

    西门子博图:错误处理机制概览

    可通过以下几种不同的错误处理机制进行参数跟踪或编程或访问错误
    的头像 发表于 11-25 11:35 2795次阅读
    西门子博图:<b class='flag-5'>错误处理机制</b>概览

    C语言中的错误处理机制解析

    C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。
    的头像 发表于 02-26 11:19 503次阅读