痞子衡嵌入式:MCUBootUtility v6.3釋出,支援獲取與解析啟動日誌

痞子衡發表於2024-09-20

--
  痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v5.3.0)釋出過去一年了,期間痞子衡也做過三個版本更新,但不足以單獨介紹。這一次痞子衡為大家帶來了全新重要版本v6.3.x,這次更新主要是想和大家特別聊聊 ROM 啟動日誌這個特性的支援。

一、v6.0 - v6.3更新記錄

-- v5.3.2
Improvement:
    1. [RTyyyy] 使能 RT1180 的 XMCD 支援
Bufixes:
    1. [RTyyyy] XMCD配置介面裡write dummy cycle設定不生效

-- v6.0.0
Features:
    1. [Wireless] 支援K32W0x1
    2. [Wireless] 支援RW61x
    3. [RW61x] 支援裸應用程式檔案作為輸入原始檔
    4. [RW61x] 支援UART和USB-HID兩種下載方式(COM埠/USB裝置自動識別)
    5. [RW61x] 支援用於開發階段的非安全加密啟動(未簽名)
    6. [RW61x] 支援FlexSPI NOR啟動裝置
Bufixes:
    1. [RTyyyy] 修復對第二個FlexSPI NOR裝置的下載支援
    2. [RTxxx] 修復對FlexSPI NOR裝置的下載支援

-- v6.1.0
Features:
    1. [RTxxx] 支援i.MXRT700 A0
    2. [RT700] 支援裸應用程式檔案作為輸入原始檔
    3. [RT700] 支援UART和USB-HID兩種下載方式(COM埠/USB裝置自動識別
    4. [RT700] 支援用於開發階段的非安全加密啟動(未簽名)
    5. [RT700] 支援XSPI NOR啟動裝置

-- v6.2.0
Features:
    1. [RT700] 支援下載程式進第二個XSPI上連線的啟動裝置
Bufixes:
    1. [RT700] 當NOR Flash的FDCB區域非空時,下載可能報錯
    2. [RT700] 當待下載程式連結在安全SRAM地址時,下載會報錯

-- v6.3.0
Features:
    1. [RT] 可以支援獲取並解析ROM啟動日誌
Improvement:
    1. [RT] 對FlexSPI NOR裝置做擦除時,可自定義對齊長度
    2. [RT1170] 增加對英飛凌S28H系列Octal Flash支援

二、幾個不可忽視的更新

2.1 初步支援RT700

  i.MX RT700 是 RT 三位數家族最新一代旗艦產品,是 i.MX RT500 的升級,可以說是恩智浦有史以來最強大最複雜的 MCU。鑑於官網還沒有釋出這顆晶片,這裡暫不過多介紹了。

2.2 支援自定義FlexSPI NOR裝置擦除對齊長度

  我們知道軟體對於 RT 四位數的啟動裝置下載支援,靠得是載入二級 Flashloader 實現的。無論是一鍵下載模式,還是通用程式設計器模式,軟體都會將擦除範圍引數(起始地址,長度)傳遞給 Flashloader 處理,而 Flashloader 裡會自動做對齊處理(根據實際情況,組合 Block 和 Sector 擦除命令,比如粗粒度先用 Block 擦除,細粒度再用 Sector 擦除)。

  上述 Flashloader 裡的關於擦除處理機制看似很完美,但是對於一些特殊型別的 Flash 可能會失效。比如 Infineon MirrorBit Flash 型別,這種 Flash 僅在某幾個特定 Block 上支援 Sector 擦除,對於這種情況,就不能任由 Flashloader 來管理擦除粒度了,因此需要使用者能夠強制指定擦除對齊長度。

  在工具目錄 \src\targets\xxx\bltargetconfig.py 檔案中僅可見如下定義,我們可以改變這個定義值來設定擦除對齊長度,對於 Infineon MirrorBit Flash,我們需要將擦除對齊設為 Block 長度 256KB。

xspiNorEraseAlignment = 1 # in byte

2.3 對於RT ROM啟動日誌解析支援

  i.MX RT 系列釋出至今,如果要給客戶支援問題型別做一個總結,基本上啟動相關問題要佔 30%。如果遇到晶片無法啟動問題,除了常規經驗以外,我們還可以透過 ROM 啟動日誌來輔助分析。

  所謂 ROM 啟動日誌,就是 ROM 在執行過程中記錄的狀態,這個狀態資料被存在在晶片內部 RAM 固定位置處(晶片出廠後,這個位置就無法更改了,被寫死在 ROM 程式碼裡)。如果遇到啟動失敗問題,我們可以讀出日誌資料予以分析。

  軟體支援兩種途徑獲取並解析啟動日誌資料:

  • 途徑一:使用者根據介面裡 Log Start, Log Length 資訊先讀取出日誌資料檔案(比如用 JLink 去讀取),然後在介面 Log Data 框裡選取這個日誌檔案路徑,最後點選 View Boot Log 按鈕解析。
  • 途徑二:在晶片啟動失敗自動轉入序列下載模式時,不勾選軟體 One Step 模式,單步連線保證晶片處於 Flashloader 模式(便於 blhost 工具讀取內部 RAM),直接點選 View Boot Log 按鈕獲取並解析。

  途徑二透過軟體直接從晶片 RAM 裡讀取啟動日誌資料有一個注意點,因為是藉助載入 Flashloader 執行實現的,所以如果 Flashloader 依賴的 RAM 空間與啟動日誌儲存空間有衝突,可能會導致日誌資料損壞。

  至此,這次更新的主要特性便介紹完了。MCUBootUtility專案地址如下。雖然當前版本(v6.3.x)功能已經非常完備,你還是可以在此基礎上再新增自己想要的功能。如此神器,還不快快去下載試用?

  • 地址1: https://github.com/nxp-mcuxpresso/mcu-boot-utility
  • 地址2: https://github.com/JayHeng/NXP-MCUBootUtility
  • 地址3: https://gitee.com/jayheng/NXP-MCUBootUtility

歡迎訂閱

文章會同時釋出到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

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

相關文章