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

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

3天内不再提示

MCU内部SRAM的ECC初始化竟可由ROM完成

痞子衡嵌入式 来源:痞子衡嵌入式 2024-01-04 15:39 次阅读

大家好,我是痞子衡,是正经搞威廉希尔官方网站 的痞子。今天痞子衡给大家分享的是i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成

痞子衡之前写了三篇文章 《M7 FlexRAM ECC》、《M4 L-MEM ECC》、《MECC64》 分别介绍了 i.MXRT1170 片上 2MB RAM 的不同 ECC 控制器用法,尤其是第三篇文章最后介绍了当 MECC64 特性被激活之后,BootROM 虽然使能了 MECC1&2 但并没有一步到位初始化相应的全部 RAM 区域(仅初始化了 48KB ROM RW 区),这给后续调试和应用开发带来了一定隐患。

难道 BootROM “挑了事”就这么不负责任吗?当然不是!我们需要主动让 BootROM 负全责,今天痞子衡就聊一聊这个话题

一、RAM ECC初始化相关Fuse位

前面的文章讲了 Fuse MECC_ENABLE bit 主要控制 MECC64 模块是否被激活,但其实它还有另外一层关于 RAM ECC 初始化控制。痞子衡在此列出了如下跟 RAM ECC 初始化相关的全部 Fuse bit,其中最核心的是 ROM_ECC_PRELOAD_POR bit,这个 bit 决定是否在芯片 POR 上电时让 ROM 去做额外的 RAM ECC 初始化工作。

Fuse 0x840[2]  - MECC_ENABLE bit,        是否开启MECC模块(默认0即不开启)
                                          ROM做ECC初始化是否包括M7 FlexRAM OCRAM、M4 TCM、M4 OCRAM(默认0即不包含)

Fuse 0x840[15] - TCM_ECC_ENABLE bit,     ROM做ECC初始化是否包括M7 TCM(默认0即不包含)

Fuse 0x850[7]  - OCRAM1_DISABLE bit,     ROM做ECC初始化是否包括扣去ROM RW区之后的OCRAM1(默认0即包含)
Fuse 0x850[6]  - OCRAM2_DISABLE bit,     ROM做ECC初始化是否包括OCRAM2(默认0即包含)

Fuse 0x950[0]  - ROM_ECC_PRELOAD_POR bit,是否在POR时让ROM去初始化RAM ECC(默认0即不做)

上述区域里关于 OCRAM1 ECC 初始化需要特别说一下,因为前 48KB 是 ROM RW 区,其在 ROM 刚执行就被初始化过了,这里 ROM_ECC_PRELOAD_POR bit 控制的初始化就不再重复操作 ROM RW 区了。因为如果包含这个区域,那就会破坏 ROM 程序的正常执行了。

二、检验ROM做RAM ECC初始化工作

为了检验 BootROM 是否很好地完成了 RAM ECC 初始化工作,痞子衡找了块 RT1170 板卡使用 MCUBootUtility 工具将 Fuse 0x840、0x850、0x950 全部设成 RAM ECC 初始化使能状态:

1bae0986-aad4-11ee-8b88-92fbcf53809c.png

芯片保持 Serial Downloader 模式,挂上 JLink 读取内存,好家伙,内部 RAM 全部整齐划一地保持全 0 队形,不再是随机值了,看起来 ROM 很好地完成了 ECC 初始化工作。

1bb7eff0-aad4-11ee-8b88-92fbcf53809c.png

这时候尝试在 DTCM 里写入一些测试数据,然后做软件复位,再回读发现测试数据依然保持着,这说明 ROM 只在 POR 硬复位时做一次 RAM ECC 初始化,其后发生软复位导致 ROM 再执行时就会跳过 ECC 初始化。

1bbba212-aad4-11ee-8b88-92fbcf53809c.png

至此,i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成痞子衡便介绍完毕了,掌声在哪里~~~

审核编辑:汤梓红

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

    关注

    455

    文章

    50732

    浏览量

    423275
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17135

    浏览量

    351031
  • ROM
    ROM
    +关注

    关注

    4

    文章

    572

    浏览量

    85737
  • 初始化
    +关注

    关注

    0

    文章

    50

    浏览量

    11850

原文标题:MCU内部SRAM的ECC初始化竟可由ROM完成!

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

收藏 人收藏

    评论

    相关推荐

    MCU重新上电后,如何进行ECC初始化

    如题,在重新上电之后,需要读取ram地址,读取时进入异常,查阅资料后发现是由于重新上电,需要进行ECC初始化,请问这该如何进行
    发表于 03-19 07:53

    在modelsim中初始化ROM

    要在modelsim中初始化ROM,夏雨闻书上说的是用系统任务readmemb,可是我用了怎么就不能初始化呢,求大神指教!
    发表于 05-13 18:01

    关于ISE调用ROM IP核并初始化的问题?

    现在在做一个任意波形发生器的设计,先是用正弦波波形数据初始化rom,能够显示出正弦波,后来用锯齿波的数据,再次初始化rom,仿真出来的波形还是正弦波。不知道为什么???
    发表于 09-29 11:46

    FPGA片内ROM初始化文档创建

    Xilinx FPGA入门连载44:FPGA片内ROM实例之ROM配置特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jGjAhEm 1 ROM
    发表于 04-08 09:34

    SRAM在芯片复位时不初始化的办法

    如何保持SRAM的状态,在芯片复位时不初始化
    发表于 11-27 07:14

    SRAM上的ECC是否默认启用?哪些代码使SRAM上的ECC启用?

    将 u-boot 代码复制到 SRAM。但我知道我必须在链接器中启用 __RAM_INIT 标志才能初始化 ECC。如果不是,则在我将u-boot代码复制到SRAM时出现异常。那是正常
    发表于 03-27 09:15

    是否没有必要初始化SRAM_L因为它不受ECC保护?

    我注意到在S32K116的启动文件中有一个ECC RAM initial。(startup_S32K116.S)我认为这与 AN12522 有关。我的问题,初始化似乎只应用了 SRAM_U。(0x2000_0000 到 0x20
    发表于 03-31 06:05

    S32K146 ECC初始化器,为什么不初始化堆栈空间?

    S32K146 ECC初始化器,为什么不初始化堆栈空间?
    发表于 04-20 12:55

    求助,MCU重新上电后如何进行ECC初始化?

    如题,在重新上电之后,需要读取ram地址,读取时进入异常,查阅资料后发现是由于重新上电,需要进行ECC初始化,请问这该如何进行?
    发表于 08-07 10:05

    FPGA的ROM初始化问题讨论

    本文讨论FPGA的ROM初始化问题,详细介绍mit文件的创建与使用。利用FPGA实现的ROM只能认为器件处于用户状态时具备ROM功能。使用时不必要刻意划分,而
    发表于 02-08 14:24 5496次阅读
    FPGA的<b class='flag-5'>ROM</b><b class='flag-5'>初始化</b>问题讨论

    四种常见的ROM、RAM初始化文件格式

    Xilin ROM初始化文件,ISE初始化ROM的时候要用扩展名为coe的文件。其格式如下: MEMORY_INITIALIZATION_TADIX=2; //2表示数据是二进制格式
    的头像 发表于 06-29 09:08 1.2w次阅读

    如何使用FPGA内部ROM以及程序对该ROM的数据读操作

    FPGA本身是SRAM架构的,断电之后,程序就消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但不是真正意义上的
    的头像 发表于 02-08 16:30 1.2w次阅读
    如何使用FPGA<b class='flag-5'>内部</b>的<b class='flag-5'>ROM</b>以及程序对该<b class='flag-5'>ROM</b>的数据读操作

    根据MATLAB中的伪随机交织器产生的交织图案初始化ROM的实验

    根据MATLAB中的伪随机交织器产生的交织图案初始化ROM的实验(嵌入式开发工程师报名)-根据MATLAB中的伪随机交织器产生的交织图案初始化ROM
    发表于 07-30 16:19 13次下载
    根据MATLAB中的伪随机交织器产生的交织图案<b class='flag-5'>初始化</b>到<b class='flag-5'>ROM</b>的实验

    MCU初始化流程——从上电到main()之间

    堆栈(SP)生长方向为 递减; 小端模式 Cortex-M0内核正文:一、MCU上电后,硬件设计保证,自动从地址0x00开始取数据 初始化文件中代码设置 如下: 第一个数据用于初...
    发表于 10-28 17:05 4次下载
    <b class='flag-5'>MCU</b><b class='flag-5'>初始化</b>流程——从上电到main()之间

    MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

    GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行呢?如果顺序不当那初始化过程可能会出现短暂的电平跳变。
    的头像 发表于 02-22 11:07 1528次阅读
    <b class='flag-5'>MCU</b>单片机GPIO<b class='flag-5'>初始化</b>该按什么顺序配置?为什么<b class='flag-5'>初始化</b>时有电平跳变?