痞子衡嵌入式:MCUBootUtility v2.3釋出,這次不再放過任何一款Flash
阿新 • • 發佈:2020-05-29
--
痞子衡的 NXP-MCUBootUtility 開源專案自2018年8月27日第一筆提交至今已有21個月,目前累計程式碼已近50000行。相信這個工具為大家開發 i.MXRT 專案提供了一些便利,聽聞也有不少客戶用這個工具做量產,這是痞子衡堅持維護這個專案的最大意義所在。
時光飛逝,距離上一個版本(v2.2)釋出已有半年了,這一次痞子衡為大家帶來了全新版本v2.3,新版本除了一些常規新i.MXRT型號支援以及bugfix之外,痞子衡特別花了大功夫徹底解決了NOR Flash支援問題,以後不管是什麼Flash統統一網打盡。痞子衡是怎麼做到的?且往下看。
### 一、v2.3更新記錄
![](http://henjay724.com/image/cnblogs/nxpSecBoot_v2.3_rel_note.PNG)
### 二、關於NOR Flash支援的更新
這次關於NOR Flash支援的更新一共有三條,每條都很關鍵。
```text
> 特性: 支援512位元組完整的FDCB配置作為FlexSPI NOR模型
> 改進: 提供保留源image檔案裡的FDCB頭的選項設定
> 修復: 有時候配置flash時無法顯示其Page/Sector/Block Size資訊
```
#### 2.1 正確顯示Flash資訊
先說bugfix,客戶經常反映使用工具連線i.MXRT晶片配置Flash時,明明Flash模型選對了,但是在工具左下角Device Status窗口裡看到的Page/Sector/Block Size全都是"- - - - - - - - ",導致底下無法繼續燒寫image檔案,這個問題從v1.0版本開始就一直存在,並不是工具本身的問題,而是工具依賴的Flashloader機制問題,這次痞子衡用了一個workaround解決了它,這個workaround就是如果無法得到正確的Flash Size屬性,就直接用預設的256Byte Page,4KB Sector,128KB Block,這樣不影響後續操作。
#### 2.2 保留原image的FDCB
再來說改進,我們知道工具從v1.1開始支援含i.MXRT啟動頭(包含FDCB)的image檔案,因為恩智浦SDK裡的XIP工程預設都會包含啟動頭,工具對於這個啟動頭裡的FDCB處理(一鍵啟動操作裡)一直都是解析出來直接拋棄,因為工具會自動生成一個可用的FDCB來替代它,讓我們在板子上實際操作看一下:
以MIMXRT685-EVK (Rev.E)板子為例,板子ISP模式設為USB ISP,然後插上USB OTG(J7),開啟工具,使用預設Flash模型來配置連線(預設Keep FDCB沒有選中),然後將工具自帶的 \NXP-MCUBootUtility-2.3.0\apps\NXP_MIMXRT685-EVK_Rev.E\led_blinky_0x08001000_fdcb.srec 檔案下載進去。
![](http://henjay724.com/image/cnblogs/nxpSecBoot_v2.3_rt685_connect_discard_fdcb.PNG)
開啟 led_blinky_0x08001000_fdcb.srec 檔案與工具回讀的內容進行比對,可以發現兩者的FDCB是不完全相同的,這證明工具確實沒有保留原image檔案裡的FDCB。
![](http://henjay724.com/image/cnblogs/nxpSecBoot_v2.3_rt685_compare_fdcb_diff.PNG)
但是有時候這個FDCB頭是客戶精心設計的,他就想讓工具保留這個FDCB頭,對於v2.2以下版本只能在通用程式設計器介面下載bin檔案,一鍵啟動操作裡不支援,現在v2.3版本里一鍵啟動操作也可以支援了,就在Flash模型配置頁面的【Keep FDCB】設定,勾選它,然後重新連線下載即可。
#### 2.3 完整FDCB配置連線
最後重點聊一聊本次的最重大更新,完整FDCB配置連線。在Flash模型配置頁面,以前都只能設定一些精簡的option引數來配置Flash,這種方式僅能支援含SFDP表的Flash,並且很多FlexSPI屬性配置都無法設(比如DQS訊號來源等),全新v2.3版本增加了Complete_FDCB選項,選擇這個,便可以進一步點選【Complete FDCB Configuration (512bytes)】按鈕進到FDCB配置頁面。
![](http://henjay724.com/image/cnblogs/nxpSecBoot_v2.3_rt685_sel_complete_fdcb.PNG)
在FDCB配置頁面,你可以盡情設定那些引數,這些引數都來源於恩智浦SDK包原始檔裡的 flexspi_mem_config_t 結構體,每個引數具體定義詳見晶片手冊的ROM章節,使用這個完整FDCB配置的朋友需要對FlexSPI外設有一定了解。
![](http://henjay724.com/image/cnblogs/nxpSecBoot_v2.3_rt685_complete_fdcb_cfg.PNG)
使用完整FDCB配置的最大好處是無論Flash是否含有SFDP,我們現在都可以正常訪問配置了,比如我們可以用工具目錄下預存的 \NXP-MCUBootUtility-2.3.0\gen\fdcb_file\cfg_fdcb_RTxxx_1bit_sdr_flashB.bin 來重新連線,事實上這個fdcb配置檔案幾乎適用所有掛在RT600 FlexSPI PortB上的Flash型號(假設Flash預設工作在1bit SDR模式),因為它配置的是1bit SDR模式來訪問Flash。
至此,這次更新的主要特性便介紹完了。MCUBootUtility專案地址為 https://github.com/JayHeng/NXP-MCUBootUtility, 雖然當前版本(v2.3.0)功能已經非常完備,你還是可以在此基礎上再新增自己想要的功能。如此神器,還不快快去下載試用?
### 歡迎訂閱
文章會同時釋出到我的 [部落格園主頁](https://www.cnblogs.com/henjay724/)、[CSDN主頁](https://blog.csdn.net/Henjay724)、[微信公眾號](http://weixin.sogou.com/weixin?type=1&query=痞子衡嵌入式) 平臺上。
微信搜尋"__痞子衡嵌入式__"或者掃描下面二維碼,就可以在手機上第一時間看了哦。
![](http://henjay724.com/image/github/pzhMcu_qrcode_258x2