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


  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦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主頁知乎主頁微信公衆號 平臺上。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章