• 正文
    • 一、v6.0 - v6.3更新記錄
    • 二、幾個(gè)不可忽視的更新
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

MCUBootUtility v6.3發(fā)布,支持獲取與解析啟動(dòng)日志

2024/09/23
1356
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

痞子衡維護(hù)的 NXP-MCUBootUtility 工具距離上一個(gè)大版本(v5.3.0)發(fā)布過(guò)去一年了,期間痞子衡也做過(guò)三個(gè)版本更新,但不足以單獨(dú)介紹。這一次痞子衡為大家?guī)?lái)了全新重要版本v6.3.x,這次更新主要是想和大家特別聊聊 ROM 啟動(dòng)日志這個(gè)特性的支持。

一、v6.0 - v6.3更新記錄

-- v5.3.2
Improvement:
    1. [RTyyyy] 使能 RT1180 的 XMCD 支持
Bufixes:
    1. [RTyyyy] XMCD配置界面里write dummy cycle設(shè)置不生效

-- v6.0.0
Features:
    1. [Wireless] 支持K32W0x1
    2. [Wireless] 支持RW61x
    3. [RW61x] 支持裸應(yīng)用程序文件作為輸入源文件
    4. [RW61x] 支持UART和USB-HID兩種下載方式(COM端口/USB設(shè)備自動(dòng)識(shí)別)
    5. [RW61x] 支持用于開(kāi)發(fā)階段的非安全加密啟動(dòng)(未簽名)
    6. [RW61x] 支持FlexSPI NOR啟動(dòng)設(shè)備
Bufixes:
    1. [RTyyyy] 修復(fù)對(duì)第二個(gè)FlexSPI NOR設(shè)備的下載支持
    2. [RTxxx] 修復(fù)對(duì)FlexSPI NOR設(shè)備的下載支持

-- v6.1.0
Features:
    1. [RTxxx] 支持i.MXRT700 A0
    2. [RT700] 支持裸應(yīng)用程序文件作為輸入源文件
    3. [RT700] 支持UART和USB-HID兩種下載方式(COM端口/USB設(shè)備自動(dòng)識(shí)別
    4. [RT700] 支持用于開(kāi)發(fā)階段的非安全加密啟動(dòng)(未簽名)
    5. [RT700] 支持XSPI NOR啟動(dòng)設(shè)備

-- v6.2.0
Features:
    1. [RT700] 支持下載程序進(jìn)第二個(gè)XSPI上連接的啟動(dòng)設(shè)備
Bufixes:
    1. [RT700] 當(dāng)NOR Flash的FDCB區(qū)域非空時(shí),下載可能報(bào)錯(cuò)
    2. [RT700] 當(dāng)待下載程序鏈接在安全SRAM地址時(shí),下載會(huì)報(bào)錯(cuò)

-- v6.3.0
Features:
    1. [RT] 可以支持獲取并解析ROM啟動(dòng)日志
Improvement:
    1. [RT] 對(duì)FlexSPI NOR設(shè)備做擦除時(shí),可自定義對(duì)齊長(zhǎng)度
    2. [RT1170] 增加對(duì)英飛凌S28H系列Octal Flash支持

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

2.1 初步支持RT700

i.MX RT700 是 RT 三位數(shù)家族最新一代旗艦產(chǎn)品,是 i.MX RT500 的升級(jí),可以說(shuō)是恩智浦有史以來(lái)最強(qiáng)大最復(fù)雜的 MCU。鑒于官網(wǎng)還沒(méi)有發(fā)布這顆芯片,這里暫不過(guò)多介紹了。

2.2 支持自定義FlexSPI NOR設(shè)備擦除對(duì)齊長(zhǎng)度

我們知道軟件對(duì)于 RT 四位數(shù)的啟動(dòng)設(shè)備下載支持,靠得是加載二級(jí) Flashloader 實(shí)現(xiàn)的。無(wú)論是一鍵下載模式,還是通用編程器模式,軟件都會(huì)將擦除范圍參數(shù)(起始地址,長(zhǎng)度)傳遞給 Flashloader 處理,而 Flashloader 里會(huì)自動(dòng)做對(duì)齊處理(根據(jù)實(shí)際情況,組合 Block 和 Sector 擦除命令,比如粗粒度先用 Block 擦除,細(xì)粒度再用 Sector 擦除)。

上述 Flashloader 里的關(guān)于擦除處理機(jī)制看似很完美,但是對(duì)于一些特殊類(lèi)型的 Flash 可能會(huì)失效。比如 Infineon MirrorBit Flash 類(lèi)型,這種 Flash 僅在某幾個(gè)特定 Block 上支持 Sector 擦除,對(duì)于這種情況,就不能任由 Flashloader 來(lái)管理擦除粒度了,因此需要用戶(hù)能夠強(qiáng)制指定擦除對(duì)齊長(zhǎng)度。

在工具目錄 srctargetsxxxbltargetconfig.py 文件中僅可見(jiàn)如下定義,我們可以改變這個(gè)定義值來(lái)設(shè)置擦除對(duì)齊長(zhǎng)度,對(duì)于 Infineon MirrorBit Flash,我們需要將擦除對(duì)齊設(shè)為 Block 長(zhǎng)度 256KB。

xspiNorEraseAlignment = 1 # in byte
2.3 對(duì)于RT ROM啟動(dòng)日志解析支持

i.MX RT 系列發(fā)布至今,如果要給客戶(hù)支持問(wèn)題類(lèi)型做一個(gè)總結(jié),基本上啟動(dòng)相關(guān)問(wèn)題要占 30%。如果遇到芯片無(wú)法啟動(dòng)問(wèn)題,除了常規(guī)經(jīng)驗(yàn)以外,我們還可以通過(guò) ROM 啟動(dòng)日志來(lái)輔助分析。

所謂 ROM 啟動(dòng)日志,就是 ROM 在執(zhí)行過(guò)程中記錄的狀態(tài),這個(gè)狀態(tài)數(shù)據(jù)被存在在芯片內(nèi)部 RAM 固定位置處(芯片出廠后,這個(gè)位置就無(wú)法更改了,被寫(xiě)死在 ROM 代碼里)。如果遇到啟動(dòng)失敗問(wèn)題,我們可以讀出日志數(shù)據(jù)予以分析。

軟件支持兩種途徑獲取并解析啟動(dòng)日志數(shù)據(jù):

    途徑一:用戶(hù)根據(jù)界面里 Log Start, Log Length 信息先讀取出日志數(shù)據(jù)文件(比如用 JLink 去讀取),然后在界面 Log Data 框里選取這個(gè)日志文件路徑,最后點(diǎn)擊 View Boot Log 按鈕解析。途徑二:在芯片啟動(dòng)失敗自動(dòng)轉(zhuǎn)入串行下載模式時(shí),不勾選軟件 One Step 模式,單步連接保證芯片處于 Flashloader 模式(便于 blhost 工具讀取內(nèi)部 RAM),直接點(diǎn)擊 View Boot Log 按鈕獲取并解析。

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

    地址1:https://github.com/nxp-mcuxpresso/mcu-boot-utility地址2:https://github.com/JayHeng/NXP-MCUBootUtility地址3:https://gitee.com/jayheng/NXP-MCUBootUtility

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

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