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


  你們好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給你們介紹的是恩智浦i.MX RT1170 1bit SPI NOR恢復啓動時間html

  本篇是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執行)。git

1、準備工做

1.1 知識儲備

  在開始測試以前,你須要認真讀一下痞子衡的舊文 《恩智浦i.MX RT1xxx系列MCU啓動那些事(13)- 從Serial(1-bit SPI) EEPROM/NOR恢復啓動》,對i.MXRT從1bit NOR恢復啓動的原理有一個充分認識。github

  不管是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章節的第一段)。spa

  翻看MX25L4006的數據手冊,它的總容量是512KB,Page Size是256bytes,兩種Sector Size(4KB/64KB),在1bit模式下最高速度可達86MHz,所以使用 NXP-MCUBootUtility 下載時作以下配置(Spi Speed最高僅能設20MHz,這主要受限於LPSPI外設):.net

  i.MXRT1170中關於1bit SPI NOR恢復啓動的eFuse配置與以前i.MXRT10xx型號有所不一樣(精簡了SPI Address選項),咱們在下載App時會順便燒錄eFuse。3d

1.5 示波器抓取信號

  一切準備就緒,能夠用示波器抓1bit SPI NOR啓動時間了。通道一監測主芯片POR信號,通道三監測Secondary Flash片選信號(LPSPI1_PCS0),通道四監測LED GPIO信號。爲了更直觀地看從Primary Flash啓動失敗進入Secondary Flash恢復啓動的過程,痞子衡特意加了通道二監測Primary Flash片選信號(FlexSPI_A_SS0)。htm

2、開始測試

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主頁知乎主頁微信公衆號 平臺上。

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

相關文章
相關標籤/搜索