痞子衡嵌入式:MCUBootUtility v3.4發布,支援串列NAND


  痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v3.3.0)發布過去 4 個多月了,這一次痞子衡為大家帶來了版本升級 v3.4.0,這個版本主要有幾個非常重要的更新需要跟大家特別說明一下。

一、v3.4更新記錄

Features:
    1. 支援下載應用程式進主動啟動設備 - FlexSPI NAND介面Flash
    2. 支援對啟動設備進行全擦操作
Improvements:
    1. 支援SDK 2.10及其之後生成的可啟動文件作為源文件
    2. 添加更多的串列NOR Flash模型

二、幾個不可忽視的更新

2.1 支援下載串列NAND

  i.MXRT 系列支援的啟動設備種類非常豐富,工具已經支援了大部分類型的啟動設備,這次新增支援的串列 NAND 是所剩不多的未支援設備類型了。

  NAND 相比 NOR 有著容量大、價格便宜的優勢,但是因為天然不支援 XiP,所以在 i.MXRT 項目上用得並不廣泛。此外 NAND 還分 Raw NAND 和 串列 NAND,前者問世時間更早一些,在 Linux 世界裡有一定群眾基礎,因此即使客戶選 NAND 作為啟動設備,一般也是 Raw NAND 居多。

  為何痞子衡這次花費精力去升級工具支援串列 NAND 呢?當然是來生意了,最近有國外客戶選擇了用串列 NAND 作為啟動設備,但是恩智浦這邊相關資料較少,想要搞定啟動不太容易,所以痞子衡只能先頂上了,讓工具把串列 NAND 第一時間支援起來。

2.2 支援SDK 2.10.x常式

  工具設計之初本打算僅支援裸應用程式,即用戶只需要關心應用程式本身,不用管 i.MXRT 啟動頭(FDCB, IVT, BD等),工具會自動添加合適的啟動頭,但恩智浦 SDK 里的示例常式包含了啟動頭(見工程選項里的 XIP_BOOT_HEADER_ENABLE=1),所以工具(從 v1.1 版本開始)不得不要去支援可啟動應用程式源文件。

  工具 v1.1 版本發布之時,當時恩智浦 SDK 版本才 2.3.x,三年過去了,目前 SDK 版本已經升級到了 2.10.x。從 SDK 2.10.x 版本開始,啟動頭設定有了一些變化,IVT 里的 entry 值從中斷向量表首地址變成了複位函數地址,這個變化對工具產生了影響,因此工具需要升級支援 IVT.entry 是複位函數地址的可啟動程式。

  • Note: 當前功能有一個限制,就是假定應用程式中斷向量表是以 0x400 對齊的,因為工具需要根據這個假定來從源程式文件中尋找出中斷向量表地址。

2.3 更多的NOR Flash模型

  NOR Flash 模型設計是工具的一大特色,之前版本沒有把支援的所有廠商型號都羅列出來,只給了一些代表型號。如果模型里沒有客戶選擇的 Flash 型號,很多客戶就不知道該選哪個模型了(其實選相近類型即可,不一定需要廠商一致)。這次升級直接就一步到位了,把該加上的模型全部加上,如果有遺漏,歡迎大家給我留言或者提 issue。

  • Note: 模型設計的前提是這些 Flash 里均包含 SFDP,鑒於有些廠商手冊里標稱包含 SFDP,實際卻沒有的情況,需要選擇 Complete FDCB 來支援。

2.4 支援Flash全擦操作

  工具本身也是一個基於 i.MXRT 的通用 Flash 編程器,我們可以對連接到 i.MXRT 的 Flash 進行任意的讀寫擦,之前版本的擦除操作主要通過 Sector Erase 和 Block Erase 命令組合實現的,如果客戶想將 Flash 全部擦除,花費時間較久。為了提高全擦效率,這次新增了一個 Mass Erase 按鈕,即調用 Chip Erase 命令來實現,耗時縮短不少。

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

歡迎訂閱

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

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