痞子衡嵌入式:MCUBootUtility v2.3發佈,此次再也不放過任何一款Flash

--
  痞子衡的 NXP-MCUBootUtility 開源項目自2018年8月27日第一筆提交至今已有21個月,目前累計代碼已近50000行。相信這個工具爲你們開發 i.MXRT 項目提供了一些便利,聽聞也有很多客戶用這個工具作量產,這是痞子衡堅持維護這個項目的最大意義所在。git

  時光飛逝,距離上一個版本(v2.2)發佈已有半年了,這一次痞子衡爲你們帶來了全新版本v2.3,新版本除了一些常規新i.MXRT型號支持以及bugfix以外,痞子衡特別花了大功夫完全解決了NOR Flash支持問題,之後不論是什麼Flash通通一網打盡。痞子衡是怎麼作到的?且往下看。github

1、v2.3更新記錄

2、關於NOR Flash支持的更新

  此次關於NOR Flash支持的更新一共有三條,每條都很關鍵。編程

> 特性: 支持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來替代它,讓咱們在板子上實際操做看一下:app

  以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 文件下載進去。工具

  打開 led_blinky_0x08001000_fdcb.srec 文件與工具回讀的內容進行比對,能夠發現二者的FDCB是不徹底相同的,這證實工具確實沒有保留原image文件裏的FDCB。flex

  可是有時候這個FDCB頭是客戶精心設計的,他就想讓工具保留這個FDCB頭,對於v2.2如下版本只能在通用編程器界面下載bin文件,一鍵啓動操做裏不支持,如今v2.3版本里一鍵啓動操做也能夠支持了,就在Flash模型配置頁面的【Keep FDCB】設置,勾選它,而後從新鏈接下載便可。.net

2.3 完整FDCB配置鏈接

  最後重點聊一聊本次的最重大更新,完整FDCB配置鏈接。在Flash模型配置頁面,之前都只能設置一些精簡的option參數來配置Flash,這種方式僅能支持含SFDP表的Flash,而且不少FlexSPI屬性配置都沒法設(好比DQS信號來源等),全新v2.3版本增長了Complete_FDCB選項,選擇這個,即可以進一步點擊【Complete FDCB Configuration (512bytes)】按鈕進到FDCB配置頁面。設計

  在FDCB配置頁面,你能夠盡情設置那些參數,這些參數都來源於恩智浦SDK包源文件裏的 flexspi_mem_config_t 結構體,每一個參數具體定義詳見芯片手冊的ROM章節,使用這個完整FDCB配置的朋友須要對FlexSPI外設有必定了解。3d

  使用完整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)功能已經很是完備,你仍是能夠在此基礎上再添加本身想要的功能。如此神器,還不快快去下載試用?

歡迎訂閱

文章會同時發佈到個人 博客園主頁CSDN主頁微信公衆號 平臺上。

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

相關文章
相關標籤/搜索