大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦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主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。