电子产业一站式赋能平台

PCB联盟网

搜索
查看: 33|回复: 0
收起左侧

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

[复制链接]

341

主题

346

帖子

2545

积分

三级会员

Rank: 3Rank: 3

积分
2545
发表于 2024-1-4 15:27:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成
; c0 ]2 C- E7 b3 }8 A痞子衡之前写了三篇文章 《M7 FlexRAM ECC》、《M4 L-MEM ECC》、《MECC64》 分别介绍了 i.MXRT1170 片上 2MB RAM 的不同 ECC 控制器用法,尤其是第三篇文章最后介绍了当 MECC64 特性被激活之后,BootROM 虽然使能了 MECC1&2 但并没有一步到位初始化相应的全部 RAM 区域(仅初始化了 48KB ROM RW 区),这给后续调试和应用开发带来了一定隐患。. f2 w, G9 b, X+ j  @! _+ ~5 N- \
难道 BootROM “挑了事”就这么不负责任吗?当然不是!我们需要主动让 BootROM 负全责,今天痞子衡就聊一聊这个话题:& Y& _. o1 k/ z
一、RAM ECC初始化相关Fuse位前面的文章讲了 Fuse MECC_ENABLE bit 主要控制 MECC64 模块是否被激活,但其实它还有另外一层关于 RAM ECC 初始化控制。痞子衡在此列出了如下跟 RAM ECC 初始化相关的全部 Fuse bit,其中最核心的是 ROM_ECC_PRELOAD_POR bit,这个 bit 决定是否在芯片 POR 上电时让 ROM 去做额外的 RAM ECC 初始化工作。
+ @4 F& V$ X  t( T5 C* LFuse 0x840[2]  - MECC_ENABLE bit,        是否开启MECC模块(默认0即不开启)
) j+ k/ j1 z) p7 b                                          ROM做ECC初始化是否包括M7 FlexRAM OCRAM、M4 TCM、M4 OCRAM(默认0即不包含)6 L7 m& Q/ g( C# y
Fuse 0x840[15] - TCM_ECC_ENABLE bit,     ROM做ECC初始化是否包括M7 TCM(默认0即不包含)+ A0 a) u5 {1 s" [" ?
Fuse 0x850[7]  - OCRAM1_DISABLE bit,     ROM做ECC初始化是否包括扣去ROM RW区之后的OCRAM1(默认0即包含)
7 C' e6 g: a+ |. rFuse 0x850[6]  - OCRAM2_DISABLE bit,     ROM做ECC初始化是否包括OCRAM2(默认0即包含)$ I( t; u! q6 O  O. r7 J2 W
Fuse 0x950[0]  - ROM_ECC_PRELOAD_POR bit,是否在POR时让ROM去初始化RAM ECC(默认0即不做)
; s  K! ~: {. u( F) m: f" I7 s上述区域里关于 OCRAM1 ECC 初始化需要特别说一下,因为前 48KB 是 ROM RW 区,其在 ROM 刚执行就被初始化过了,这里 ROM_ECC_PRELOAD_POR bit 控制的初始化就不再重复操作 ROM RW 区了。因为如果包含这个区域,那就会破坏 ROM 程序的正常执行了。
: w$ R3 ?7 Q, G$ x" D/ r二、检验ROM做RAM ECC初始化工作为了检验 BootROM 是否很好地完成了 RAM ECC 初始化工作,痞子衡找了块 RT1170 板卡使用 MCUBootUtility 工具将 Fuse 0x840、0x850、0x950 全部设成 RAM ECC 初始化使能状态:
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表