本篇是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執行)。
大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦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執行)。
在開始測試之前,你需要認真讀一下痞子衡的舊文 《恩智浦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裡去啟動,其過程如下圖所示:

關于時間終點,參考《FlexSPI NOR啟動時間》 裡的1.2節,方法保持一緻。
關于應用程式制作,參考《SEMC NAND啟動時間》 裡的1.3節。
應用程式的下載下傳需借助痞子衡開發的 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。
一切準備就緒,可以用示波器抓1bit SPI NOR啟動時間了。通道一監測主晶片POR信号,通道三監測Secondary Flash片選信号(LPSPI1_PCS0),通道四監測LED GPIO信号。為了更直覺地看從Primary Flash啟動失敗進入Secondary Flash恢複啟動的過程,痞子衡特地加了通道二監測Primary Flash片選信号(FlexSPI_A_SS0)。
在公布結果之前,痞子衡先帶大家分析一下示波器抓取的啟動時間波形,友善大家了解後續表格裡的各項組成。
通道一連接配接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
6.952 ms
0.920 ms
146.928 ms
154.8 ms
根據原理和測試結果,我們有三個結論:
結論1:BootROM時間差不多是固定的,大概在6.9ms 結論2:Primary Device時間需根據實際情況而定,不同的一級啟動裝置以及不同的非完整App都可能影響最終時間 結論3:BootFlash時間跟App長度成正比,跟Flash工作模式(SPI速率)也是正比(雖然沒有實測)
至此,恩智浦i.MX RT1170 1bit SPI NOR恢複啟動時間痞子衡便介紹完畢了,掌聲在哪裡~~~
文章會同時釋出到我的 部落格園首頁、CSDN首頁、知乎首頁、微信公衆号 平台上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。
最後歡迎關注痞子衡個人微信公衆号【痞子衡嵌入式】,一個專注嵌入式技術的公衆号,跟着痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師。
專欄内所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關注痞子衡的Github首頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關于專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回複免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。