|
痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v5.3.0)发布过去一年了,期间痞子衡也做过三个版本更新,但不足以单独介绍。这一次痞子衡为大家带来了全新重要版本v6.3.x,这次更新主要是想和大家特别聊聊 ROM 启动日志这个特性的支持。# i0 Q9 E0 _0 V3 t
一、v6.0 - v6.3更新记录-- v5.3.29 F A8 r( I' d7 C( u
Improvement:0 J% H& I. K" K' i/ A$ ~
1. [RTyyyy] 使能 RT1180 的 XMCD 支持
4 K$ E0 O w: c1 y1 k" Q( YBufixes:
2 g; i8 t, [0 a, @4 J 1. [RTyyyy] XMCD配置界面里write dummy cycle设置不生效
! S9 v, M: Z" p3 u" l- s-- v6.0.0
* b h T1 j3 l" t4 g+ yFeatures:
1 ^% X4 j$ A& @, t 1. [Wireless] 支持K32W0x1
) B- r( ^& ^% D0 V: y 2. [Wireless] 支持RW61x
, x. D, ^; y6 U* C& c 3. [RW61x] 支持裸应用程序文件作为输入源文件
6 V) `3 C. D/ z1 D( v, N4 o 4. [RW61x] 支持UART和USB-HID两种下载方式(COM端口/USB设备自动识别), m8 \6 m/ m$ |( D8 i1 H; |4 q
5. [RW61x] 支持用于开发阶段的非安全加密启动(未签名), f2 t) {5 R" n! M
6. [RW61x] 支持FlexSPI NOR启动设备
6 |. B" d6 b3 G0 pBufixes:' o, w! e. O; x# f1 b* s h
1. [RTyyyy] 修复对第二个FlexSPI NOR设备的下载支持4 u/ ^5 X [8 W
2. [RTxxx] 修复对FlexSPI NOR设备的下载支持/ P' x& d1 H2 L" t" D! |3 f
-- v6.1.06 w* w/ f" e: r" d: [
Features:$ }5 r; w4 I* i2 z$ a
1. [RTxxx] 支持i.MXRT700 A0! c4 Y t5 U7 y3 B+ D7 p2 [) j
2. [RT700] 支持裸应用程序文件作为输入源文件
: I6 v& B6 |8 O* }5 K1 {" a4 P9 Q0 i 3. [RT700] 支持UART和USB-HID两种下载方式(COM端口/USB设备自动识别, X! B, L/ m( x+ Y
4. [RT700] 支持用于开发阶段的非安全加密启动(未签名)
/ W2 ^# U& U5 p# f( e 5. [RT700] 支持XSPI NOR启动设备
& C( _7 z" |0 y* D-- v6.2.0% P$ p& u7 ?; z9 Y3 u& r
Features:" s* _8 }7 a9 o- _! d3 u( w0 H# [
1. [RT700] 支持下载程序进第二个XSPI上连接的启动设备
, i. @' @9 Q, @% L5 {7 ~& {( D# F; J& Y1 vBufixes:
' G% k B1 e' R4 k% ^8 d, r& w 1. [RT700] 当NOR Flash的FDCB区域非空时,下载可能报错( w5 R* b6 c; F& G+ p+ ^7 \2 }& P4 U5 w
2. [RT700] 当待下载程序链接在安全SRAM地址时,下载会报错* Z9 \" Q* ^3 z, A0 d1 t6 Q1 N
-- v6.3.08 p6 H7 I/ ?6 G) r+ w. ^3 E1 B
Features:
: I0 S( Q/ p1 N& m; v. K3 u 1. [RT] 可以支持获取并解析ROM启动日志0 N. Z- {* h" v9 ^ C% I6 W- S: u% L
Improvement:
2 f" f. A$ C. M& @) ] 1. [RT] 对FlexSPI NOR设备做擦除时,可自定义对齐长度3 f! M3 O# D: M2 g% r& K: e, w
2. [RT1170] 增加对英飞凌S28H系列Octal Flash支持
1 m2 x* W! a2 a- O7 l. P二、几个不可忽视的更新2.1 初步支持RT700i.MX RT700 是 RT 三位数家族最新一代旗舰产品,是 i.MX RT500 的升级,可以说是恩智浦有史以来最强大最复杂的 MCU。鉴于官网还没有发布这颗芯片,这里暂不过多介绍了。
6 C$ H# g) z4 J/ B! l4 B2.2 支持自定义FlexSPI NOR设备擦除对齐长度我们知道软件对于 RT 四位数的启动设备下载支持,靠得是加载二级 Flashloader 实现的。无论是一键下载模式,还是通用编程器模式,软件都会将擦除范围参数(起始地址,长度)传递给 Flashloader 处理,而 Flashloader 里会自动做对齐处理(根据实际情况,组合 Block 和 Sector 擦除命令,比如粗粒度先用 Block 擦除,细粒度再用 Sector 擦除)。 h/ d( P# R: }, F
上述 Flashloader 里的关于擦除处理机制看似很完美,但是对于一些特殊类型的 Flash 可能会失效。比如 Infineon MirrorBit Flash 类型,这种 Flash 仅在某几个特定 Block 上支持 Sector 擦除,对于这种情况,就不能任由 Flashloader 来管理擦除粒度了,因此需要用户能够强制指定擦除对齐长度。
+ } I1 }2 u% X1 Y, ^. W- ^) T" g在工具目录 \src argets\xxx\bltargetconfig.py 文件中仅可见如下定义,我们可以改变这个定义值来设置擦除对齐长度,对于 Infineon MirrorBit Flash,我们需要将擦除对齐设为 Block 长度 256KB。5 z# d3 h6 V5 {7 f! i! N
xspiNorEraseAlignment = 1 # in byte8 c- @" @% y% c, S" M m; h5 [; A
2.3 对于RT ROM启动日志解析支持i.MX RT 系列发布至今,如果要给客户支持问题类型做一个总结,基本上启动相关问题要占 30%。如果遇到芯片无法启动问题,除了常规经验以外,我们还可以通过 ROM 启动日志来辅助分析。
- h& u& K6 M; Z+ n0 j$ M所谓 ROM 启动日志,就是 ROM 在执行过程中记录的状态,这个状态数据被存在在芯片内部 RAM 固定位置处(芯片出厂后,这个位置就无法更改了,被写死在 ROM 代码里)。如果遇到启动失败问题,我们可以读出日志数据予以分析。
6 }5 ]0 x g. C* _软件支持两种途径获取并解析启动日志数据:5 g4 M' I* K9 C, I2 k
途径一:用户根据界面里 Log Start, Log Length 信息先读取出日志数据文件(比如用 JLink 去读取),然后在界面 Log Data 框里选取这个日志文件路径,最后点击 View Boot Log 按钮解析。途径二:在芯片启动失败自动转入串行下载模式时,不勾选软件 One Step 模式,单步连接保证芯片处于 Flashloader 模式(便于 blhost 工具读取内部 RAM),直接点击 View Boot Log 按钮获取并解析。 |
|