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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言. g7 Y3 {6 i7 X6 M# v" b' f
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。( Z& h5 M# v( ^+ m4 w& G
; {. h1 D% `' V# _: B3 _! g; ?
由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
+ d7 |) U, U, L0 i
5 o6 {( B* j* |* v! g' j+ s( V! j6 f因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。
9 O0 C$ c  C4 B6 T  R& J. N) G: O, m
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。0 }' r2 E5 H% p, f+ ^3 u* K
2 O# |7 x+ C- V5 Y
02准备工作
& Y* m4 J; g( h( l/ {
$ h# [1 {7 W4 s
微信图片_20240229145309.jpg . Z( T4 o' Y' h& d( O

0 b( g- P0 ]! A& x& [$ h/ r6 h" A软件包: STM32Cube_FW_H5_V1.1.0
3 Z# q  ?. a' P- F" s  p, Y& B) [4 Y* P: ^
工具:$ ^8 M: Q% ?& P" T" F% @" X
• STM32CubeProgrammer v2.14.0; ]' r$ e0 W# F, W
• Tera Term 串口终端显示
: ]4 }6 |( i0 P$ ~2 A6 w. y9 m• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)% y; z7 W% F$ D! g; j7 ~5 B

0 f/ ?5 {2 }& N, C2 BIDE: STM32CubeIDE v1.13.03 ^& O4 M2 e9 K! W. |% h

( \/ Y  T" q+ A7 g0 H( t+ kSTM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
( J9 X# A9 s& K6 S5 O2 x7 Y: T! _( _% P4 x8 z# `" g. G
03生成OBK并测试
; I$ n; [" \6 m; T$ l+ U
在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。* t% r  p# F' T. `
8 H( ^, P: E4 e6 [+ v, W5 c
3.1. 生成 DA OBK 文件和密码文件
& @. @2 Y' E$ f. L2 F$ x( W5 Z打开 TPC 工具。/ Q* k9 z  c' R2 J3 E* d0 q
" `' K' i- w( U* k8 R  E
微信图片_20240229145312.jpg 1 g" N+ Z7 W7 U7 A3 C2 x! K) z

; x2 \; L+ ^, y; R左边选择 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 文件 :1 \% a* v7 E" ^+ {8 S4 Z7 s

' B2 T: o7 h% r* t
微信图片_20240229145315.jpg
3 y) e! P' E5 j: N# w" z2 n, D; _# I
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。, f5 b9 U) t7 I  R8 s
1 y! p+ ^2 G  P7 g
3.2. 预配置 DA(provisioning)
1 c) f) F7 u  e" `  x接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。4 m3 [8 Z: H4 R" u, j" X

$ m) l4 f1 Q8 E
微信图片_20240229145211.jpg 2 P! l6 Y5 `, Y1 v! G% [+ Q
/ G% v  ^/ l5 w; L0 r* T
然后将 product state 配置为 provisioning 状态 :9 s  I# }( y3 p* d. ~5 J! T  c
0 m/ w9 S4 z3 N! r* C
微信图片_20240229145207.jpg
# h* v  X+ m& f! F2 b. j- s$ D  _
9 E+ r/ u' D0 d! j6 r. ?然后使用 STM32CubeProgrammer 进行预配置 :, e9 N% A0 g" t6 T9 Y% p
1 M" d& D; v; a, x6 i; H
微信图片_20240229145202.jpg ( D) F9 f, Z+ `, O9 d) P# l) H
! u7 y8 @( o/ C# [0 M
如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…- k7 y' G# Z5 H( R. }- A8 H& y
$ O& p& ?( S, Q  `$ w4 A" w
微信图片_20240229145158.jpg
/ k0 t# A: G1 J/ A0 ]
: S+ }' s3 f9 T7 m/ J结果将弹出对话框提示预配置成功。( X) T8 P7 m/ w
, F; P) |1 d8 x8 c5 x" A( W" I( t2 d
3.3. DA 回退
: l) X" O% o! C- p/ N接下来我们直接使用密码进行 DA 回退…) i; N/ U7 P8 \1 u( B

: _8 |. s/ \( u7 G
微信图片_20240229145155.jpg
* [3 c: ?$ d* }5 D, N0 g' i$ V) i2 W1 z4 {, {
如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…" p( P7 k% J# K% ^) c
" T$ C: D9 ~# X9 m
微信图片_20240229145152.jpg 1 a9 z8 r, V, q5 C7 |

4 i6 b: X* f: q如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
3 @1 {. b0 P3 j9 H) O7 I5 u% j7 j! C( A; C
然后点击 Full Regression 按键…4 C3 ~* L# H: k, u0 R( y+ H, j

" ?% a. H& h- E* w* ?
微信图片_20240229145147.jpg / ^2 q6 X( O4 N) o: b- P: l
/ Z# k4 `  N  t: ?6 \/ \$ `
如上图所示, 成功时会弹出提示对话框。# d7 D& c# m0 \/ }
3 e8 p+ i0 l  b
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
" @! ^6 Z% q' }3 x( Y) V
) C" l1 g. L5 ~9 q: h/ e04烧录程序再次测试) j8 O8 I. Y6 B6 E. t
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。, i/ \7 S) A, h
$ ~+ |& Z" K2 U+ \
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
1 K) I3 ?; A7 Q: _5 V
$ v, x: J0 J& s5 |" h

; G$ ~* q1 {: [, n转载自: STM32单片机
. x: t0 @4 \* o: S9 q, N如有侵权请联系删除2 v5 B* G, v" |7 J/ K6 e

1 Z: I% `* {. i3 T. ?7 [% T" U
赞 收藏 评论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 手机版