|
痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v5.3.0)發(fā)布過去一年了,期間痞子衡也做過三個版本更新,但不足以單獨介紹。這一次痞子衡為大家?guī)砹巳轮匾姹緑6.3.x,這次更新主要是想和大家特別聊聊 ROM 啟動日志這個特性的支持。
+ a8 h9 P' M, c( d( Y一、v6.0 - v6.3更新記錄-- v5.3.2
$ ~( s/ x5 O4 M* _. V/ P5 EImprovement:$ m2 w9 k {( G& c. ~
1. [RTyyyy] 使能 RT1180 的 XMCD 支持
+ w$ f1 ^" g2 I- n0 f: T( R' `Bufixes:
( B& `& V" j9 E4 ~ 1. [RTyyyy] XMCD配置界面里write dummy cycle設置不生效- g. V2 Z) a/ u: E! }
-- v6.0.0
. h0 j& l. A0 R; K8 GFeatures:
r" A9 s+ y$ \3 \ 1. [Wireless] 支持K32W0x15 [, s7 s2 I" l2 `- }0 K* ?3 }
2. [Wireless] 支持RW61x1 c6 N4 i4 `/ C
3. [RW61x] 支持裸應用程序文件作為輸入源文件+ l# O1 u {3 X' i& z
4. [RW61x] 支持UART和USB-HID兩種下載方式(COM端口/USB設備自動識別)/ P& X& D9 A+ b
5. [RW61x] 支持用于開發(fā)階段的非安全加密啟動(未簽名) D3 c3 _4 t' ]" l O- _! _) e
6. [RW61x] 支持FlexSPI NOR啟動設備- a+ T( y% }- l& |) Y' R
Bufixes:
' H) t4 m2 O! n+ f- Q 1. [RTyyyy] 修復對第二個FlexSPI NOR設備的下載支持
- T4 P' z5 M# ` 2. [RTxxx] 修復對FlexSPI NOR設備的下載支持3 X8 J ?1 m |4 @' L2 k, z
-- v6.1.0
+ g; j, {6 q0 D% e8 \' IFeatures:; w6 C: w; s1 O. f) @
1. [RTxxx] 支持i.MXRT700 A0
4 }' j( X: i* R8 m1 ] 2. [RT700] 支持裸應用程序文件作為輸入源文件) V. X1 T o2 u" D7 |
3. [RT700] 支持UART和USB-HID兩種下載方式(COM端口/USB設備自動識別 |% J! { L* L4 U- p7 o5 ?
4. [RT700] 支持用于開發(fā)階段的非安全加密啟動(未簽名)
* C/ u# w$ `5 {. M; e( K 5. [RT700] 支持XSPI NOR啟動設備
5 q% e$ _, \" x-- v6.2.0
" u, o4 n* n# _Features:
4 K4 E# E, b5 o! x: m 1. [RT700] 支持下載程序進第二個XSPI上連接的啟動設備
3 ?4 n$ o# f3 n/ `Bufixes:. h/ V. g, P/ w0 l& H6 @9 c' _
1. [RT700] 當NOR Flash的FDCB區(qū)域非空時,下載可能報錯
# k; r4 S( m$ w& U( S 2. [RT700] 當待下載程序鏈接在安全SRAM地址時,下載會報錯
8 Z- O- W5 ?+ h& a {-- v6.3.0$ J* i5 a( Q( S) e: T* `
Features:
' d. u, T3 m( h; q# n M5 H 1. [RT] 可以支持獲取并解析ROM啟動日志
M8 w! A+ p. n* o; ?; u' f7 kImprovement:7 n" u+ @1 ^1 ?6 O+ K' u
1. [RT] 對FlexSPI NOR設備做擦除時,可自定義對齊長度) [1 e- X$ s: T* D$ S. V
2. [RT1170] 增加對英飛凌S28H系列Octal Flash支持
" H0 E- m6 E7 K2 R: O. w5 L5 Z5 D二、幾個不可忽視的更新2.1 初步支持RT700i.MX RT700 是 RT 三位數(shù)家族最新一代旗艦產(chǎn)品,是 i.MX RT500 的升級,可以說是恩智浦有史以來最強大最復雜的 MCU。鑒于官網(wǎng)還沒有發(fā)布這顆芯片,這里暫不過多介紹了。
0 ?* r T4 f4 F2.2 支持自定義FlexSPI NOR設備擦除對齊長度我們知道軟件對于 RT 四位數(shù)的啟動設備下載支持,靠得是加載二級 Flashloader 實現(xiàn)的。無論是一鍵下載模式,還是通用編程器模式,軟件都會將擦除范圍參數(shù)(起始地址,長度)傳遞給 Flashloader 處理,而 Flashloader 里會自動做對齊處理(根據(jù)實際情況,組合 Block 和 Sector 擦除命令,比如粗粒度先用 Block 擦除,細粒度再用 Sector 擦除)。
9 ]2 d9 n4 z& h1 b) Z8 \上述 Flashloader 里的關于擦除處理機制看似很完美,但是對于一些特殊類型的 Flash 可能會失效。比如 Infineon MirrorBit Flash 類型,這種 Flash 僅在某幾個特定 Block 上支持 Sector 擦除,對于這種情況,就不能任由 Flashloader 來管理擦除粒度了,因此需要用戶能夠強制指定擦除對齊長度。3 R9 r! C0 l0 u
在工具目錄 \src argets\xxx\bltargetconfig.py 文件中僅可見如下定義,我們可以改變這個定義值來設置擦除對齊長度,對于 Infineon MirrorBit Flash,我們需要將擦除對齊設為 Block 長度 256KB。. s* N& [& R2 g2 B1 B
xspiNorEraseAlignment = 1 # in byte, H- x. ?/ R' i5 V( [: F# B4 V3 d
2.3 對于RT ROM啟動日志解析支持i.MX RT 系列發(fā)布至今,如果要給客戶支持問題類型做一個總結,基本上啟動相關問題要占 30%。如果遇到芯片無法啟動問題,除了常規(guī)經(jīng)驗以外,我們還可以通過 ROM 啟動日志來輔助分析。, ^1 X; c3 `7 m- [
所謂 ROM 啟動日志,就是 ROM 在執(zhí)行過程中記錄的狀態(tài),這個狀態(tài)數(shù)據(jù)被存在在芯片內(nèi)部 RAM 固定位置處(芯片出廠后,這個位置就無法更改了,被寫死在 ROM 代碼里)。如果遇到啟動失敗問題,我們可以讀出日志數(shù)據(jù)予以分析。" w0 Q0 \8 F- V& z4 j) v
軟件支持兩種途徑獲取并解析啟動日志數(shù)據(jù):9 u3 R- ], @' q; r
途徑一:用戶根據(jù)界面里 Log Start, Log Length 信息先讀取出日志數(shù)據(jù)文件(比如用 JLink 去讀取),然后在界面 Log Data 框里選取這個日志文件路徑,最后點擊 View Boot Log 按鈕解析。途徑二:在芯片啟動失敗自動轉(zhuǎn)入串行下載模式時,不勾選軟件 One Step 模式,單步連接保證芯片處于 Flashloader 模式(便于 blhost 工具讀取內(nèi)部 RAM),直接點擊 View Boot Log 按鈕獲取并解析。 |
|