大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1170 1bit SPI NOR恢復啟動時間。
本篇是i.MXRT1170啟動時間評測第三彈了,前兩篇分別給大家評測了Raw NAND啟動時間(基於A0芯片的EVK)、Serial NOR啟動時間(基於B0芯片和EVB),今天痞子衡拿到了B0芯片配套的EVK (Rev.C),其實i.MXRT1170系列EVK還有個區別於i.MXRT10xx系列EVK的地方就是首次放了Secondary Boot Flash(掛在LPSPI接口上),老規矩,痞子衡繼續為大家測一測從LPSPI Flash的恢復啟動時間(這里指在ITCM執行,暫不考慮在SDRAM執行)。
一、准備工作
1.1 知識儲備
在開始測試之前,你需要認真讀一下痞子衡的舊文 《恩智浦i.MX RT1xxx系列MCU啟動那些事(13)- 從Serial(1-bit SPI) EEPROM/NOR恢復啟動》,對i.MXRT從1bit NOR恢復啟動的原理有一個充分認識。
無論是Raw NAND還是Serial NOR,都屬於Primary Flash,它們是一級啟動設備。僅當選中的一級啟動設備中沒有可啟動的App時(比如Flash被誤擦除,比如Flash信號線有干擾,比如開啟了簽名但驗簽失敗等),1bit SPI NOR才會發揮作用,BootROM會從1bit SPI NOR起始地址處加載initial image數據(4KB),再根據initial image里的IVT,Boot Data獲取Application起始地址以及總長度,然后再將Application全部拷貝到相應SRAM里去啟動,其過程如下圖所示:

1.2 時間界定
關於時間終點,參考《FlexSPI NOR啟動時間》 里的1.2節,方法保持一致。
1.3 制作應用程序
關於應用程序制作,參考《SEMC NAND啟動時間》 里的1.3節。
1.4 下載應用程序
應用程序的下載需借助痞子衡開發的 NXP-MCUBootUtility 工具(v2.4版本及以上),EVK上的Flash型號是MX25L4006,並且連接的是主芯片的LPSPI1引腳(注意並不是任意Pinmux的LPSPI1都可以的,具體請查看芯片參考手冊里System Boot章節的第一段)。
翻看MX25L4006的數據手冊,它的總容量是512KB,Page Size是256bytes,兩種Sector Size(4KB/64KB),在1bit模式下最高速度可達86MHz,因此使用 NXP-MCUBootUtility 下載時做如下配置(Spi Speed最高僅能設20MHz,這主要受限於LPSPI外設):
i.MXRT1170中關於1bit SPI NOR恢復啟動的eFuse配置與之前i.MXRT10xx型號有所不同(精簡了SPI Address選項),我們在下載App時會順便燒錄eFuse。
1.5 示波器抓取信號
一切准備就緒,可以用示波器抓1bit SPI NOR啟動時間了。通道一監測主芯片POR信號,通道三監測Secondary Flash片選信號(LPSPI1_PCS0),通道四監測LED GPIO信號。為了更直觀地看從Primary Flash啟動失敗進入Secondary Flash恢復啟動的過程,痞子衡特地加了通道二監測Primary Flash片選信號(FlexSPI_A_SS0)。
二、開始測試
2.1 測試結果
在公布結果之前,痞子衡先帶大家分析一下示波器抓取的啟動時間波形,方便大家理解后續表格里的各項組成。
通道一連接POR引腳,電平拉高是啟動計時的開始,啟動后會先經歷BootROM時間(CM7內核先執行ROM代碼,做一些常規系統初始化,讀取用戶啟動配置(假設啟動設備選的FlexSPI NOR),然后配置好FlexSPI模塊),底下經歷Primary Device時間,即先嘗試讀一下掛在FlexSPI接口上的Flash(先讀FDCB,如果沒有FDCB則啟動失敗),通道二(FlexSPI Flash的片選)信號有短暫的拉低,底下才經歷BootFlash時間(此時開始訪問掛在LPSPI接口上的Flash,從Flash里讀取IVT、BootData以及搬移App,所以你會看到通道三(LPSPI Flash的片選)信號持續拉低了,搬移完成之后便跳轉到App里執行),最后你會看到通道四電平拉高了(App在執行)。
分析完了啟動時間組成,讓我們看結果吧。痞子衡基於App長度一共做了2個測試,結果如下表所示(注:表中結果都是在2.5M次/秒的采樣率下所得):
Flash型號 Timing模式 |
App長度 (bytes) |
App執行位置 | BootROM時間 | PrimaryDevice時間 | BootFlash時間 | 總啟動時間 |
---|---|---|---|---|---|---|
MX25L4006 1bit, SDR, 20MHz |
18066 | ITCM | 6.940 ms | 0.916 ms | 13.88 ms | 21.735 ms |
253586 | ITCM | 6.952 ms | 0.920 ms | 146.928 ms | 154.8 ms |
2.2 結果分析
根據原理和測試結果,我們有三個結論:
- 結論1:BootROM時間差不多是固定的,大概在6.9ms
- 結論2:Primary Device時間需根據實際情況而定,不同的一級啟動設備以及不同的非完整App都可能影響最終時間
- 結論3:BootFlash時間跟App長度成正比,跟Flash工作模式(SPI速率)也是正比(雖然沒有實測)
至此,恩智浦i.MX RT1170 1bit SPI NOR恢復啟動時間痞子衡便介紹完畢了,掌聲在哪里~~~
歡迎訂閱
文章會同時發布到我的 博客園主頁、CSDN主頁、知乎主頁、微信公眾號 平台上。
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。