痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU啟動那些事(12.A)- uSDHC eMMC啟動時間(RT1170)

痞子衡發表於2024-05-14

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1170 uSDHC eMMC啟動時間

  本篇是 i.MXRT1170 啟動時間評測第五彈,前四篇分別給大家評測了 Raw NAND 啟動時間(基於 MIMXRT1170-EVK_Rev.B)、Serial NOR 啟動時間(基於 MIMXRT1170-EVB_Rev.A2)、1bit SPI NOR 恢復啟動時間(基於 MIMXRT1170-EVK_Rev.C)、Serial NAND 啟動時間(基於 MIMXRT1170-EVKB_Rev.B)。

  關於 i.MXRT 系列從 SD/eMMC 啟動使能方法,痞子衡寫過兩篇文章,分別是 《RT600從eMMC啟動》《RT1050從SD啟動》,文章裡的方法其實是通用整個 i.MXRT 系列的(僅一些細微差異)。最近痞子衡在支援一個 RT1170 客戶,他們使用了 eMMC 啟動,並且將板子寄給了痞子衡幫助除錯問題,趁此機會,痞子衡就在客戶板卡上詳細測試一下 eMMC 啟動時間:

一、準備工作

1.1 知識儲備

  除了依賴的底層資料傳輸介面外設型別不同之外,SD/eMMC 啟動流程和 Serial NAND/Raw NAND 啟動流程幾乎是一致的,因為儲存介質角度而言兩者都是 NAND,這裡就不過多展開了,參考痞子衡前面測評文章 1.1 節。

  不過這裡需要特別注意的是,前面測評的啟動裝置(串並行NOR/NAND)讀寫資料率效能接近於介面速率(當然 NAND 有額外 ECC 校驗時間),但是 SD/eMMC 因為涉及壞塊管理/磨損平衡處理等,裝置內部處理會產生更多時間開銷,所以實際資料讀寫率跟資料介面速率之間存在一定差異,這個差異因廠商產品裡的處理演算法而異,需要翻看裝置晶片資料手冊。

  本次測試客戶板卡上用了一顆來自江波龍的相容 eMMC5.1 標準的 8GB 容量晶片 FEMDME008G-A8A39,在其資料手冊上介面最高速率是 400MBps(HS400模式),但是實際資料讀寫率分別是 290MBps、115MBps。

eMMC 5.1 specification compatibility
- Backward compatible to eMMC 4.41/4.5/5.0

Bus mode
- Data bus width: 1 bit (default), 4 bits, 8 bits
- Data transfer rate: up to 400 MB/s (HS 400)
- MMC I/F Clock frequency: 0~ 200 MHz

1.2 時間界定

  關於時間起點和終點,參考《FlexSPI NOR啟動時間》 裡的1.2節,雖然此次測試用得是客戶板卡,但是時間起點我們只需要選好 POR_B 測量點即可。

1.3 製作應用程式

  關於應用程式製作,參考《Serial NAND啟動時間》 裡的1.3節。其實 Non-XIP 程式製作一直有一個小限制,之前的測評文章裡都沒有特別強調,前段時間痞子衡終於專門寫了篇文章 《Non-XIP App一般連結限制》,大家可以瞭解一下。

1.4 下載應用程式

  應用程式的下載需藉助痞子衡開發的 NXP-MCUBootUtility 工具。由於 8bit eMMC 僅 uSDHC2 支援,客戶一般都將 eMMC 掛在 uSDHC2 引腳上,工具下載配置 eMMC 的時候,主要保證 instance 正確即可,至於其他速度模式方面的選擇,僅跟程式下載速度有關,並不影響 eMMC 啟動時間。

  對 eMMC 啟動時間產生影響得主要是 RT1170 晶片 fuse 裡的如下配置,其中紅框選項是根據硬體情況必設的,籃圈選項是使用者可按自己要求選擇的(這裡也是下一節測試啟動時間的影響因子)。紫框裡決定了 BootROM 執行時的核心主頻,CM7 做主核時預設是 400MHz,可高配到 700MHz,這裡我們不改 BootROM 預設核心頻率配置。

1.5 示波器抓取訊號

  一切準備就緒,可以用示波器抓 eMMC 啟動時間了。這次痞子衡偷了個懶,就測量兩路訊號,一個通道監測主晶片 POR 訊號,另一個通道監測 GPIO 訊號(App 裡會拉低這個 GPIO)。與以往不同的是,這次 GPIO 選得是複用 BOOT_CFG 功能的 pin,這個 pin 加了外部強上拉,下一節測試結果小節裡會有額外有趣發現。

二、開始測試

  在公佈結果之前,痞子衡先帶大家分析一下示波器抓取的啟動時間波形,方便大家理解後續表格裡的各項組成。POR 訊號電壓上升時間比較緩慢,其供電來自於 VDD_1V8,我們時間起點暫取其標準有效值 70% - 1.2V 處。

  此外我們可以看到 GPIO 在 POR 拉高之前早就被拉高,說明 GPIO 上電早於 POR,這樣的硬體設計是符合 i.MXRT 上電取樣時序規範的,痞子衡有一篇文章 《RT離線無法啟動,請先檢視SRC_SBMRx暫存器》 就和這點有關。

2.1 不同App長度測試

  首先做的是不同 App 型別及長度相關的測試,App 分為連結在 ITCM 和 SDRAM 兩種(後者需要使能 BootROM DCD 初始化)。此外由於 SDRAM 空間大,因此測試多種 App 長度。所有的測試均在同一種 Boot Config 配置下,即痞子衡 《NAND型啟動裝置時可用兩級設計縮短啟動時間》 一文裡的配置,這也是該客戶使用的啟動配置。

  從測試結果來看,eMMC 啟動時間在 1MB 以內 App 情況下相差無幾,跟 App 長度不成明顯正比關係。即使是 4MB 以內,也是看不出明顯關係,但是以 4MB 為單位來看,倒是有一定正比關係。

App長度 複製App目標區域 Boot Config配置 測量啟動時間
CFG2[2:1]-Bus Width CFG1[5]-SDMMC Speed CFG1[0]-Fast Boot
24KB ITCM
396MHz@64bit
2'b01 - 8bit DDR 1'b1 - High 1'b0 - Regular ~39.5ms
240KB ~41.5ms
24KB SDRAM
166MHz@32bit
~41.1ms
240KB ~46.7ms
1MB ~53.1ms
2MB ~63.3ms
4MB ~87.4ms
8MB ~133.3ms
16MB ~225.8ms

2.2 不同速度模式測試

  因為 4MB 在 SDRAM 執行 App 有一定代表性,痞子衡就以這個為基礎測試了不同的 Boot Config 配置組合,在 BOOT_CFG1[0] 為 Fast Boot 情況下普遍無法啟動(可能需要更多展開配置)。在 BOOT_CFG1[0] 為 Regular Boot 情況下,High Speed 比 Normal Speed 快近一倍,8-Bit DDR 比 8-Bit SDR 也快近一倍。

App長度 複製App目標區域 Boot Config配置 測量啟動時間
CFG2[2:1]-Bus Width CFG1[5]-SDMMC Speed CFG1[0]-Fast Boot
4MB SDRAM
166MHz@32bit
2'b01 - 8bit SDR 1'b0 - Normal 1'b0 - Regular ~219ms
1'b1 - Fast TBD
1'b1 - High 1'b0 - Regular ~130.6ms
1'b1 - Fast 無法啟動,DAP不可連線
2'b11 - 8bit DDR 1'b0 - Normal 1'b0 - Regular 無法啟動,DAP可連線
1'b1 - Fast TBD
1'b1 - High 1'b0 - Regular ~87.4ms
1'b1 - Fast 無法啟動,DAP不可連線

  至此,恩智浦i.MX RT1170 uSDHC eMMC啟動時間痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時釋出到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。

相關文章