大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是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 初始化使能状态:

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

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

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

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:原来i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成的更多相关文章

  1. 痞子衡嵌入式:测一测i.MXRT1170 Raw NAND启动时间(从POR到进App的Reset_Handler)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 Raw NAND启动时间. 关于i.MXRT1170这颗划时代的MCU,痞子衡去年10月在其刚发布的时候, ...

  2. 痞子衡嵌入式:简析i.MXRT1170 Cortex-M7 FlexRAM ECC功能特点、开启步骤、性能影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M7内核的FlexRAM ECC功能. ECC是"Error Correcting ...

  3. 痞子衡嵌入式:简析i.MXRT1170 Cortex-M4 L-MEM ECC功能特点、开启步骤、性能影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M4内核的L-MEM ECC功能. 本篇是 <简析i.MXRT1170 Cortex-M ...

  4. 痞子衡嵌入式:大话双核i.MXRT1170之单独在线调试从核工程的方法(IAR篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下单独在线调试从核工程的方法(基于IAR). 两年前痞子衡写过一篇<双核i.MXRT1170之Cortex-M ...

  5. 痞子衡嵌入式:大话双核i.MXRT1170之Cortex-M7与Cortex-M4互相激活之道

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M7与Cortex-M4内核互相激活的方法. 痞子衡最近在深耕i.MXRT1170这颗划时代的 ...

  6. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  7. 痞子衡嵌入式:在MDK开发环境下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下将关键函数重定向到RAM中执行的几种方法. 这个关键函数重定向到 RAM 中执行系列文章,痞子衡已经写过 <IA ...

  8. 痞子衡嵌入式:在i.MXRT1170上启动含DQS的Octal Flash可不严格设Dummy Cycle (以MT35XU512为例)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Octal或Hyper Flash上DQS信号与Dummy Cycle联系. 关于在 i.MXRT 上启动 NOR Flash 时如何设 ...

  9. 痞子衡嵌入式:在IAR开发环境下将整个源文件代码重定向到任意RAM中的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将整个源文件代码重定向到任意RAM中的方法. 痞子衡旧文 <在IAR下将关键函数重定向到RAM中执行的方法> ...

  10. 痞子衡嵌入式:IAR内部C-SPY调试组件配套宏文件(.mac)用法介绍

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR内部C-SPY调试组件配套宏文件(.mac)用法. 痞子衡之前写过一篇 <JLink Script文件基础及其在IAR下调用 ...

随机推荐

  1. 大语言模型基础-Transformer模型详解和训练

    一.Transformer概述 Transformer是由谷歌在17年提出并应用于神经机器翻译的seq2seq模型,其结构完全通过自注意力机制完成对源语言序列和目标语言序列的全局依赖建模. Trans ...

  2. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理select下拉框-下篇

    1.简介 上一篇中宏哥主要讲解和分享了一下,我们常见或者传统的select下拉框的操作,但是近几年又出现了了一种新的select下拉框,其和我们传统的select下拉框完全不一样,那么我们如何使用pl ...

  3. Python 日期和时间处理教程:datetime 模块的使用

    Python 中的日期不是独立的数据类型,但我们可以导入一个名为 datetime 的模块来使用日期作为日期对象. 示例:导入 datetime 模块并显示当前日期: import datetime ...

  4. 20.3 OpenSSL 对称AES加解密算法

    AES算法是一种对称加密算法,全称为高级加密标准(Advanced Encryption Standard).它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特.192比特或 ...

  5. P7073 [CSP-J2020] 表达式

    Problem 考察算法:后缀表达式建树,优化. 题目简述 读入一个后缀表达式,由 \(\&,\mid,!\) 三种运算和操作数构成. 有 \(q\) 次询问,每次输入一个下标 \(i\) , ...

  6. 2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式串 p, 要求查找源串中有多少子串与模式串匹配, s‘ 与 s 匹配,当且仅当 s‘ 与 s

    2023-11-11:用go语言,字符串哈希+二分的例题. 给定长为 n 的源串 s,以及长度为 m 的模式串 p, 要求查找源串中有多少子串与模式串匹配, s' 与 s 匹配,当且仅当 s' 与 s ...

  7. 题解 CF1292A

    题目大意: 给你 \(2\times n\) 的迷宫,初始时没有任何障碍,给定 \(q\) 次询问,每次询问给予坐标 \((x,y)\),问将坐标 \((x,y)\) 反转状态(即无障碍变有障碍,有障 ...

  8. dmd-50

    按r键将其转换为字符 再将其拷贝下来 将其md5解密 得到一串英文,根据wp需要再将其加密一下,不知道为啥,得到的md5即为flag

  9. vue 中引入pingfang字体 或者其他字体 支持ttf otf格式

    新建一个font 文件 里面放字体文件 可以百度搜索你想要的字体下载下来 一般10m左右 新建一个font.css 里面配置字体 @font-face {     font-family: 'PF'; ...

  10. Grafana新手教程-实现仪表盘创建和告警推送

    前言 最近在使用Grafana的时候,发现Grafana功能比想象中要强大,除了配合Prometheus使用之外,他自身都可以做很多事情,可视化和监控平台,还可以直接根据用户自定义的告警规则完成告警和 ...