|
痞子衡維護(hù)的 NXP-MCUBootUtility 工具距離上一個大版本(v5.3.0)發(fā)布過去一年了,期間痞子衡也做過三個版本更新,但不足以單獨介紹。這一次痞子衡為大家?guī)砹巳轮匾姹緑6.3.x,這次更新主要是想和大家特別聊聊 ROM 啟動日志這個特性的支持。5 b+ X' M9 ]. Y8 x$ N$ u' p8 I
一、v6.0 - v6.3更新記錄-- v5.3.2 k* L! o; \2 g# h" E
Improvement:
4 H; `# n4 X1 y, J& j1 R 1. [RTyyyy] 使能 RT1180 的 XMCD 支持
% U& S+ ]# u! g) NBufixes:
2 c! C W3 J& R6 g8 H1 D! z7 I 1. [RTyyyy] XMCD配置界面里write dummy cycle設(shè)置不生效- {4 S1 S# @. {. `
-- v6.0.0+ c( d$ g7 D8 P/ E
Features:
! D: c3 E6 a' n8 ^% g- D 1. [Wireless] 支持K32W0x1
. f- s$ Y: f; Q 2. [Wireless] 支持RW61x
5 w; d4 ~; R8 E/ `- R 3. [RW61x] 支持裸應(yīng)用程序文件作為輸入源文件+ M7 T l( P, o1 k# M) e# _0 r
4. [RW61x] 支持UART和USB-HID兩種下載方式(COM端口/USB設(shè)備自動識別)7 ^7 Y }, u+ x% [
5. [RW61x] 支持用于開發(fā)階段的非安全加密啟動(未簽名)7 n# N' E3 b9 j
6. [RW61x] 支持FlexSPI NOR啟動設(shè)備3 ?! `. y, \" j; t; ]9 f9 w
Bufixes:
5 K T9 e1 K- z! i+ m 1. [RTyyyy] 修復(fù)對第二個FlexSPI NOR設(shè)備的下載支持% {& i2 X" F7 _$ U- h- C
2. [RTxxx] 修復(fù)對FlexSPI NOR設(shè)備的下載支持
$ H" W) X2 h" i) O3 k, O/ P-- v6.1.06 h3 W9 s" s5 V
Features:
3 a- q9 O8 U# c J9 k 1. [RTxxx] 支持i.MXRT700 A0+ q+ G+ r4 Y+ V1 n
2. [RT700] 支持裸應(yīng)用程序文件作為輸入源文件
; S3 q4 l2 T8 ] 3. [RT700] 支持UART和USB-HID兩種下載方式(COM端口/USB設(shè)備自動識別
- l( G5 F0 X+ K) F- i 4. [RT700] 支持用于開發(fā)階段的非安全加密啟動(未簽名)
1 f Z/ g2 v% f9 G% H) D) F$ B% D 5. [RT700] 支持XSPI NOR啟動設(shè)備
* U9 L# h7 ^( M. S/ S$ A& k-- v6.2.0
3 k; a& `) L! h" L) IFeatures:8 K2 V9 H' r+ T5 w% _5 z2 t; j5 m
1. [RT700] 支持下載程序進(jìn)第二個XSPI上連接的啟動設(shè)備. N& X, O/ x7 k: ^7 x
Bufixes:
7 b- o1 t! x' q7 x' b9 _# m* p 1. [RT700] 當(dāng)NOR Flash的FDCB區(qū)域非空時,下載可能報錯& _7 G( I1 }2 `8 M: h( I# N
2. [RT700] 當(dāng)待下載程序鏈接在安全SRAM地址時,下載會報錯
, |- T& t( ~' k+ N) G2 G-- v6.3.0
/ Q+ Y6 {1 ]/ o# n0 G1 Y9 XFeatures:
# h' C, U- x# P9 K% f. h 1. [RT] 可以支持獲取并解析ROM啟動日志) f+ H O: Y$ z5 I. g9 v1 @
Improvement:6 g9 [" C; J/ z2 q a1 E
1. [RT] 對FlexSPI NOR設(shè)備做擦除時,可自定義對齊長度4 L5 l! v5 x* f1 C! h
2. [RT1170] 增加對英飛凌S28H系列Octal Flash支持0 x7 I! [ D' d# H
二、幾個不可忽視的更新2.1 初步支持RT700i.MX RT700 是 RT 三位數(shù)家族最新一代旗艦產(chǎn)品,是 i.MX RT500 的升級,可以說是恩智浦有史以來最強(qiáng)大最復(fù)雜的 MCU。鑒于官網(wǎng)還沒有發(fā)布這顆芯片,這里暫不過多介紹了。
2 W5 Z4 L' Q) v; L: N2.2 支持自定義FlexSPI NOR設(shè)備擦除對齊長度我們知道軟件對于 RT 四位數(shù)的啟動設(shè)備下載支持,靠得是加載二級 Flashloader 實現(xiàn)的。無論是一鍵下載模式,還是通用編程器模式,軟件都會將擦除范圍參數(shù)(起始地址,長度)傳遞給 Flashloader 處理,而 Flashloader 里會自動做對齊處理(根據(jù)實際情況,組合 Block 和 Sector 擦除命令,比如粗粒度先用 Block 擦除,細(xì)粒度再用 Sector 擦除)。# V7 b% v6 ?6 r3 o4 Z+ {
上述 Flashloader 里的關(guān)于擦除處理機(jī)制看似很完美,但是對于一些特殊類型的 Flash 可能會失效。比如 Infineon MirrorBit Flash 類型,這種 Flash 僅在某幾個特定 Block 上支持 Sector 擦除,對于這種情況,就不能任由 Flashloader 來管理擦除粒度了,因此需要用戶能夠強(qiáng)制指定擦除對齊長度。+ P$ C1 l/ r0 ?' k& Y
在工具目錄 \src argets\xxx\bltargetconfig.py 文件中僅可見如下定義,我們可以改變這個定義值來設(shè)置擦除對齊長度,對于 Infineon MirrorBit Flash,我們需要將擦除對齊設(shè)為 Block 長度 256KB。2 _' V" e0 E2 q6 U1 v$ y$ r6 Y
xspiNorEraseAlignment = 1 # in byte
' Y' X" @- G {5 M' [$ p2.3 對于RT ROM啟動日志解析支持i.MX RT 系列發(fā)布至今,如果要給客戶支持問題類型做一個總結(jié),基本上啟動相關(guān)問題要占 30%。如果遇到芯片無法啟動問題,除了常規(guī)經(jīng)驗以外,我們還可以通過 ROM 啟動日志來輔助分析。
0 X6 [2 t2 r- y2 M5 {6 J所謂 ROM 啟動日志,就是 ROM 在執(zhí)行過程中記錄的狀態(tài),這個狀態(tài)數(shù)據(jù)被存在在芯片內(nèi)部 RAM 固定位置處(芯片出廠后,這個位置就無法更改了,被寫死在 ROM 代碼里)。如果遇到啟動失敗問題,我們可以讀出日志數(shù)據(jù)予以分析。- D. }" x4 ~. Y) O+ k
軟件支持兩種途徑獲取并解析啟動日志數(shù)據(jù):
& f6 J# k" l6 M4 X4 q途徑一:用戶根據(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 按鈕獲取并解析。 |
|