電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 203|回復(fù): 0
收起左側(cè)

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

[復(fù)制鏈接]

166

主題

166

帖子

1453

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1453
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-20 11:31:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
痞子衡維護(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 初步支持RT700i.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ì)于一些特殊類型的 Flash 可能會(huì)失效。比如 Infineon MirrorBit Flash 類型,這種 Flash 僅在某幾個(gè)特定 Block 上支持 Sector 擦除,對(duì)于這種情況,就不能任由 Flashloader 來(lái)管理擦除粒度了,因此需要用戶能夠強(qiáng)制指定擦除對(duì)齊長(zhǎng)度。
在工具目錄 \src        argets\xxx\bltargetconfig.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ā)布至今,如果要給客戶支持問(wèn)題類型做一個(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ù):
  • 途徑一:用戶根據(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 按鈕獲取并解析。
  • 發(fā)表回復(fù)

    本版積分規(guī)則

    關(guān)閉

    站長(zhǎng)推薦上一條 /1 下一條


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表