0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCU內(nèi)部SRAM的ECC初始化竟可由ROM完成

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 2024-01-04 15:39 ? 次閱讀

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是i.MXRT1170內(nèi)部RAM的ECC初始化工作可全部由ROM完成。

痞子衡之前寫了三篇文章 《M7 FlexRAM ECC》、《M4 L-MEM ECC》、《MECC64》 分別介紹了 i.MXRT1170 片上 2MB RAM 的不同 ECC 控制器用法,尤其是第三篇文章最后介紹了當(dāng) MECC64 特性被激活之后,BootROM 雖然使能了 MECC1&2 但并沒有一步到位初始化相應(yīng)的全部 RAM 區(qū)域(僅初始化了 48KB ROM RW 區(qū)),這給后續(xù)調(diào)試和應(yīng)用開發(fā)帶來了一定隱患。

難道 BootROM “挑了事”就這么不負(fù)責(zé)任嗎?當(dāng)然不是!我們需要主動(dòng)讓 BootROM 負(fù)全責(zé),今天痞子衡就聊一聊這個(gè)話題

一、RAM ECC初始化相關(guān)Fuse位

前面的文章講了 Fuse MECC_ENABLE bit 主要控制 MECC64 模塊是否被激活,但其實(shí)它還有另外一層關(guān)于 RAM ECC 初始化控制。痞子衡在此列出了如下跟 RAM ECC 初始化相關(guān)的全部 Fuse bit,其中最核心的是 ROM_ECC_PRELOAD_POR bit,這個(gè) bit 決定是否在芯片 POR 上電時(shí)讓 ROM 去做額外的 RAM ECC 初始化工作。

Fuse 0x840[2]  - MECC_ENABLE bit,        是否開啟MECC模塊(默認(rèn)0即不開啟)
                                          ROM做ECC初始化是否包括M7 FlexRAM OCRAM、M4 TCM、M4 OCRAM(默認(rèn)0即不包含)

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

Fuse 0x850[7]  - OCRAM1_DISABLE bit,     ROM做ECC初始化是否包括扣去ROM RW區(qū)之后的OCRAM1(默認(rèn)0即包含)
Fuse 0x850[6]  - OCRAM2_DISABLE bit,     ROM做ECC初始化是否包括OCRAM2(默認(rèn)0即包含)

Fuse 0x950[0]  - ROM_ECC_PRELOAD_POR bit,是否在POR時(shí)讓ROM去初始化RAM ECC(默認(rèn)0即不做)

上述區(qū)域里關(guān)于 OCRAM1 ECC 初始化需要特別說一下,因?yàn)榍?48KB 是 ROM RW 區(qū),其在 ROM 剛執(zhí)行就被初始化過了,這里 ROM_ECC_PRELOAD_POR bit 控制的初始化就不再重復(fù)操作 ROM RW 區(qū)了。因?yàn)槿绻@個(gè)區(qū)域,那就會(huì)破壞 ROM 程序的正常執(zhí)行了。

二、檢驗(yàn)ROM做RAM ECC初始化工作

為了檢驗(yàn) BootROM 是否很好地完成了 RAM ECC 初始化工作,痞子衡找了塊 RT1170 板卡使用 MCUBootUtility 工具將 Fuse 0x840、0x850、0x950 全部設(shè)成 RAM ECC 初始化使能狀態(tài):

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

芯片保持 Serial Downloader 模式,掛上 JLink 讀取內(nèi)存,好家伙,內(nèi)部 RAM 全部整齊劃一地保持全 0 隊(duì)形,不再是隨機(jī)值了,看起來 ROM 很好地完成了 ECC 初始化工作。

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

這時(shí)候嘗試在 DTCM 里寫入一些測試數(shù)據(jù),然后做軟件復(fù)位,再回讀發(fā)現(xiàn)測試數(shù)據(jù)依然保持著,這說明 ROM 只在 POR 硬復(fù)位時(shí)做一次 RAM ECC 初始化,其后發(fā)生軟復(fù)位導(dǎo)致 ROM 再執(zhí)行時(shí)就會(huì)跳過 ECC 初始化。

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

至此,i.MXRT1170內(nèi)部RAM的ECC初始化工作可全部由ROM完成痞子衡便介紹完畢了,掌聲在哪里~~~

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417148
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347772
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    539

    瀏覽量

    85431
  • 初始化
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11743

原文標(biāo)題:MCU內(nèi)部SRAM的ECC初始化竟可由ROM完成!

文章出處:【微信號(hào):pzh_mcu,微信公眾號(hào):痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCU重新上電后,如何進(jìn)行ECC初始化?

    如題,在重新上電之后,需要讀取ram地址,讀取時(shí)進(jìn)入異常,查閱資料后發(fā)現(xiàn)是由于重新上電,需要進(jìn)行ECC初始化,請(qǐng)問這該如何進(jìn)行
    發(fā)表于 03-19 07:53

    在modelsim中初始化ROM

    要在modelsim中初始化ROM,夏雨聞書上說的是用系統(tǒng)任務(wù)readmemb,可是我用了怎么就不能初始化呢,求大神指教!
    發(fā)表于 05-13 18:01

    關(guān)于ISE調(diào)用ROM IP核并初始化的問題?

    現(xiàn)在在做一個(gè)任意波形發(fā)生器的設(shè)計(jì),先是用正弦波波形數(shù)據(jù)初始化rom,能夠顯示出正弦波,后來用鋸齒波的數(shù)據(jù),再次初始化rom,仿真出來的波形還是正弦波。不知道為什么???
    發(fā)表于 09-29 11:46

    FPGA片內(nèi)ROM初始化文檔創(chuàng)建

    Xilinx FPGA入門連載44:FPGA片內(nèi)ROM實(shí)例之ROM配置特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1jGjAhEm 1 ROM
    發(fā)表于 04-08 09:34

    SRAM在芯片復(fù)位時(shí)不初始化的辦法

    如何保持SRAM的狀態(tài),在芯片復(fù)位時(shí)不初始化
    發(fā)表于 11-27 07:14

    SRAM上的ECC是否默認(rèn)啟用?哪些代碼使SRAM上的ECC啟用?

    將 u-boot 代碼復(fù)制到 SRAM。但我知道我必須在鏈接器中啟用 __RAM_INIT 標(biāo)志才能初始化 ECC。如果不是,則在我將u-boot代碼復(fù)制到SRAM時(shí)出現(xiàn)異常。那是正常
    發(fā)表于 03-27 09:15

    是否沒有必要初始化SRAM_L因?yàn)樗皇?b class='flag-5'>ECC保護(hù)?

    我注意到在S32K116的啟動(dòng)文件中有一個(gè)ECC RAM initial。(startup_S32K116.S)我認(rèn)為這與 AN12522 有關(guān)。我的問題,初始化似乎只應(yīng)用了 SRAM_U。(0x2000_0000 到 0x20
    發(fā)表于 03-31 06:05

    S32K146 ECC初始化器,為什么不初始化堆??臻g?

    S32K146 ECC初始化器,為什么不初始化堆??臻g?
    發(fā)表于 04-20 12:55

    求助,MCU重新上電后如何進(jìn)行ECC初始化?

    如題,在重新上電之后,需要讀取ram地址,讀取時(shí)進(jìn)入異常,查閱資料后發(fā)現(xiàn)是由于重新上電,需要進(jìn)行ECC初始化,請(qǐng)問這該如何進(jìn)行?
    發(fā)表于 08-07 10:05

    FPGA的ROM初始化問題討論

    本文討論FPGA的ROM初始化問題,詳細(xì)介紹mit文件的創(chuàng)建與使用。利用FPGA實(shí)現(xiàn)的ROM只能認(rèn)為器件處于用戶狀態(tài)時(shí)具備ROM功能。使用時(shí)不必要刻意劃分,而
    發(fā)表于 02-08 14:24 ?5409次閱讀
    FPGA的<b class='flag-5'>ROM</b><b class='flag-5'>初始化</b>問題討論

    四種常見的ROM、RAM初始化文件格式

    Xilin ROM初始化文件,ISE初始化ROM的時(shí)候要用擴(kuò)展名為coe的文件。其格式如下: MEMORY_INITIALIZATION_TADIX=2; //2表示數(shù)據(jù)是二進(jìn)制格式
    的頭像 發(fā)表于 06-29 09:08 ?1.1w次閱讀

    如何使用FPGA內(nèi)部ROM以及程序?qū)υ?b class='flag-5'>ROM的數(shù)據(jù)讀操作

    FPGA本身是SRAM架構(gòu)的,斷電之后,程序就消失,那么如何利用FPGA實(shí)現(xiàn)一個(gè)ROM呢,我們可以利用FPGA內(nèi)部的RAM資源實(shí)現(xiàn)ROM,但不是真正意義上的
    的頭像 發(fā)表于 02-08 16:30 ?1.1w次閱讀
    如何使用FPGA<b class='flag-5'>內(nèi)部</b>的<b class='flag-5'>ROM</b>以及程序?qū)υ?b class='flag-5'>ROM</b>的數(shù)據(jù)讀操作

    根據(jù)MATLAB中的偽隨機(jī)交織器產(chǎn)生的交織圖案初始化ROM的實(shí)驗(yàn)

    根據(jù)MATLAB中的偽隨機(jī)交織器產(chǎn)生的交織圖案初始化ROM的實(shí)驗(yàn)(嵌入式開發(fā)工程師報(bào)名)-根據(jù)MATLAB中的偽隨機(jī)交織器產(chǎn)生的交織圖案初始化ROM
    發(fā)表于 07-30 16:19 ?13次下載
    根據(jù)MATLAB中的偽隨機(jī)交織器產(chǎn)生的交織圖案<b class='flag-5'>初始化</b>到<b class='flag-5'>ROM</b>的實(shí)驗(yàn)

    MCU初始化流程——從上電到main()之間

    堆棧(SP)生長方向?yàn)?遞減; 小端模式 Cortex-M0內(nèi)核正文:一、MCU上電后,硬件設(shè)計(jì)保證,自動(dòng)從地址0x00開始取數(shù)據(jù) 初始化文件中代碼設(shè)置 如下: 第一個(gè)數(shù)據(jù)用于初...
    發(fā)表于 10-28 17:05 ?4次下載
    <b class='flag-5'>MCU</b><b class='flag-5'>初始化</b>流程——從上電到main()之間

    MCU單片機(jī)GPIO初始化該按什么順序配置?為什么初始化時(shí)有電平跳變?

    GPIO初始化時(shí)有時(shí)鐘配置、模式配置、輸出配置、復(fù)用配置,那么在編寫初始化代碼時(shí),到底該按什么順序執(zhí)行呢?如果順序不當(dāng)那初始化過程可能會(huì)出現(xiàn)短暫的電平跳變。
    的頭像 發(fā)表于 02-22 11:07 ?1168次閱讀
    <b class='flag-5'>MCU</b>單片機(jī)GPIO<b class='flag-5'>初始化</b>該按什么順序配置?為什么<b class='flag-5'>初始化</b>時(shí)有電平跳變?