痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v3.3.0)發(fā)布過去 4 個多月了,這一次痞子衡為大家?guī)砹税姹旧?v3.4.0,這個版本主要有幾個非常重要的更新需要跟大家特別說明一下。
一、v3.4更新記錄
Features:
1. 支持下載應(yīng)用程序進主動啟動設(shè)備 - FlexSPI NAND接口Flash
2. 支持對啟動設(shè)備進行全擦操作
Improvements:
1. 支持SDK 2.10及其之后生成的可啟動文件作為源文件
2. 添加更多的串行NOR Flash模型
二、幾個不可忽視的更新
2.1 支持下載串行NAND
i.MXRT 系列支持的啟動設(shè)備種類非常豐富,工具已經(jīng)支持了大部分類型的啟動設(shè)備,這次新增支持的串行 NAND 是所剩不多的未支持設(shè)備類型了。
NAND 相比 NOR 有著容量大、價格便宜的優(yōu)勢,但是因為天然不支持 XiP,所以在 i.MXRT 項目上用得并不廣泛。此外 NAND 還分 Raw NAND 和 串行 NAND,前者問世時間更早一些,在 Linux 世界里有一定群眾基礎(chǔ),因此即使客戶選 NAND 作為啟動設(shè)備,一般也是 Raw NAND 居多。
為何痞子衡這次花費精力去升級工具支持串行 NAND 呢?當然是來生意了,最近有國外客戶選擇了用串行 NAND 作為啟動設(shè)備,但是恩智浦這邊相關(guān)資料較少,想要搞定啟動不太容易,所以痞子衡只能先頂上了,讓工具把串行 NAND 第一時間支持起來。
2.2 支持SDK 2.10.x例程
工具設(shè)計之初本打算僅支持裸應(yīng)用程序,即用戶只需要關(guān)心應(yīng)用程序本身,不用管 i.MXRT 啟動頭(FDCB, IVT, BD等),工具會自動添加合適的啟動頭,但恩智浦 SDK 里的示例例程包含了啟動頭(見工程選項里的 XIP_BOOT_HEADER_ENABLE=1),所以工具(從 v1.1 版本開始)不得不要去支持可啟動應(yīng)用程序源文件。
工具 v1.1 版本發(fā)布之時,當時恩智浦 SDK 版本才 2.3.x,三年過去了,目前 SDK 版本已經(jīng)升級到了 2.10.x。從 SDK 2.10.x 版本開始,啟動頭設(shè)定有了一些變化,IVT 里的 entry 值從中斷向量表首地址變成了復(fù)位函數(shù)地址,這個變化對工具產(chǎn)生了影響,因此工具需要升級支持 IVT.entry 是復(fù)位函數(shù)地址的可啟動程序。
- Note: 當前功能有一個限制,就是假定應(yīng)用程序中斷向量表是以 0x400 對齊的,因為工具需要根據(jù)這個假定來從源程序文件中尋找出中斷向量表地址。
2.3 更多的NOR Flash模型
NOR Flash 模型設(shè)計是工具的一大特色,之前版本沒有把支持的所有廠商型號都羅列出來,只給了一些代表型號。如果模型里沒有客戶選擇的 Flash 型號,很多客戶就不知道該選哪個模型了(其實選相近類型即可,不一定需要廠商一致)。這次升級直接就一步到位了,把該加上的模型全部加上,如果有遺漏,歡迎大家給我留言或者提 issue。
- Note: 模型設(shè)計的前提是這些 Flash 里均包含 SFDP,鑒于有些廠商手冊里標稱包含 SFDP,實際卻沒有的情況,需要選擇 Complete FDCB 來支持。
2.4 支持Flash全擦操作
工具本身也是一個基于 i.MXRT 的通用 Flash 編程器,我們可以對連接到 i.MXRT 的 Flash 進行任意的讀寫擦,之前版本的擦除操作主要通過 Sector Erase 和 Block Erase 命令組合實現(xiàn)的,如果客戶想將 Flash 全部擦除,花費時間較久。為了提高全擦效率,這次新增了一個 Mass Erase 按鈕,即調(diào)用 Chip Erase 命令來實現(xiàn),耗時縮短不少。
至此,這次更新的主要特性便介紹完了。MCUBootUtility項目地址如下。雖然當前版本(v3.4.0)功能已經(jīng)非常完備,你還是可以在此基礎(chǔ)上再添加自己想要的功能。如此神器,還不快快去下載試用?