--

  痞子衡維護的 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主頁知乎主頁微信公眾號 平臺上。

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