大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1170 uSDHC eMMC啟動時間。
本篇是 i.MXRT1170 啟動時間評測第五彈,前四篇分別給大家評測了 Raw NAND 啟動時間(基于 MIMXRT1170-EVK_Rev.B)、Serial NOR 啟動時間(基于 MIMXRT1170-EVB_Rev.A2)、1bit SPI NOR 恢復(fù)啟動時間(基于 MIMXRT1170-EVK_Rev.C)、Serial NAND 啟動時間(基于 MIMXRT1170-EVKB_Rev.B)。
關(guān)于 i.MXRT 系列從 SD/eMMC 啟動使能方法,痞子衡寫過兩篇文章,分別是 《RT600從eMMC啟動》、《RT1050從SD啟動》,文章里的方法其實(shí)是通用整個 i.MXRT 系列的(僅一些細(xì)微差異)。最近痞子衡在支持一個 RT1170 客戶,他們使用了 eMMC 啟動,并且將板子寄給了痞子衡幫助調(diào)試問題,趁此機(jī)會,痞子衡就在客戶板卡上詳細(xì)測試一下 eMMC 啟動時間:
一、準(zhǔn)備工作
1.1 知識儲備
除了依賴的底層數(shù)據(jù)傳輸接口外設(shè)類型不同之外,SD/eMMC 啟動流程和 Serial NAND/Raw NAND 啟動流程幾乎是一致的,因?yàn)榇鎯橘|(zhì)角度而言兩者都是 NAND,這里就不過多展開了,參考痞子衡前面測評文章 1.1 節(jié)。
不過這里需要特別注意的是,前面測評的啟動設(shè)備(串并行NOR/NAND)讀寫數(shù)據(jù)率性能接近于接口速率(當(dāng)然 NAND 有額外 ECC 校驗(yàn)時間),但是 SD/eMMC 因?yàn)樯婕皦膲K管理/磨損平衡處理等,設(shè)備內(nèi)部處理會產(chǎn)生更多時間開銷,所以實(shí)際數(shù)據(jù)讀寫率跟數(shù)據(jù)接口速率之間存在一定差異,這個差異因廠商產(chǎn)品里的處理算法而異,需要翻看設(shè)備芯片數(shù)據(jù)手冊。
本次測試客戶板卡上用了一顆來自江波龍的兼容 eMMC5.1 標(biāo)準(zhǔn)的 8GB 容量芯片 FEMDME008G-A8A39,在其數(shù)據(jù)手冊上接口最高速率是 400MBps(HS400模式),但是實(shí)際數(shù)據(jù)讀寫率分別是 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 時間界定
關(guān)于時間起點(diǎn)和終點(diǎn),參考《FlexSPI NOR啟動時間》 里的1.2節(jié),雖然此次測試用得是客戶板卡,但是時間起點(diǎn)我們只需要選好 POR_B 測量點(diǎn)即可。
1.3 制作應(yīng)用程序
關(guān)于應(yīng)用程序制作,參考《Serial NAND啟動時間》 里的1.3節(jié)。其實(shí) Non-XIP 程序制作一直有一個小限制,之前的測評文章里都沒有特別強(qiáng)調(diào),前段時間痞子衡終于專門寫了篇文章 《Non-XIP App一般鏈接限制》,大家可以了解一下。
1.4 下載應(yīng)用程序
應(yīng)用程序的下載需借助痞子衡開發(fā)的 NXP-MCUBootUtility 工具。由于 8bit eMMC 僅 uSDHC2 支持,客戶一般都將 eMMC 掛在 uSDHC2 引腳上,工具下載配置 eMMC 的時候,主要保證 instance 正確即可,至于其他速度模式方面的選擇,僅跟程序下載速度有關(guān),并不影響 eMMC 啟動時間。
對 eMMC 啟動時間產(chǎn)生影響得主要是 RT1170 芯片 fuse 里的如下配置,其中紅框選項(xiàng)是根據(jù)硬件情況必設(shè)的,籃圈選項(xiàng)是用戶可按自己要求選擇的(這里也是下一節(jié)測試啟動時間的影響因子)。紫框里決定了 BootROM 運(yùn)行時的內(nèi)核主頻,CM7 做主核時默認(rèn)是 400MHz,可高配到 700MHz,這里我們不改 BootROM 默認(rèn)內(nèi)核頻率配置。
1.5 示波器抓取信號
一切準(zhǔn)備就緒,可以用示波器抓 eMMC 啟動時間了。這次痞子衡偷了個懶,就測量兩路信號,一個通道監(jiān)測主芯片 POR 信號,另一個通道監(jiān)測 GPIO 信號(App 里會拉低這個 GPIO)。與以往不同的是,這次 GPIO 選得是復(fù)用 BOOT_CFG 功能的 pin,這個 pin 加了外部強(qiáng)上拉,下一節(jié)測試結(jié)果小節(jié)里會有額外有趣發(fā)現(xiàn)。
二、開始測試
在公布結(jié)果之前,痞子衡先帶大家分析一下示波器抓取的啟動時間波形,方便大家理解后續(xù)表格里的各項(xiàng)組成。POR 信號電壓上升時間比較緩慢,其供電來自于 VDD_1V8,我們時間起點(diǎn)暫取其標(biāo)準(zhǔn)有效值 70% - 1.2V 處。
此外我們可以看到 GPIO 在 POR 拉高之前早就被拉高,說明 GPIO 上電早于 POR,這樣的硬件設(shè)計是符合 i.MXRT 上電采樣時序規(guī)范的,痞子衡有一篇文章 《RT離線無法啟動,請先查看SRC_SBMRx寄存器》 就和這點(diǎn)有關(guān)。
2.1 不同App長度測試
首先做的是不同 App 類型及長度相關(guān)的測試,App 分為鏈接在 ITCM 和 SDRAM 兩種(后者需要使能 BootROM DCD 初始化)。此外由于 SDRAM 空間大,因此測試多種 App 長度。所有的測試均在同一種 Boot Config 配置下,即痞子衡 《NAND型啟動設(shè)備時可用兩級設(shè)計縮短啟動時間》 一文里的配置,這也是該客戶使用的啟動配置。
從測試結(jié)果來看,eMMC 啟動時間在 1MB 以內(nèi) App 情況下相差無幾,跟 App 長度不成明顯正比關(guān)系。即使是 4MB 以內(nèi),也是看不出明顯關(guān)系,但是以 4MB 為單位來看,倒是有一定正比關(guān)系。
2.2 不同速度模式測試
因?yàn)?4MB 在 SDRAM 執(zhí)行 App 有一定代表性,痞子衡就以這個為基礎(chǔ)測試了不同的 Boot Config 配置組合,在 BOOT_CFG1[0] 為 Fast Boot 情況下普遍無法啟動(可能需要更多展開配置)。在 BOOT_CFG1[0] 為 Regular Boot 情況下,High Speed 比 Normal Speed 快近一倍,8-Bit DDR 比 8-Bit SDR 也快近一倍。
至此,恩智浦i.MX RT1170 uSDHC eMMC啟動時間痞子衡便介紹完畢了,掌聲在哪里~~~