痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU啟動那些事(13.A)- LPSPI NOR啟動時間(RT1170)



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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM