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

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

3天内不再提示

SRAM ECC功能以及应用中的注意事项

意法半导体PDSA 来源:STM32单片机 作者:STM32单片机 2021-08-13 16:36 次阅读

现代电子系统中,由于“软”错误引起的系统故障比永久性硬件失效引起的系统故障要更多。“软”错误是指可以恢复的故障或者失效。这一类错误容易发生在寄存器RAM等上面,由于受到电磁干扰或者封装材料中的α粒子,宇宙射线等的影响而造成位值翻转。针对这个问题,可以在硬件上加奇偶校验,ECC电路来进行检测

STM32H7系列MCU的Flash,SRAM和CACHE都支持ECC的功能。在本文中,主要介绍SRAM ECC这部分功能以及应用中的注意事项。

RAMECC外设

在STM32H7系列MCU中,有一个叫RAMECC的外设,它是一个RAM ECC Monitor。RAMECC提供了一个接口给应用程序来检测当前RAM的ECC状态,以及当发生ECC错误后执行相应的恢复或者报错程序。

STM32H7的RAM ECC支持纠正单比特的错误和检测双比特的错误。对于AXI SRAM和TCM RAM,每64位数据附加8位ECC码;其他的32位总线的SRAM,每32位数据附加7位ECC码。

在对SRAM进行写操作的时候,硬件自动计算并保存ECC的值,在对SRAM进行读操作或者非对齐的写操作(读-改-写)的时候会自动进行校验,并且出错的地址和数据可以通过寄存器读出。

STM32H7的RAM ECC功能的实现可以分成两个部分:RAM ECC Controller和RAM ECC Monitor单元,如下图所示。

a2250f42-fb94-11eb-9bcf-12bb97331649.png

关于ECC Controller

STM32H7的SRAM分成AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4,数据TCM RAM,指令TCM RAM和备份SRAM等几块。每个RAM块分别对应一个ECC Controller。

ECC Controller始终处于使能状态。它负责ECC代码的计算存储,比较和错误检测,可以完成单比特错误纠正和双比特错误检测的功能。

关于ECC Monitor

STM32H7一共有三个ECC Monitor,各负责一个域。ECC Monitor接收来自ECC Controller的诊断事件,并根据寄存器的配置产生对应的中断信号

ECC Controller与ECC Monitor之间的映射关系见下图。例如D1的RAMECC Monitor单元,一共有5个通道,每个通道对应一个SRAM块的ECC controller。每个通道都有自己的一组寄存器,图中的Address offset就是寄存器组的偏移地址。如果要打开AXI SRAM的ECC Monitor单元,使得当检测到AXI SRAM的ECC错误时产生对应的中断,就需要操作AXI SRAM对应的寄存器组。

a530b858-fb94-11eb-9bcf-12bb97331649.png

FAR和FDR寄存器

RAMECC支持单比特ECC错误中断,双比特ECC错误中断和非对齐写操作(Byte Write)引起的ECC中断。在RAMECC的IER和CR寄存器中可以分别配置和使能这些中断。在SR寄存器中可以查看这些中断的状态。这几个寄存器的操作都一目了然,这里想说明的是另外两个寄存器:出错地址寄存器FAR和出错数据寄存器FDR。

使能了CR寄存器里的ECCELEN位后,当ECC错误(单比特/双比特错误)发生后,出错的地址和数据就会被锁定到FAR和FDR寄存器里。

FAR寄存器里保存的是相对地址。实际出错地址的计算公式如下:

实际的出错地址= SRAM的起始地址 + FAR寄存器的值 * N(N=4或者8)。

FDR寄存器有两个,对于64位总线的SRAM数据,FDRL寄存器保存低4字节的数据,FDRH保存高4字节的数据。对于32位总线的SRAM数据,数据保存在FDRL寄存器中,FDRH的值为0。

我们可以看下面两个例子:

例子1:使能AXI-SRAM对应的Monitor功能(如何使能请参考STM32H7CUBE库中的RAMECC_ErrorCount例程)。上电后AXI-SRAM先不初始化,然后直接进行读操作就会触发ECC错误。这时候我们在调试状态下查看FAR和FDR的值,见下图。

这里因为AXI-SRAM是64位总线接口,所以计算实际出错地址时,N的值是8。

例子2:使能SRAM1(0X30000000)对应的Monitor功能。上电后不进行初始,然后直接进行读操作就会触发ECC错误。这时候我们在调试状态下查看FAR和FDR的值,如下图。

因为SRAM1是32位总线接口,所以这时N的值是4。

在应用中如何正确使用RAM ECC

在使用支持ECC的RAM时,一定要注意的是要对RAM进行初始化,否则就可能会报ECC错误。就像我们在上一节的实验中做的那样,通过不初始化的做法,我们可以模拟出ECC错误。在AN5342中给出了建议的初始化步骤。

对于单比特的ECC错误可以在读出的过程中自动纠正,但仅仅只是读出的数据是正确的,为了防止错误累积,导致从单比特的错误变成双比特的错误,可以在检测到单比特错误后,将正确的值写回到SRAM中去。这里有两种方式,一种如果原本SRAM中保存的值在Flash有备份,那么直接将Flash中的值再次写到SRAM中去;或者利用前面提到的FAR和FDR寄存器将正确的值写回SRAM中。

通过周期性的ECC检测来主动发现SRAM的故障也是提高系统可靠性的方法。ECC检测可以通过读SRAM的值来进行。检测不需要一次性完成,可以在系统空闲时,分段的对SRAM进行检测。请参考AN5342了解更多的细节。

责任编辑:haq

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

    关注

    30

    文章

    5028

    浏览量

    117719
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348739

原文标题:工程师笔记 | STM32H7 RAMECC功能及应用

文章出处:【微信号:STM_IPGChina,微信公众号:意法半导体PDSA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    高速电路过孔设计注意事项

    高速电路过孔设计注意事项::在高速PCb设计,过孔设计是一个重要因素,它由孔、孔周围的焊盘区电源层隔离区组成,通常分为盲孔、埋孔和通孔三类。在PCb设计过程通过对过孔的寄生电容和
    发表于 08-16 13:33

    开关电源芯片TB3815各脚的功能以及调试中注意事项

    开关电源芯片TB3815各脚的功能以及调试中注意事项:1.VDD供电脚:TB3815 的启动电流低至1uA,可有效地减少系统启动电路的损耗,减小待机功耗。启动阈值电压13.6V 关断阈值电压7.6V
    发表于 01-02 16:20

    外部SRAM的种类和注意事项

    外部SRAM注意事项外部SRAM的种类
    发表于 12-30 07:17

    max485专用总线在使用的规范、标准以及注意事项是什么?

    max485专用总线在使用的规范、标准以及注意事项是什么?
    发表于 05-20 07:11

    CAN总线的特点以及应用注意事项

    被广泛应用汽车及各种工业环境。在此我们主要介绍一下CAN总线的特点,帧类型,以及应用注意事项。CAN总线特点1.1 多主控制跟我们常用的RS485只有一个主机,从机只能等待主机的轮询不同,在CAN总...
    发表于 08-20 06:53

    车辆电气化电池管理功能安全注意事项

    车辆电气化电池管理功能安全注意事项。本文研究了电池监测器满足功能安全的注意事项电动汽车标准
    发表于 01-10 10:27

    傲龙微晶屏的使用技巧和注意事项

    傲龙微晶屏的使用技巧和注意事项
    发表于 02-10 10:03 585次阅读

    浅谈PCB板设计注意事项

    在设计PCB板时应注意的一些基本事项:相关PCB设计参数详解以及相关注意事项
    发表于 05-09 16:05 3364次阅读

    外部SRAM的种类及注意事项

    外部SRAM注意事项 为使外部SRAM器件达到出最佳性能,建议遵循以下原则: 使用与连接的主系统控制器的接口数据带宽相同的SRAM。 如果管脚使用或板上空间的限制高于系统性能要求,可以
    发表于 04-03 15:58 1106次阅读

    门驱动的欠压保护功能及其注意事项

    门驱动的欠压保护功能及其注意事项
    发表于 11-01 08:26 1次下载
    门驱动的欠压保护<b class='flag-5'>功能</b>及其<b class='flag-5'>注意事项</b>

    使用注意事项

    使用注意事项
    发表于 03-17 20:14 0次下载
    使用<b class='flag-5'>注意事项</b>

    安全光幕选型方法以及注意事项

    安全光幕选型方法以及注意事项
    的头像 发表于 06-28 14:35 458次阅读
    安全光幕选型方法<b class='flag-5'>以及</b><b class='flag-5'>注意事项</b>

    安全光幕选型方法以及注意事项

    安全光幕选型方法以及注意事项
    的头像 发表于 07-06 13:59 481次阅读
    安全光幕选型方法<b class='flag-5'>以及</b><b class='flag-5'>注意事项</b>

    使用注意事项

    使用注意事项
    发表于 07-07 19:04 0次下载
    使用<b class='flag-5'>注意事项</b>

    展频IC布板注意事项

    展频IC布板注意事项
    发表于 04-14 10:12 4次下载