加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 一、v2.3.1 更新記錄
    • 二、兩個(gè)不可忽視的更新
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

MCUBootUtility v2.3.1發(fā)布,解決非空f(shuō)lash無(wú)法下載問(wèn)題

2020/08/26
135
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

痞子衡維護(hù)的 NXP-MCUBootUtility 工具距離上一個(gè)版本(v2.3)發(fā)布過(guò)去 3 個(gè)月了,這一次痞子衡為大家?guī)?lái)了小版本升級(jí) v2.3.1(第一次做 x.y.z 中 z 級(jí)別更新),這個(gè)版本主要有兩個(gè)比較重要的改動(dòng)需要跟大家特別說(shuō)明一下。

一、v2.3.1 更新記錄

二、兩個(gè)不可忽視的更新

> 改進(jìn): 在使用 Flashloader 里擦除操作時(shí),某些情況下需要先檢查目標(biāo)區(qū)域是否為空

> 修復(fù): 當(dāng)連接得到的 flash Page/Sector/Block Size 信息有誤時(shí),無(wú)法做進(jìn)一步下載

2.1 確定指定 Flash 區(qū)域?yàn)榉强蘸笤俨?/strong>

我們知道,工具對(duì)于 i.MXRT1xxx 系列開(kāi)發(fā)板的外掛 Flash 擦寫(xiě)支持是通過(guò)加載二級(jí)

Flashloader 來(lái)實(shí)現(xiàn)的,而 Flashloader 來(lái)自于 SDK 包中的

boardsevkimxrt1xxxbootloader_examplesflashloader 工程。

Flashloader 中集成了完整的 FlexSPI NOR Flash 驅(qū)動(dòng),對(duì)于擦除操作,我們知道很多 Flash 都同時(shí)支持 4KB 和 64KB 擦除粒度,因?yàn)?Flashloader 是因 i.MXRT 芯片而異的,每個(gè)芯片的

具體 Flashloader 對(duì)于擦除的處理不盡相同,目前主要有兩個(gè)策略:

策略 1:永遠(yuǎn)用 64KB 的粒度去做擦除。

策略 2:混合使用 4KB 和 64KB 的粒度來(lái)做擦除,大區(qū)域先用 64KB,到小區(qū)域再用 4KB 細(xì)化。

對(duì)于工具 v1.1 及之前版本,這兩種策略的 Flashloader 配合工具使用都不會(huì)有問(wèn)題。但是從 v1.2 開(kāi)始,工具配合使用策略 1 的 Flashloader 會(huì)有一些問(wèn)題。目前已知 RT1050 在 HAB 加密模式下,一鍵下載 App 后去回讀會(huì)發(fā)現(xiàn)偏移 0x2000 之后本該是 App 的地方全是 0xFF,沒(méi)能正確下載,原因是工具流程里會(huì)在下載完 App 之后寫(xiě)一次 FDCB,而做擦除時(shí)因?yàn)榱6仁?64KB,所以誤擦了已下載的 App。

因此 v2.3.1 里的解決方案是,先判斷 FDCB 區(qū)域是否為全 0xFF,如果是的話(huà),就不做擦除了,直接寫(xiě) FDCB。這個(gè)不是完美的解決方案,最好的方案還是修改 Flashloader 去使用策略 2 的擦除方法。

2.2 不依賴(lài)讀回的 Page/Sector/Block 信息去下載

工具在一鍵下載前首先需要連接上主芯片,在連接過(guò)程中會(huì)在左下角芯片狀態(tài)窗口顯示 Flash 的 Page/Sector/Block 信息,這個(gè)信息是從哪里來(lái)的呢?不同的情況下來(lái)源不同:

情況 1:如果當(dāng)前 Flash 是全空的(或者沒(méi)有 FDCB),那么 Flashloader 會(huì)讀取 Flash 中的 SFDP 表,根據(jù) SFDP 表中的信息(包含 Page/Sector/Block Size)自動(dòng)生成用于啟動(dòng)的 512bytes 的 FDCB 寫(xiě)入 Flash 的起始地址處,并在軟件界面同步顯示。

情況 2:如果 Flash 中已有 FDCB(這個(gè) FDCB 可能來(lái)自于 SDK 里的啟動(dòng)頭,也可能是 Flashloader 讀 SFDP 表生成的),那么 Flashloader 便會(huì)復(fù)用這個(gè)信息,不再重新寫(xiě)入 FDCB。

對(duì)于情況 2 中的 FDCB 來(lái)自于 SDK 里的啟動(dòng)頭,如果啟動(dòng)頭中沒(méi)有填充有效的 Page/Sector/Block Size 信息,那么在工具窗口你會(huì)看到 Page/Sector/Block Size = 0x0/0xFFFFFFFF 的情況下,在這種情況下工具無(wú)法再進(jìn)行后續(xù)下載,因?yàn)?v2.3 之前工具會(huì)用 Page/Sector Size 對(duì)擦除或燒寫(xiě)的長(zhǎng)度做對(duì)齊,顯然無(wú)法用 0x0/0xFFFFFFFF 做有效的對(duì)齊。

v2.3.1 做了改進(jìn),不再?gòu)?qiáng)制用 Page/Sector Size 對(duì)擦除或燒寫(xiě)的長(zhǎng)度做對(duì)齊,因?yàn)?Flashloader 里本身就對(duì)傳入的區(qū)域參數(shù)做了對(duì)齊處理。

至此,這次更新的主要特性便介紹完了。MCUBootUtility 項(xiàng)目地址為 https://github.com/JayHeng/NXP-MCUBootUtility, 雖然當(dāng)前版本(v2.3.1)功能已經(jīng)非常完備,你還是可以在此基礎(chǔ)上再添加自己想要的功能。如此神器,還不快快去下載試用?

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

碩士畢業(yè)于蘇州大學(xué)電子信息學(xué)院,目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)部門(mén),擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。痞子衡會(huì)定期分享嵌入式相關(guān)文章