你們好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給你們介紹的是恩智浦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
在開始測試以前,你須要認真讀一下痞子衡的舊文 《恩智浦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裏去啓動,其過程以下圖所示:微信
關於時間終點,參考《FlexSPI NOR啓動時間》 裏的1.2節,方法保持一致。工具
關於應用程序製做,參考《SEMC NAND啓動時間》 裏的1.3節。測試
應用程序的下載需藉助痞子衡開發的 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
一切準備就緒,能夠用示波器抓1bit SPI NOR啓動時間了。通道一監測主芯片POR信號,通道三監測Secondary Flash片選信號(LPSPI1_PCS0),通道四監測LED GPIO信號。爲了更直觀地看從Primary Flash啓動失敗進入Secondary Flash恢復啓動的過程,痞子衡特意加了通道二監測Primary Flash片選信號(FlexSPI_A_SS0)。htm
在公佈結果以前,痞子衡先帶你們分析一下示波器抓取的啓動時間波形,方便你們理解後續表格裏的各項組成。
通道一鏈接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 |
根據原理和測試結果,咱們有三個結論:
- 結論1:BootROM時間差很少是固定的,大概在6.9ms
- 結論2:Primary Device時間需根據實際狀況而定,不一樣的一級啓動設備以及不一樣的非完整App均可能影響最終時間
- 結論3:BootFlash時間跟App長度成正比,跟Flash工做模式(SPI速率)也是正比(雖然沒有實測)
至此,恩智浦i.MX RT1170 1bit SPI NOR恢復啓動時間痞子衡便介紹完畢了,掌聲在哪裏~~~
文章會同時發佈到個人 博客園主頁、CSDN主頁、知乎主頁、微信公衆號 平臺上。
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就能夠在手機上第一時間看了哦。