大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是i.MXRT1170內部RAM的ECC初始化工作可全部由ROM完成。 痞子衡之前寫了三篇文章 《M7 FlexRAM ECC》、《M4 L-MEM ECC》、《MECC64》 分別介紹了 i.MXRT1170 片上 2MB RAM 的不 ...
大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是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主頁、知乎主頁、微信公眾號 平臺上。
微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。
最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。



衡傑(痞子衡),目前就職於某知名外企半導體公司MCU系統部門,擔任嵌入式系統應用工程師。
專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。