大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1170 FlexSPI NAND啟動時間。
本篇是 i.MXRT1170 啟動時間評測第四彈,前三篇分別給大家評測了 Raw NAND 啟動時間(基於 MIMXRT1170-EVK_Rev.B)、Serial NOR 啟動時間(基於 MIMXRT1170-EVB_Rev.A2)、1bit SPI NOR 恢復啟動時間(基於 MIMXRT1170-EVK_Rev.C)。最近痞子衡剛寫了篇 《i.MXRT從Serial NAND啟動》,趁熱打鐵,索性在新板卡 MIMXRT1170-EVKB_Rev.B 上再測一下 Serial NAND 的啟動時間(這裡指在 ITCM 執行,暫不考慮在 SDRAM 執行)。
除了依賴的底層外設型別不同之外,Serial NAND 啟動流程與 Raw NAND 啟動流程幾乎是一致的,因為儲存媒介角度而言兩者都是 NAND。我們知道 NAND 中僅能放置 Non-XIP Application,其不支援原地執行,所以需要 BootROM 來完成 Application 拷貝工作(從 NAND 到 ITCM),為了輔助 BootROM 完成工作,我們需要在 NAND 中放一些特殊資料(即下面的 FCB, DBBT, IVT)。
BootROM 首先從 NAND 中讀取 FCB(此時是利用 eFuse 0x940 和 0xC80 裡的簡化時序設定選項),FCB 中含有三類資訊:使用者設定的完整時序設定資料(可選的)、DBBT 位置,IVT 位置。BootROM 首先會檢查是否存在完整時序設定資料,如果有,則使用這個資料重新設定 NAND 存取時序。然後 BootROM 會繼續獲取 DBBT 資料,獲知當前 NAND 的壞塊資訊,接下來便是根據 IVT 資訊獲取 Application 資料完成拷貝(拷貝過程中需要避開壞塊)。
關於時間起點和終點,參考《FlexSPI NOR啟動時間》 裡的1.2節,方法保持一致。EVKB_Rev.B 上時間起點位置 POR 直接引到了 J92-2,無需額外飛線了,不過這個點位有很多電容,會導致電壓上升時間緩慢,影響起點選擇,後面會特別備註。
關於應用程式製作,參考《SEMC NAND啟動時間》 裡的1.3節。這次測試對長度方面做一些優化,程式碼改動後的測試工程編出來大小是 21516 bytes,我們可以用二進位制編輯器開啟 .bin 檔案在後面直接插入一些資料將其湊整成 24KB,按此方法可以多做幾個不同長度的 image。
應用程式的下載需藉助痞子衡開發的 NXP-MCUBootUtility 工具(v5.2.1版本及以上),我們需要對 EVKB 板卡做一些改動,將原 U23 - NOR Flash 改為 GigaDevice GD5F1GQ5UEYIG。
翻看 GD5F1GQ5UEYIG 的資料手冊,它的總容量是 1Gb,Page Size 是 2KB,最高速度可達 133MHz,因此使用 NXP-MCUBootUtility 下載時做如下設定(不同測試,我們僅需調整 Max Frequency 選項即可):
一切準備就緒,可以用示波器抓 NAND 啟動時間了。這次痞子衡偷了個懶,就測量兩路訊號,通道一監測主晶片 POR 訊號,通道二監測 LED GPIO 訊號。
在公佈結果之前,痞子衡先帶大家分析一下示波器抓取的啟動時間波形,方便大家理解後續表格裡的各項組成。POR 訊號電壓上升時間比較緩慢,其供電來自於 VDD_1V8,我們時間起點暫取其標準有效值 70% - 1.2V 處。
現在讓我們看結果吧,痞子衡基於 Flash 速度和 App 長度組合做了很多測試,結果如下表所示(注:表中結果都是在 50M 次/秒的取樣率下所得):
Flash型號 | App長度 | Flash Timing模式 | 測量啟動時間 | 修正啟動時間 |
---|---|---|---|---|
GD5F1GQ5UEYIG | 24KB | 30MHz | 11.66 ms | 10.88 ms |
50MHz | 10.26 ms | 9.48 ms | ||
60MHz | 9.86 ms | 9.08 ms | ||
72MHz | 9.46 ms | 8.68 ms | ||
80MHz | 9.32 ms | 8.54 ms | ||
100MHz | 9.1 ms | 8.32 ms | ||
133MHz | 8.86 ms | 8.08 ms | ||
240KB | 30MHz | 48.06 ms | 47.28 ms | |
50MHz | 34.66 ms | 33.88 ms | ||
60MHz | 29.46 ms | 28.68 ms | ||
72MHz | 26.66 ms | 25.88 ms | ||
80MHz | 24.26 ms | 23.48 ms | ||
100MHz | 22.46 ms | 21.68 ms | ||
133MHz | 21.76 ms | 20.98 ms |
啟動時間包含 BootROM 和 BootFlash 時間,因為這次測試痞子衡沒有拉出 NAND CS# 訊號,所以無法直接測量出 BootROM 時間,但是可以根據結果推算,選取 24KB 和 240KB 在 30MHz 下測試的兩組結果:
BootROM_time + 24KB_60MHz_BootFlash_time = 9.86ms
BootROM_time + 240KB_60MHz_BootFlash_time = 29.46ms
24KB_60MHz_BootFlash_time * 10 = 240KB_60MHz_BootFlash_time(假定)
得出 BootROM_time = 7.68ms
前幾篇測試痞子衡得到的 BootROM 時間都是 6.9ms,看來時間起點 POR 按 70% VDD_1V8 的選擇偏早,應該要往後再移一些,如果修正結果的話,那上表裡的所有結果全部要再減去 (7.68-6.9)ms 才是更精確的啟動時間結果。
至此,恩智浦 i.MX RT1170 FlexSPI NAND 啟動時間痞子衡便介紹完畢了,掌聲在哪裡~~~
文章會同時釋出到我的 部落格園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維條碼,就可以在手機上第一時間看了哦。
最後歡迎關注痞子衡個人微信公眾號【痞子衡嵌入式】,一個專注嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職於某知名外企半導體公司MCU系統部門,擔任嵌入式系統應用工程師。
專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或諮詢業務合作請發郵件至 https://www.cnblogs.com/henjay724/p/[email protected]
可以關注痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式專案。
關於專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回覆免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。