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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言2 _+ q7 G- ?8 K1 s, j- z
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。+ N* Z4 J" D" P8 n
. b7 Z! x  y7 C
由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。
- \; S& t7 U# P1 Y9 b
- n5 j* v/ p/ g因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。
1 \( P) ?: y( |, Y8 C5 Y* o. p" S9 r; }
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。
0 x* @0 S7 C% A9 y
) n. S, V+ {: B+ a02准备工作  D/ b4 u) S2 U4 G2 n9 w
/ R% k7 ]8 ~: A) h4 ?1 [1 ~, b
微信图片_20240229145309.jpg / _' [: T( |& t( J. k- L

2 C' D7 P) Y! I9 n- q; J7 Y软件包: STM32Cube_FW_H5_V1.1.0
0 h$ e$ ^( n' i7 q3 n" ]6 `% A. n2 K# r+ {" {  k- S
工具:
( K$ [+ R$ _9 ]7 b1 H: g# V. z• STM32CubeProgrammer v2.14.09 V+ b4 b+ d8 z& B: r* |, G
• Tera Term 串口终端显示# o! U8 H' f3 d$ C$ \8 r2 D/ t% c: ^
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)9 Z6 u' O2 U$ D! _9 ^
9 S7 a0 e. E, z8 d) w) J
IDE: STM32CubeIDE v1.13.0! Z( M% d- q& a: F7 H: ?) f
4 j' _2 M' g* L
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
8 n$ O3 x% S& V2 v! r5 h) ~1 |% T8 O8 d  ?
03生成OBK并测试
$ I8 w! N' J, L- d+ G6 V1 q2 [
在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。4 M$ C4 K: C4 M

' T# ^; _% h( u2 q. V3.1. 生成 DA OBK 文件和密码文件; H2 P5 v( x/ X$ ~9 I/ _7 g7 I
打开 TPC 工具。/ ?; Y4 I- F* }+ V
, M8 O  g7 v( m* C' g
微信图片_20240229145312.jpg
! a; Z9 t0 N' \+ Y! F; W  l
3 ^& C* E! B/ P- c9 s3 b4 c- ?1 y左边选择 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 文件 :( m1 ~! ], x' `9 @9 h

6 }# ^0 R6 h3 A7 ]2 b
微信图片_20240229145315.jpg 0 G# A7 [/ I+ L' i
! g; Z' W5 [! C- ]
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。( t2 s; S) m, {% m1 Q/ A

( h/ l1 S# i7 L$ n7 e3.2. 预配置 DA(provisioning)
8 B! a/ H4 K  ?' ^+ l7 V2 m接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。
4 ^" @! ^- _9 R( Z- J$ d0 o  C2 B5 I  ^# x
微信图片_20240229145211.jpg
" t$ |4 ~. I2 ?" t: \# G% {3 q
8 F1 f$ b/ ~" b& a$ T' x$ j$ H9 |然后将 product state 配置为 provisioning 状态 :( Q9 n# o, X8 e4 ]8 e: _( A

8 X  x$ r- \) A% p1 A
微信图片_20240229145207.jpg
& l  T; ?. K3 M' Z& e
1 b8 o* q0 `* v  n$ }  v然后使用 STM32CubeProgrammer 进行预配置 :
2 B. [/ F$ w8 q1 L& W4 ]: a) m9 m2 }) R" ]; n' D
微信图片_20240229145202.jpg ; W' M1 I7 d$ }; z
' c: x. l; `7 [2 O8 W9 v% q
如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…
; P' r* W+ l3 O0 y# q$ z% l
+ _7 H9 [, z+ a+ g; U2 v; S# v
微信图片_20240229145158.jpg # f7 ]. O$ A8 g+ q- H# E

* R" S! r7 g; ?) X1 z/ w, Q2 Q结果将弹出对话框提示预配置成功。
* e$ a7 }  c& V9 B% _9 Y' m- D* B. t
3.3. DA 回退0 ?/ A7 M- Y3 m0 ^2 I
接下来我们直接使用密码进行 DA 回退…
  \' Q8 U6 V2 }" |
! `! J1 k: o% `7 @1 H8 N+ l
微信图片_20240229145155.jpg 7 Z; w/ ^5 r" v$ I" K' P! |
% Y" I1 B& a+ M7 B5 ~2 W& _! t6 I, z
如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…" h7 C9 g; X0 C$ |6 }* D* [! m# S

. T$ X  c& I1 @5 z
微信图片_20240229145152.jpg
+ K& y; \+ i, B
2 L# X4 _; O. Z5 f2 L$ S如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
1 w& D4 i7 i2 c" b. R7 c- @9 i
9 t$ R0 b, j+ L+ A5 r然后点击 Full Regression 按键…
" i, Y5 R! _: @# R- B
& i3 ^* @) s* c- R
微信图片_20240229145147.jpg , W9 ]+ A  v5 w- y# {/ A2 p$ b: L
$ U& b* o; u% b9 }+ u" g
如上图所示, 成功时会弹出提示对话框。: |; l; U( F7 L" A
, q. W, Y1 B) @: T
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。
# Q4 H# j  P2 e4 R. u, x/ H
6 H7 R& I; p! f" G: H1 Q; T* w04烧录程序再次测试
7 G4 `3 w% n$ U7 k( e/ z! i! N接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。
% @& m- ^  i0 V- j. h, K( j& z. {0 C: a7 h3 a% Y8 o
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

' G0 s7 n" q1 j6 t) r% s, c+ Q' v. E' w/ W7 a. q+ o

4 w/ G9 U( f& K+ \7 o( @转载自: STM32单片机
1 n9 T& A  `# E6 k/ d  y如有侵权请联系删除. {: S4 {8 H0 f; x/ c1 Y; b7 k
0 `) J$ o' Y% X# b2 z5 [
赞 收藏 评论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 手机版