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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言
$ H' q. q2 O7 P, c$ U; J. K* c本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。
, l8 [. l* G+ z+ t1 w9 _( i
. E6 D' L& L" j% V由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
: k+ o5 M2 `3 Q6 Y; I- y, ^) o& `, x; Y+ x# [
因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。) w( r3 k1 i& a2 _( C+ s/ c  I
2 u/ X& x  \6 |2 C+ R5 q2 E% x
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。
& _2 O5 g4 D4 J# c4 |) G) ?! R6 n  j$ t' O+ a" h8 b4 }
02准备工作
# p6 a. o7 X* J2 F
5 \7 e: u7 A3 [- x) g
微信图片_20240229145309.jpg
8 S, x; q, H: B0 f7 q$ i- H2 |
) c6 ?- W: ]$ u* y3 h1 ?7 p3 x软件包: STM32Cube_FW_H5_V1.1.06 b8 M; b1 l; M! [) F

/ X- g/ j4 `: D$ r4 o  W% L工具:; S0 s, I. H( D
• STM32CubeProgrammer v2.14.0
+ s6 {2 y* n6 @) O' s- C• Tera Term 串口终端显示) ^% j+ W% r8 u- w, a, E
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)9 w7 t7 {, m7 w' O* r, d- |
$ ?  }0 A3 r6 w
IDE: STM32CubeIDE v1.13.0. L: g" V6 @9 `0 R
/ S9 [/ i/ L; ^4 s- X
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。" |5 Q. q; z: `* }

+ f' w. q7 T9 w8 q03生成OBK并测试

/ m& d% x* r6 U在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
0 \2 W) Q* f8 ?: l: W' Q( Y- E, M4 b4 Y1 L
3.1. 生成 DA OBK 文件和密码文件" p5 Q% V# _6 B; ^3 T1 |
打开 TPC 工具。5 ^. J. s: g. Q8 @

5 J! v% ]# u$ I3 Z  M: M
微信图片_20240229145312.jpg 8 d' u8 u) `$ n: a* M% }0 s

+ g" ^' m" b! p; o3 ?左边选择 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 文件 :& N: X9 E! y/ B3 J* U
, c( u/ X5 i5 l; d* }8 d
微信图片_20240229145315.jpg
7 P. B# w7 ^7 b( L" T6 r  V' ]% h; D! T$ T0 |3 w5 [9 e4 y! ?
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。1 h* k6 `" J6 F* o9 a* \+ b9 G/ T
' q  x& V4 V# L6 r2 ?
3.2. 预配置 DA(provisioning)
  o. d. \; P( J% C接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。# ~, X: ~3 j- M1 }- \: ]

/ d5 R, V! m* @5 v
微信图片_20240229145211.jpg ) z, }" l( S  V$ K+ y1 M

- x1 @* Q/ l0 \  Q0 B% F9 P. |然后将 product state 配置为 provisioning 状态 :" T3 l5 R; p0 U& T

( F2 o; Z* b$ O1 r7 _
微信图片_20240229145207.jpg * Y5 Y! y( }8 X! a/ O3 e3 W; R

- K( y/ P4 f" v6 t  S' f然后使用 STM32CubeProgrammer 进行预配置 :
" Y1 W1 H! P  F. {
9 w. F9 ^. W2 G0 g- q8 L
微信图片_20240229145202.jpg
9 x1 i' c* T6 X- T& w; V+ E% g
* P) E) j. D9 E' }如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…1 ^3 I4 U: T- _
, [+ x1 r1 A1 R+ G2 Q
微信图片_20240229145158.jpg ) ~! r! ?9 y4 {$ H! V% _7 ]
, |& H$ R4 q6 F# |
结果将弹出对话框提示预配置成功。
8 @& H. w" O. p+ f# h3 b5 D4 F- f& ]) b0 Z  [2 j& J. j
3.3. DA 回退
% s- h  @: b3 \$ Q7 S- x7 [* {接下来我们直接使用密码进行 DA 回退…
& k1 K( f% n) d. Z! t9 E* S9 `1 v! B% U' Q) q& m0 D+ x
微信图片_20240229145155.jpg
" T# o$ V4 B( x0 A
' \4 s$ N3 R5 O: E: D如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…( X7 z* d% \- E: v# p! V

" k  n) y: ?- f
微信图片_20240229145152.jpg
5 L$ k3 {% G4 m: y/ I
4 ]$ z1 h+ u/ ?" U) b& V如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin. ]" X' M* z! ^" U4 Q
% m, |+ A# E1 U3 n. E4 w
然后点击 Full Regression 按键…, r, O) q0 V+ }& r7 M
: p5 ]/ l5 }- c; G% e. x) h% _6 }. T3 q
微信图片_20240229145147.jpg ; r5 J8 a$ C: b! D' _  \

: {/ j; j3 \! N& i1 X4 }如上图所示, 成功时会弹出提示对话框。
; z; Q- l0 O. y. V9 l* Y5 r. T* M1 R/ t# k7 W2 R, l
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
  n; a8 L- O, q% Z$ z
' I% [, g; L' ^: S* A% o04烧录程序再次测试( A$ b$ s8 Y: T+ y% s0 g/ s) x1 C
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。4 D: a1 J7 ]( }  B

$ N- }# {- b6 P$ z& F在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

, X' M( a. ~3 A) S% z, w* i# z
- ]9 W6 @( ?! e1 n* [8 Y) j
, t0 A; q0 ]0 J4 m# ?' w' u; ], C
转载自: STM32单片机# t) ?/ K6 [% q/ h* i, M/ C
如有侵权请联系删除
0 r4 Y, ?+ J7 j9 ?; R0 o
9 G7 f/ P9 J  s# c6 m
收藏 评论1 发布时间:2024-2-29 14:59

举报

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

开发板和不错呀~~~

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版