你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32H5的DA之初体验经验分享(不带 Trust Zone)

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言3 N  ?- H0 V- m) h* a$ t, [
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。0 w4 c( ]4 W( d  s4 b6 J0 m$ ^
4 w8 l1 n+ t9 L( l
由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
' g4 y- p* Q1 x& E0 U' b. N# x! s7 p6 Y
因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。% v6 X2 g$ m% V; u6 k/ D
4 c& ?7 v/ B  @# i, S% N2 g4 r
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。
  e& Y) ?3 [# m  I- ?
  c/ h5 r. d7 n+ B; Y0 Z2 g02准备工作+ d* {; M/ r$ F- \
: u  r0 F3 i8 ~& B- B
微信图片_20240229145309.jpg
, o3 P, `1 ~0 Z, \" G- o" i( l$ c6 U% ?7 W
软件包: STM32Cube_FW_H5_V1.1.0
5 n5 f& ~+ L8 \( R+ T. P" u; W6 w2 z* L7 e( _* f. I' ~$ s
工具:
! U4 W; h) m9 D; i$ J  |/ p$ V• STM32CubeProgrammer v2.14.0$ O$ |5 P) r& Q0 |
• Tera Term 串口终端显示/ s; o" N7 |& Z! n4 v
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)9 W1 @  W: p1 ]& ^$ k# X

2 F# `( b) k1 l3 YIDE: STM32CubeIDE v1.13.0
2 A! D, D" _, J  \5 e7 v# m: _! U( B( v
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。+ g. f: K- @3 _1 [1 M

) D& v3 b2 c: j) O' o: i: C8 Z+ B03生成OBK并测试

" U# S# S9 n8 m& h; t6 G7 i在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
; p5 d$ J. w$ r7 H. ~
; _/ W7 f. g# r' e3.1. 生成 DA OBK 文件和密码文件2 Q2 l$ ^& f  b+ p* g2 L7 \
打开 TPC 工具。8 v7 X( d# x7 T0 t7 k
. ]* j! G9 Z3 K" R
微信图片_20240229145312.jpg % t$ A. [5 `4 E" P/ K# ?! l6 h

( k* L& F4 A- O左边选择 H5, 上方选项卡选择 OBKey, 然后在 xml file 处选择C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEOH563ZI/ROT_Provisioning/DA/Config/DA_ConfigWithPassword.xml, 然后在 Password 处输入你想要设置的密码, 这里我们直接使用默认密码即可。然后在 output file 处设置输出文件, 我们也使用默认即可。最后点击 Generate OBkey 按键, 在 Binary 目录下生成对应的 obk 文件和bin 文件 :
, q  g& S* b/ R" \) f$ G) t3 r  ^, P. l8 x! Y( ]' w8 i  y
微信图片_20240229145315.jpg - q! j) ?# ?9 s% W

7 [9 X7 d( r* R" m$ H- `+ B$ F如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。
4 w& v. i* e1 s
5 z/ \8 e# ~7 f/ s5 s( }7 C3.2. 预配置 DA(provisioning)
! f) P& M' P. A' }3 x接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。
9 a- a: b% w2 A+ e, [7 R/ y5 `( n: D3 w/ x) g
微信图片_20240229145211.jpg
% Y+ E. l: i- J  g7 _# M' Z
7 J! C  ~; t+ ^/ j4 |; S然后将 product state 配置为 provisioning 状态 :
( H! c8 [9 L8 F) k4 L, j9 d
6 \/ [2 c- t5 A0 h) F( C- y3 y
微信图片_20240229145207.jpg - L! o$ x* l3 A. g. y
  ^$ w: i. j+ {- P6 o
然后使用 STM32CubeProgrammer 进行预配置 :
5 T. B/ S1 C/ d8 u, l. v6 T; M) v- p6 r
微信图片_20240229145202.jpg
) a2 c, ~" e7 C  l8 }0 R
5 c' ?, H. I7 b9 P  c1 q! C如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…
9 A; ?3 w- S! v# \
( {( w8 b  _7 \' R( Y+ e
微信图片_20240229145158.jpg & k* l( r" ^! A4 v$ J

" I+ r0 U4 t( |$ t1 w: k: @# M结果将弹出对话框提示预配置成功。
/ L- b: e6 B; R3 \( z
% U8 u/ H0 Q' ~8 `3.3. DA 回退6 Z8 O& i) ~; k4 [% m& P" f8 @* C: U0 X
接下来我们直接使用密码进行 DA 回退…+ z; Y6 o4 j1 r
) |5 O- r4 A$ O, b; \: `# m+ X
微信图片_20240229145155.jpg
* Z1 f. c& V! X- d+ |& U5 _& o( C/ N
如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…
5 S3 [2 V/ C' m3 Q- m
# M4 d& b4 R, q+ i
微信图片_20240229145152.jpg
7 ]( i0 |1 f# C$ R1 z7 t
# w9 H$ g/ A6 \' s) e. j# Y如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin0 W4 E' [4 K+ Z) X/ s
: ~( y% T1 R" V7 q  S- S1 t9 ^
然后点击 Full Regression 按键…& U! A0 }# X9 W9 Q& Y% t7 ]

. L; [5 n7 V% H- v5 J& W9 e
微信图片_20240229145147.jpg 1 k+ ~9 V, M0 j0 [  c

1 t$ T/ n2 ]. r如上图所示, 成功时会弹出提示对话框。
: `7 e5 F5 ^$ _; z7 X
; P9 b6 D+ C! W# z这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
+ l) A, D4 M, ^8 B: a2 J2 X4 D$ d9 E0 m* B
04烧录程序再次测试6 z, b  }+ K, q+ ~# w
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。7 X- Q) t, h" M2 }' m$ S) n" I

- L4 @4 j; z( V# N在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
/ y8 t, U- C! {# M0 T& p
9 w. m* V0 O3 L2 W3 \- {7 m7 K

; x" z/ ], R/ K8 p: o3 J转载自: STM32单片机
% D/ {8 o9 `& \) m如有侵权请联系删除
5 R5 A0 ^6 ~& r6 H; G# N9 e3 P7 x: Q7 J+ k& h# B/ d. R) v. u5 {: |
赞 收藏 评论1 发布时间:2024-2-29 14:59

举报

1个回答
xu@xupt 回答时间:2024-3-3 12:32:53

开发板和不错呀~~~

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版