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

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

[复制链接]
STMCU小助手 发布时间:2024-2-29 14:59
01前言+ ^1 U% O+ \5 ?( }2 }4 G5 Z
本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。
7 a% w1 Z1 W2 I7 b: b8 u% @
: M: w0 ^" n; k0 C( X6 b/ ~6 }由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。; f. S* v# a+ E% w  t1 T' f
# Q* t3 T+ y. p& Q3 U3 ~' p; E
因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。) [% j& L' _( T0 A* _
  ?5 E$ i3 t, e) x& J9 E
此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。% L( E' L; X2 J  t2 W4 E
. y  X  o9 l; G$ B- }+ b
02准备工作
% E, h  b6 j; d/ V
  |, d6 N! S+ Q8 _9 k3 G. b5 T
微信图片_20240229145309.jpg
' u. y2 O, a# i& H6 b+ M% N
. o9 X; B5 V# `' ?5 B软件包: STM32Cube_FW_H5_V1.1.0; {% a. m$ c! U- W/ Q  ]

. p) y# f, e3 W: o. @* O4 M工具:+ E0 v# M8 C* |/ o5 b
• STM32CubeProgrammer v2.14.0
  J# e4 w/ I4 x0 B5 Z# \/ v• Tera Term 串口终端显示1 U# N& G: r  A' a: R) b6 S
• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)
9 ?" o, [0 ]% k; y7 a) L  C# B% R  j: v4 I; `
IDE: STM32CubeIDE v1.13.0+ k; S$ N8 N, y7 ^! A! ]
1 L( R+ m/ H  y. [
STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。
; e' ?! B- M6 @- F. H5 q
. H, ?2 ~9 o5 e5 y) z) E% z03生成OBK并测试
7 N. k' O* B1 g+ l& K3 T
在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。9 ^' h, C! F2 {- G( s9 }/ V
8 t1 f! J$ J8 u
3.1. 生成 DA OBK 文件和密码文件
. Q, A) I: @. p+ s2 w1 E+ w# t打开 TPC 工具。- e" f1 \3 b7 V6 d5 g
- S: ^5 e8 w5 E  g8 t' c! C
微信图片_20240229145312.jpg ( s8 D+ M2 [4 T7 B; R% O0 o1 C: ?

% j3 @( ~- Y% K% T. 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 文件 :; d) X: m5 w& `  a" C+ D

* ^6 V5 F/ y+ F7 o9 g7 R
微信图片_20240229145315.jpg 5 q! e: n7 f. W. j1 t7 |9 ]
2 f' a/ |) J3 `* s: W9 ]
如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。1 @9 _% d0 }9 L
- R4 f8 k; M8 a) }! b1 \
3.2. 预配置 DA(provisioning)
) @4 G! n  w6 A9 T6 a. u  m+ |接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。# R! {# |; d4 G2 v$ |( |9 f

8 i: M$ R, ~& e  F& E7 D* `$ F
微信图片_20240229145211.jpg
, I+ o9 Y& X3 n& a; F# H
2 P3 J! K, O8 N; m5 o% W然后将 product state 配置为 provisioning 状态 :
" p. }  ^) n3 F' g' u1 k4 |
$ g; {3 C7 e3 f" C
微信图片_20240229145207.jpg
3 T2 B$ H$ i2 t- g# C+ A
. b9 V& v0 u" W$ Z然后使用 STM32CubeProgrammer 进行预配置 :; A( Z* B4 u8 u6 ]" h2 Z- d" B
' ?: j* N' Y1 v; g' C' E
微信图片_20240229145202.jpg 4 v  r, ?  I' c2 f2 g, a! u, R
! B6 C7 E- E+ |
如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…7 a* w' Y0 g1 [. F) Y( j

1 \  ~, k/ a3 I: }  A5 q' W
微信图片_20240229145158.jpg
2 J1 V4 i) i" ^5 m* z
+ h2 A/ P: q+ h: B结果将弹出对话框提示预配置成功。
! C/ v  J: F4 m8 F
$ Z: n8 B: h2 x. w* P# J4 Q3.3. DA 回退
9 q$ t) x" G: s3 |# }! R接下来我们直接使用密码进行 DA 回退…
: @5 R/ i8 U8 K! V' v. F' G& T1 a# U2 }; }; @  i
微信图片_20240229145155.jpg
0 ^2 W) C) M, j- M5 W) ]! e1 O" a" J) S8 B9 D* V: u
如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…0 V/ i/ N% D! T2 d" x; p# G1 h: O
6 q" |: r, q2 P) i
微信图片_20240229145152.jpg
4 r& [, o8 w  a4 `* h
- V  k% e/ L& [4 @6 T% f# y如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin
3 g# P6 T8 @2 O
( U- m2 x) B: {/ X. f然后点击 Full Regression 按键…( {& e# H# C. x8 z

; J2 N" m5 l! g; S7 x; M- ^2 ~. H+ S
微信图片_20240229145147.jpg
: W* X( ?* u, A+ _, f
$ q- A2 b/ D3 s3 z9 ]如上图所示, 成功时会弹出提示对话框。
+ x8 q9 X) H9 q6 _
2 K/ V% D0 a/ |+ p这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。' {: X5 ]) Y, T/ E5 Z9 d

' h2 N" x: E9 }0 Q: }# O1 O: ?" n04烧录程序再次测试
# j7 \& Z' c. Y8 S$ _6 m接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。+ F7 F  k/ T- f5 T4 j

, R2 Y7 A+ Z; Z5 B6 n0 t在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

3 \3 q$ z! m2 ]* n+ u
6 |9 n  V* N" x8 Z, D4 a$ @
  p7 o- U4 D9 @3 E* H( U5 F+ I
转载自: STM32单片机
8 Z5 ]' N$ K, r6 ]( F如有侵权请联系删除
3 L+ K- r0 G2 t' u  e& \3 I; ]# e4 ^( S# r
收藏 评论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 手机版