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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言  F6 B' c: m, |1 D
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。' Q- w8 V4 {9 p) K
; x* Z3 \/ a& g7 `& u8 Q% r
由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
+ ]/ U" g# c5 k6 S& @! ]
6 a1 P+ I7 F( f! A6 g" Q. }% M因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。/ o# H- [+ _% X- _& Q
% F, v' n, ^: _" N1 E2 x
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。6 Y2 L) D6 f! j, P% {/ R

. V- W+ n, |( B5 W02准备工作
  f2 L: a: l& ~0 C9 N2 z. E  w9 C6 o/ w# D) c) s5 p! y  e
微信图片_20240229145309.jpg ; [* w/ p& H' a2 U" f9 ^# b3 R
: m4 c+ Q: _2 c% m0 Y  c) b3 [4 C, t
软件包: STM32Cube_FW_H5_V1.1.0
* i/ F7 l1 S% W7 G7 F0 i6 e3 C0 K$ D! D  r
工具:
$ Z2 S: Y; U- Z9 {- i4 J: z• STM32CubeProgrammer v2.14.0, D, C) O* D1 \" O/ Z
• Tera Term 串口终端显示
2 e$ j8 _& Y: l+ _$ R7 H• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)1 l# i" B0 f" g& \  G  A
! C  S7 z1 n$ t2 Z( D+ X* b
IDE: STM32CubeIDE v1.13.0
0 }' _+ V6 e$ D0 D' o9 m: Q" w. l7 o/ S$ y2 j& s/ A3 h
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
) [; s" F+ O1 [( L$ x; e) X" M: n- C# R$ K
03生成OBK并测试

3 {8 t, d8 Y, w) x5 n7 k. d) \! i在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。
2 |5 m5 R$ P% w- \, F; @% Q7 ?+ w3 N1 w. ~2 f+ Q! m7 w
3.1. 生成 DA OBK 文件和密码文件
' T" G$ ?7 `9 Q+ P2 S打开 TPC 工具。
* r) s6 k- `& F( @% w8 Z3 N: V8 a  r2 N6 i$ \
微信图片_20240229145312.jpg
/ w  L9 D+ X+ g, c3 Q0 ~3 G) c3 Y( a3 }0 G, G
左边选择 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 文件 :0 p6 h5 C- d! e* x1 T" {
3 P3 u- b, ?4 A# w
微信图片_20240229145315.jpg
' {* G: h1 R4 W: R2 P3 J, g
7 N& {% \" g, _; q" {如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。
" T# l- c/ f3 C. J- H6 ?0 C0 Q+ X. X( ?
3.2. 预配置 DA(provisioning)1 h2 e7 O2 t' y4 W, q
接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。
6 {$ K! d9 _3 _3 B* y; }' Y  u7 G* _4 _' P: a6 t1 _6 V
微信图片_20240229145211.jpg - t4 e& L' N! F" ~! @
/ J9 V' U  d- F& T
然后将 product state 配置为 provisioning 状态 :4 z. m$ E. {$ J. l3 R( _1 F8 m

/ i* @: d& k- E, g
微信图片_20240229145207.jpg
3 H# t9 {2 I, {7 X/ m) B
- Q- ~  X0 H" w+ F9 O然后使用 STM32CubeProgrammer 进行预配置 :
! M; {, @" K7 @, B; C% \3 J5 x2 ~: E4 n) i& y
微信图片_20240229145202.jpg & N4 o" q" m$ `# M

$ O% ]+ T; R+ e9 ]如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…5 f" P# Q( s; e4 M# P; ^* N
% b/ y) k5 ]% r- D- ^
微信图片_20240229145158.jpg 8 q- ?" Q- F: g0 M, [

0 N) S! j) t6 b. I2 B1 K结果将弹出对话框提示预配置成功。* l/ y+ _# ]8 S- q: M

& V* _3 K! N! w# o$ m) M& p3.3. DA 回退5 S6 q: G+ R7 W3 Q0 X
接下来我们直接使用密码进行 DA 回退…
" E; h" R8 F) }# u: {  r
) t/ z5 H; N- Z1 c3 w, e
微信图片_20240229145155.jpg
) N& d: s( O; m: d( Q# j7 T9 K
. a, m1 Y6 q, v+ R! F如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…
# @2 y# r* b3 R0 I1 O- J2 T& y1 C) b7 R2 L) S
微信图片_20240229145152.jpg 2 T# V: v2 N8 p7 j. _

) E2 I: |. T. s( S. h如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin1 X, t0 Z/ B, }# ?4 L& L

& `4 @& V3 a0 Y然后点击 Full Regression 按键…
& D4 n3 w0 m/ M' v3 ^, p; M) ^5 z9 ~! Q$ Y
微信图片_20240229145147.jpg ( {5 |( S* k6 ^$ B4 m0 r+ ?1 s$ ?

& {6 L; t/ I& n如上图所示, 成功时会弹出提示对话框。
6 G* ^2 t+ W1 s( m" K: `) u, C8 P! M/ @6 K* D4 k& B
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
* W* R! }# x0 j; m6 a
" _& b' I, ]6 s% E6 \/ x* K04烧录程序再次测试
+ {3 P, F% \( y0 i1 }' W( {接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。
+ ]2 Y) g6 E, l: @0 C# ~! e1 l# s, X: Z
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
7 y4 E7 M7 {' a1 v4 Z' c  ~7 c
9 E5 {+ ^& X& ~( E; T
+ W, e& ^" v: G% w$ A' A
转载自: STM32单片机
/ m9 _' N! j1 n5 F: x: W3 v如有侵权请联系删除8 j7 n+ e, x, M* q

  D& ^8 y( }( y8 L2 j4 o
收藏 评论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 手机版