精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

介紹一下i.MXRT1170上用于保護片內OCRAM1,2的MECC64功能

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 作者:痞子衡 ? 2023-12-29 16:11 ? 次閱讀

今天痞子衡給大家分享的是i.MXRT1170 MECC64功能特點及其保護片內OCRAM1,2之道

ECC是 “Error Correcting Code” 的簡寫,ECC 能夠實現錯誤檢查和糾正,含有 ECC 功能的內存一般稱為 ECC 內存,使用了 ECC 內存的系統在穩定性和可靠性上得到很大提升。相比前幾代不帶 ECC 的 i.MXRT10xx 型號,新一代 i.MXRT1170 在ECC上做了全面武裝,從 eFuse 到 FlexRAM,從 OCRAM 到外部存儲空間全都加上了 ECC 功能。如下表所示,不同類型的存儲由不同的 ECC 控制器來守護:

c0e5ad76-a621-11ee-8b88-92fbcf53809c.png

今天痞子衡給大家簡單介紹一下 i.MXRT1170 上用于保護片內 OCRAM1,2 的 MECC64 功能:

一、MECC64功能簡介

1.1 MECC64特點

從用戶角度來說,其實 MECC64 的設計特別簡單,當 MECC64 使能后,任何對受保護的 OCRAM1/2 發起的 AXI 訪問都會被 MECC64 模塊接管,MECC64 組件負責根據用戶寫入的數據產生 ECC 校驗值并將其存放于專用 OCRAM1/2_ECC 里,讀訪問時根據用戶讀取的地址從相應 OCRAM1/2_ECC 地址處獲取 ECC 檢驗值并做檢驗處理后再返回數據。

從模塊框圖里看一個 MECC64 里有四個 ECC 校驗流程(也對應四個 RAM Bank 控制器),這其實是跟單個 512KB OCRAM 由四個 128KB Bank 組成一一對應的,這樣便于轉化 AXI64 接口到 RAM 接口。

1. OCRAM 四個 Bank 掛載在 AXI64 系統總線上,AXI[1:0] 決定了訪問得是 Bank0-3,這樣的設計可以支持對不同 Bank 的讀、寫操作同時進行。
2. ECC 計算單元是 64bits,這 64bits 數據必須在同一 Bank 里,這個設計對 ECC 初始化操作影響較大,因此避免用 memset 函數去做初始化(STR指令是 byte access)。
c0f4c2f2-a621-11ee-8b88-92fbcf53809c.png

MECC64 模塊一共有兩個,分別是 MECC1、MECC2,分別對應保護 OCRAM1、OCRAM2。此外還有兩個專用 OCRAM1_ECC、 OCRAM2_ECC 存放 ECC 校驗值(當 MECC64 沒使能時,OCRAM1/2_ECC 也可當作普通 OCRAM 使用)。

MECC1 base address: 4001_4000h
MECC2 base address: 4001_8000h

1.2 關于MECC64設計細節

關于 MECC64 基本概念,參看《簡析i.MXRT1170 Cortex-M7 FlexRAM ECC功能特點、開啟步驟、性能影響》 的 1.2節,這里不予贅述。

1.2.1 MECC64檢驗能力

MECC64 中每 64bits 數據就會計算出一個 ECC 校驗值(8bits),ECC 算法用得是經典的 Hsiao Hamming。

存儲類型 ECC校驗數據塊大小 ECC校驗值長度 ECC校驗能力
Raw NAND 512 bytes 4 bytes 5-bit檢錯,4-bit糾錯
MECC64 64bits 8bits 2-bit檢錯,1-bit糾錯

1.2.2 ECC錯誤觸發處理

ECC 錯誤分兩種,分別是 1-bit 錯誤和 2-bit 錯誤(針對 64bits 數據而言)。從軟件層面來看,1-bit 錯誤可以不用管,MECC64 模塊會自動糾錯。我們主要處理 2-bit 錯誤,由于 2-bit 錯誤僅能檢錯,無法糾錯,所以發生了這個錯誤,就意味著讀取的數據不可靠了。對于 1/2 bit錯誤,MECC64 均提供了中斷響應(MECCx_INT_IRQn / MECCx_FATAL_INT_IRQn)。

這里還需要特別提醒一下,當讀訪問是 64bits 時,發生 ECC 錯誤僅產生一次 ECC 中斷,但是如果是 32/16/8bits 讀訪問則會連續產生兩次 ECC 中斷,因為 ECC 校驗總是以 64bits 為基本數據單元。

二、開啟MECC64的步驟

2.1 激活MECC64特性

芯片出廠,默認是沒有激活 MECC64 特性的,如果需要開啟 MECC64,需要燒寫 efuse,fusemap 中 0x840[2] 對應的是 MECC_ENABLE bit,我們需要將這個 bit 燒寫成 1,才能激活 MECC64 特性。

c10a8cf4-a621-11ee-8b88-92fbcf53809c.png

2.2 SDK驅動初始化MECC64

然后可以直接利用 SDK 里的 fsl_mecc 驅動對 MECC64 模塊進行初始化,代碼非常簡單,如下示例代碼就是初始化 MECC1,使能 OCRAM1 區域的讀寫 ECC 功能:

#include"fsl_mecc.h"

voidinit_mecc(void)
{
mecc_config_tconfig;
MECC_GetDefaultConfig(&config);

//使能MECC64,并且指明受保護的OCRAM空間
config.enableMecc=true;
config.Ocram1StartAddress=0x20240000;
config.Ocram1EndAddress=0x202BFFFF;

//初始化MECC64模塊,并且初始化OCRAM區域為全0
MECC_Init(MECC1,&config);
}

進 MECC_Init() 函數內部可以看到其對 OCRAM 區域的初始化用得是 64bits 賦值,這樣可以保證正確生成首次 ECC 校驗值,等 OCRAM 區域全部初始化過后,底下就可以對 OCRAM 進行任意數據長度的訪問了。

c1153348-a621-11ee-8b88-92fbcf53809c.png

2.3 AXI方式讀寫OCRAM區域

現在我們直接調試 SDK_2_14_0_MIMXRT1170-EVKBoardsevkbmimxrt1170driver_examplesmeccmecc_single_errorcm7iar 工程,跑到 MECC 初始化結束后,打開 Memory 窗口,可以看到 OCRAM1 區域(0x20240000 - 0x202BFFFF) 已經是全 0,OCRAM1_ECC 區域(0x20340000 - 0x2034FFFF)也是全 0。但是往 0x20240020 處寫入 8 字節測試數據后,并沒有看到 OCRAM1_ECC 區域有數據上的變化,說明 ECC 校驗碼數據是受保護的,僅能被 MECC64 模塊訪問,對用戶不可見。

c126aef2-a621-11ee-8b88-92fbcf53809c.png

三、激活MECC64特性后的影響

前面講到 fusemap 中 0x840[2] 對應的是 MECC_ENABLE bit,這個 bit 被燒錄為 1 后,我們還需要初始化 MECC64 模塊里(打開MECC->PIPE_ECC_EN[ECC_EN])才能真正開啟 OCRAM ECC 功能,但是別忘了芯片參考手冊里 MECC64 章節有一個提醒:

c1325e64-a621-11ee-8b88-92fbcf53809c.png

是的,BootROM 上電運行,第一件事就是檢查 fuse MECC_ENABLE bit 位,如果已經置 1,那就立刻開啟 MECC1 和 MECC2 模塊的 PIPE_ECC_EN[ECC_EN],即啟用 OCRAM ECC,但是 BootROM 并沒有初始化全部 OCRAM1 和 OCRAM2 區域,僅僅初始化了 OCRAM1 前 48KB,這部分是 BootROM 程序的 RW 區。

c140ba4a-a621-11ee-8b88-92fbcf53809c.png

痞子衡找了兩塊 RT1170 板卡做了對比測試(芯片設為 Serial Downloader模式,掛上 JLink 讀取內存),未激活 MECC64 特性的芯片 OCRAM 區域讀取出來全是隨機值,而激活了 MECC64 特性的芯片僅 ROM RW 區被初始化了以及 OCRAMx_ECC 不可訪問外,其余區域全是隨機值(這里的讀取其實不太可靠,畢竟使能了 ECC 后首次訪問必須是寫,然后才能正常被讀寫)。

c1446988-a621-11ee-8b88-92fbcf53809c.png

對于激活了 MECC64 特性之后的芯片,無論是設計下載算法還是 IDE 里的初始化腳本,或者 App 應用里的變量訪問,如果涉及到 ROM RW 區之外的 OCRAM1,OCRAM2 區域,建議一律做先寫后讀處理,否則可能會出現奇怪的錯誤。

至此,i.MXRT1170 MECC64功能特點及其保護片內OCRAM1,2之道痞子衡便介紹完畢了,掌聲在哪里~~~







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16197

    瀏覽量

    177394
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1367

    瀏覽量

    114527
  • ECC
    ECC
    +關注

    關注

    0

    文章

    97

    瀏覽量

    20532

原文標題:MECC64給i.MXRT1170片內OCRAM帶來了哪些變化?

文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    i.MXRT1170 的時鐘架構

    目前 i.MXRT1xxx 系列主要分為 i.MX RT10xx 和 i.MXRT11xx 兩大分支。這兩個分支的時鐘系統設計是有些差異的,不過總體來說,架構差別不大,我們以如下
    發表于 07-08 17:05 ?1010次閱讀

    i.MXRT1170的相關資料分享

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1xxx系列MCU的劃時代新品i.MXRT1170。  自2017年開始,每年的6月25日恩智浦都會在北京舉行
    發表于 11-04 08:38

    i.MXRT1170 eFuse空間訪問可靠性的保護策略是什么

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MXRT1170的eFuse空間訪問可靠性保護策略。  關于i.MXRT系列的eFuse/OTP,痞子衡之
    發表于 12-20 07:56

    i.MXRT1010, 1170型號樣的SNVS GPR寄存器讀寫控制設計資料分享

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1010, 1170型號樣的SNVS GPR寄存器讀寫
    發表于 02-07 07:49

    求助,如何在沒有互聯網的情況通過以太網電纜將個簡單的十六進制數從I.MXRT1170板發送到PC?

    我有I.MXRT1170 板。我是這個板的新手,我想通過以太網電纜向我的 PC 發送個簡單的十六進制數字,如 0x12345678 或任何東西。任何人都可以通過告訴我如何去做以及我可以如何做
    發表于 03-17 07:20

    如何在IMXRT1170 CM7處理器啟用OCRAM MECC

    我正在使用集成 IMX 的 TQ 的 STKa117xL 板。RT1170 處理器系列。我想在 OCRAM1OCRAM2 啟用漢明糾錯 (ECC)。處理器參考手冊表明這是
    發表于 03-23 07:19

    s32k144evb如何與i.MXRT通信?

    你好呀,我正在為 EV Cluster 設計個項目。我計劃將數據從 #S32K144EVB# 發送到 #i.MXRT1170# 以在我的顯示器 #RK055HDMIPI4MAO# 顯示它。我
    發表于 03-29 07:49

    如何確保 i.MXRT1176 從低功耗模式快速恢復?

    我們有個關于 i.MXRT1176 從低功耗模式恢復緩慢的問題引導 ROM 似乎停留在地址 0x223104,大約 15 秒。這似乎是 i.MXRT1170 上調試安全設計的部分,
    發表于 04-06 07:17

    J-Link工具i.MXRT的串行NOR Flash下載算法設計

    本 Release Note 看,痞子衡目前的 J-Link 版本不支持全部 i.MXRT 型號,那么如果想要支持新芯片(比如 i.MXRT1170),是不是定要重新安裝最新 J-
    的頭像 發表于 12-08 10:07 ?1010次閱讀

    痞子衡嵌入式:終于可以放開聊i.MXRT1170這顆劃時代MCU了

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1xxx系列MCU的劃時代新品i.MXRT1170。  自2017年開始,每年的6月25日恩智浦都會在北京舉行
    發表于 10-29 10:21 ?2次下載
    痞子衡嵌入式:終于可以放開聊<b class='flag-5'>一</b>聊<b class='flag-5'>i.MXRT1170</b>這顆劃時代MCU了

    "痞子衡嵌入式:i.MXRT1010, 1170型號樣的SNVS GPR寄存器讀寫控制設計"

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1010 1170型號樣的SNVS GPR寄存器讀寫控
    發表于 12-04 11:36 ?0次下載
    "痞子衡嵌入式:<b class='flag-5'>i.MXRT</b>1010, <b class='flag-5'>1170</b>型號<b class='flag-5'>上</b>不<b class='flag-5'>一</b>樣的SNVS GPR寄存器讀寫控制設計"

    i.MXRT1170串行NOR Flash雙程序可交替啟動設計

    i.MXRT10xx 樣,這里要聊的還是在一片掛載在 FlexSPI 的串行 NOR Flash 里做冗余/雙程序設計,就是下圖中的 image L 和 image H,不涉及
    的頭像 發表于 04-29 15:23 ?1021次閱讀

    MCU時鐘相關功能引腳作用介紹

    目前 i.MXRT1xxx 系列主要分為 i.MXRT10xx 和 i.MXRT11xx 兩大分支。這兩個分支的時鐘系統設計是有些差異的,不過總體來說,架構差別不大,我們以如下
    的頭像 發表于 07-07 09:27 ?5502次閱讀

    i.MXRT1060和RT1170使用高效神經網絡進行多人檢測

    電子發燒友網站提供《在i.MXRT1060和RT1170使用高效神經網絡進行多人檢測.pdf》資料免費下載
    發表于 08-17 10:46 ?0次下載
    在<b class='flag-5'>i.MXRT</b>1060和RT<b class='flag-5'>1170</b><b class='flag-5'>上</b>使用高效神經網絡進行多人檢測

    不同J-Link版本對于i.MXRT1170連接復位后處理行為

    大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是不同J-Link版本對于i.MXRT1170連接復位后處理行為。
    的頭像 發表于 08-08 15:29 ?376次閱讀
    不同J-Link版本對于<b class='flag-5'>i.MXRT1170</b>連接復位后處理行為