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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言
4 a$ h3 V4 p% f, ~& f8 `本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。' z6 x* A5 z, m% O8 ~5 B6 u

& X! M# t9 B9 R) ~; E$ f. P由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。6 A7 l4 s: J! X2 V/ e
. c. [; U( A' i+ R8 i, [2 n; N
因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。  ^  h/ _1 U3 N  R4 U
( K' {3 C, b5 g# R* L1 z
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。
! X& y# M, y$ Z
% c' n1 P  [4 q/ N! y% j' p02准备工作
: j4 A5 Y1 I  {
( B' g% K1 Z/ E! L
微信图片_20240229145309.jpg # \/ x5 n4 ^3 {5 i3 ?

  v& Z* d! g/ v& }' v! d2 w' b软件包: STM32Cube_FW_H5_V1.1.08 M" s0 |" A8 a, Z
+ t- F' N0 R* P) W
工具:
; X" q% [& i4 l8 V4 l• STM32CubeProgrammer v2.14.0' C# G+ X  Y) L+ t
• Tera Term 串口终端显示8 d8 ~2 o1 U) z5 Y$ p. M9 J
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)( }+ \+ K3 ~. K) T* m0 g) h0 G
- W9 \0 F! u" t( [
IDE: STM32CubeIDE v1.13.0- s0 }* O& t8 @7 m2 H8 ]* M( v

) z, |' h/ D/ L) f- t2 N! ySTM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
* Z+ X$ u7 T3 {) I& w% y
; X9 `* n2 d* r9 G1 z: g+ H03生成OBK并测试

0 Y1 j' o& `4 z0 |在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。# W" X5 J- ~& O
/ w: e- L! b3 c$ C, |. ]2 z; s
3.1. 生成 DA OBK 文件和密码文件
( s9 m+ e) J$ E1 u! o( f% {2 e打开 TPC 工具。
: q, n6 }5 T7 E7 t! H
/ `$ A7 C7 m: i/ {, b
微信图片_20240229145312.jpg
; G" \  T# h0 O- W+ F& ~: o$ m: h! _  X* v, ?
左边选择 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 文件 :  g# N( @% {& b- L+ v

6 A3 t+ U4 s7 ]9 {. T7 Z7 O
微信图片_20240229145315.jpg
' u: }7 w4 }. W7 Q+ q- h; x0 b. U9 `( w
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。" @: m1 _; Q/ s' ]# N7 c& W( P+ {

( _6 @4 n. _# C9 j; \" g# |+ x3.2. 预配置 DA(provisioning)
# _' N; v4 ?. i: Z0 h接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。0 |' l$ J' l( o* j  G, R0 Y% D* @

2 ?/ A  Q, Y9 l% s9 y
微信图片_20240229145211.jpg
- H* p7 P% ?' z9 k% q3 ^9 j6 i; ]7 ]& X! {$ T. v
然后将 product state 配置为 provisioning 状态 :1 X# ^8 @1 j! B  W- z7 X. ~
+ a3 M. Q. z# ^3 }
微信图片_20240229145207.jpg 6 m7 v$ S# K  E1 ?, R
) D7 y0 h7 x/ n( R# C3 v( o  z
然后使用 STM32CubeProgrammer 进行预配置 :7 N% _- v  i2 J% \# _% ?
9 i( J2 p" G4 b4 M( O* T
微信图片_20240229145202.jpg
$ P! ?3 S$ d& N  D9 D  B2 C2 @
4 `- H9 r+ s0 Y) }; G# L# h# `如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…
$ S% j; `" ?; M& o* L
$ O; X  n) d% |
微信图片_20240229145158.jpg
: j$ d. N' m, R
& a! x3 E8 i" S( G2 O结果将弹出对话框提示预配置成功。
; I2 {: y+ d' T2 o- H4 ~/ u
2 x- U/ G8 n6 Q- e$ Q" P) o: i0 ~3.3. DA 回退% ^) H* G, p+ e: T0 j4 F
接下来我们直接使用密码进行 DA 回退…
  J/ n: W6 C! g8 H2 A) f2 r& G# R: ?4 h! G
微信图片_20240229145155.jpg
2 B) K3 `% q" Q$ j( b) |+ T+ G
0 f. ?" R* L6 f4 c' G如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…' ^7 N# ~0 \: O# E

" b/ v9 R* n: s( t1 L6 T
微信图片_20240229145152.jpg
5 S" |7 G2 a1 _: w  n' x
" S$ t% Q# n- V  V如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
1 G: ]" W& H6 N4 Y/ B3 o$ h( P7 e, w1 h# T& P- e% f
然后点击 Full Regression 按键…$ [  G+ _2 t5 {
# V" X# }1 m. C
微信图片_20240229145147.jpg
) s) v' v3 e- Y& i# H1 x4 n/ P# y
& E! ^2 \- H/ J& t如上图所示, 成功时会弹出提示对话框。
# v. @1 w: q0 q& `- q; K) i  {7 v' L4 F" K) t4 T
这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。) W' y2 `3 p" [, U! v) v
5 F! O( [- Y# @/ [4 ^8 U7 ^
04烧录程序再次测试3 H5 B; L, R; i2 l, J
接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。+ l1 H5 j1 s# D5 d9 @
  ^* f! m0 s" a! ?( o) ~2 W: i3 h
在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。
2 S& R- J: J: o8 [
; u$ }! G+ \( |5 E- [5 _% s' u

2 h3 a- n' c% n: j; f0 E转载自: STM32单片机
& _, Y3 `6 ?! d! l5 b4 R" u; D  b如有侵权请联系删除
- V( \& p( E( _) n( x8 o2 _# @2 x2 a5 u5 V9 K7 T, f) G
收藏 评论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 手机版