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

【STM32H7S78-DK评测】-2 H7RS芯片新特性

[复制链接]
KEY1 发布时间:2024-8-19 16:40
STM32H7R7/S7系列芯片有很多新的安全特性,这是我们以往的开发设计过程中没有太关注或者较少用到的特性,但是这些特性对量产和代码保护是很有用的。
0 I7 G: v  k* _+ w' `/ i# ]
这是一款基于bootflash的MCU,有64 KB内部Flash称为 bootflash、可灵活配置的620 KB SRAM以及带Flex ECC的32 x 32 KB缓存。
STM32H7R7/S7系列支持高速外部存储器接口和XiP,专用图形系列可利用NeoChrom GPU、JPEG编解码器和LTDC实现类似MPU的GUI,
微信截图_20240818163548.png
% U2 J! _7 l7 U* k( z
STM32H7RS 系列 不同于H7系列,产品特性和开发方式都有变化9 k+ i* \: R; p3 H6 _) }2 A$ N' d
H7RS系列  官方宣称是 低成本的器件,但是我搜了下淘宝的价格,还是比较高的, 可能是由于零售渠道的原因,
4 S- B9 {- e: g5 p% b, g4 K但是分析这个芯片的特点, 可以判断出来 它的设计制造成本是比常规H7系列要低,为什么这么说,
- s- }+ F( a! S6 t! c因为相对于H7系列 ,优化了资源配置, 缩减了一些不常用的接口和资源, 加入了更多了安全相关功能,我发现的最主要的几点是 :1它的内部Flash很小,只有64KB ,2 取消了MIPI接口,一般这个接口的屏幕要贵一些,
7 m. O$ P- z2 y8 d; }/ W  [8 g! p2 Q/ w: G0 p( v
这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。
8 @8 d: _" K$ v. f6 l4 ?7 ^通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;" _: Y) Z1 O. E- h, `% D
然后在CubeMX中 也对该系列芯片进行了深度支持,) y. I3 m( K1 ]8 z
在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项,
& V, ^4 o. |; Y8 |; D& A1 D  ~首先就是在 Project Manager选项卡中 多了 2项
( @3 y6 N$ R6 ~2 R- M2 q 微信截图_20240819010413.png
7 V, t' x9 F* Q7 J8 i7 Y/ e1 O: L这几项在设计时 一般情况中间的Appli 是必选,+ J  `  w6 |+ E! _; a
第1项Boot 就是片内Flash的工程代码,. E' x0 C% \, p0 b7 E* u
第2项Appli 就是片外Flash的工程代码,$ I: N. @+ R  p
6 a9 V' j, ]+ \. T
然后在 Tools 选项卡中 是对内存分配,MPU分配相关的设置- q$ F1 t# B1 p' ]8 \
微信截图_20240819011110.png
* y- @6 ?8 M9 y. J$ h7 Z! j7 a8 Q1 t" J/ W$ q1 l- d
从CubeMX中 基本可以看到, 配置过程比一般的芯片开发要复杂一些,但是 这些配置内容是无法避免的,就算用其他的芯片,2 A" b7 i' a% r; Q; Q- T& {
也需要类似的配置过程,只是有可能是用户直接在代码中实现的,而非在配置界面进行配置的。
" F7 l$ \: D5 I1 l5 M  |" |/ [9 z# o. N
一般情况下要使用单片机进行复杂的的GUI程序开发,需要面对 几个问题:% D: g/ {" ]0 `' ~# x: @$ K
1 需要较多的 RAM 空间作为 图像缓存,对于800*400及以上的屏幕就需要外扩片外RAM ,9 k6 q5 I0 N; W3 M) H: D7 ^
2一些静态图片和字库会占用较多的Flash空间,这些内容一般情况下片内Flash是放不下的,所以还得扩展片外Flash,
+ P, M* R. Q7 B/ F9 L  O# H
" U" `) l1 r/ G9 w- @" j这些必要的过程,CubeMX已经将相关的配置加入了其中,所以会使得配置内容比常规的开发要多一些步骤,
1 s' C( K3 Q, M1 |, d% d4 R* z- H但是整体上来看,原本复杂的开发过程中的关键步骤现在可以在CubeMX中进行部分配置了,对整个代码项目是便捷的。
$ d& N) R  F. {6 B( Z5 ?加上TouchGFX 可以给项目生成一套完整的可以直接运行的工程代码,如果使用官方开发板原理图的接口,那项目开发起来简直就是飞速了。+ S" V0 U7 B3 K& Q6 \' {

& r4 x- b: I3 q7 u9 i
* c' H. e: k1 Z' \STM32H7RS 生命周期的产品状态与 STM32H5 新系列类似。该生命周期集成了对调试验证功能的支持。) X1 ~( ?: F/ e3 }5 r; l

  q( ^9 R9 a9 S; z
产品状态
说明
可进行的过渡状态
开放状态(Open)
用于无限制开发的状态。HUK  隐藏,用户可自由试验,调试器打开
预置状态
预置状态(Provisioning)
用于提供密钥、确保固件安全和设置选项字节的状态
关闭、锁定、回归
关闭(Closed)
最终产品交付状态 -  允许调试验证(调试重启或回归)
回归
锁定(Locked)
最终产品交付状态 - 无法进行调试验证。
无
回归(Regression)
解除运行以允许完全调试的过程
打开

: |* F4 s. D9 o% q. H* f2 ?
' N5 z+ t# S$ ?" LH7S7系列的安全功能 有很多特性,
  B0 o0 |  c- \, u 微信截图_20240819093000.png ' M  Q% i% t" X# Y2 ~
ST官方安全特性介绍
4 _. }4 f# S# ^. v6 r
, G# l7 x; B; i  C0 B, P4 ^6 k. Y; k6 l5 ]0 T
STiRoT 代表 ST 不可变(不可更改)信任根,是第一个启动阶段。STiRoT 的目标是实现 SESIP 3 级认证。由于 STiRoT 需要硬件加密功能,因此仅在 STM32H7Sxx 产品线上提供,STM32H7R系列没有此功能。
" \& Z( Q: V6 a. A. C* d0 e& _$ q* N1 D) L" _; c) q$ o
STiRoT 嵌入在 STM32H7Sxx 的不可变区域中,提供两种服务:
4 A# A0 j& g3 I. z$ l7 }4 o• 安全启动(信任服务根)是一个不可更改的代码,在系统重置后始终会被执行(1)。它能激活运行时保护,
/ K+ R9 c3 A# T5 z1 C7 n# Z# r然后在每次执行前验证应用程序 (2) 代码的真实性和完整性 (3)。  e, A* b: N( X0 `, f  m- A9 W
• 安全固件更新应用程序是一个不可变的代码,它能检测到新的固件镜像可用。它会检查其真实性 (1),然7 s. ]0 p# U  u' W7 s" c
后检查代码的完整性 (2),然后在解密后安装 (3)。
' g' T5 z: f  y9 b" d9 p官方文档
5 A6 f7 Y6 ^* g8 o" c0 O( f  s6 A! u7 C+ P: }5 N
OEMiRoT服务5 k' V; p4 K% W9 A. T
1) 安全启动 (信任根服务): 5 N0 K+ o; u) e/ H- c$ P
它是每次系统重置后运行的不可变代码。它会激活 STM32 运行时保护,并在每次执行之前验证应用程序代码的真实性和完整性。 ! H5 D; V3 k0 I2 H% g
  • 完整性 :确保不会运行任何损坏或恶意修改的固件。
  • 真实性 :验证固件来自可信且已知的来源,以防止未经授权的实体安装和执行代码。
      B$ r2 x9 g8 _5 Z- a1 C* t# `! a
2) 安全固件更新 : 0 D- w3 m% }2 S# z9 V9 s- i
它是一个不可变的代码,用于检测新固件映像是否可用,检查其 真实性 并 完整性 在解密后安装之前验证代码的
% a0 M6 `9 y- ^4 z2 X: g- n
1 g9 t. c0 d2 V+ n% T% g; ? OEMIROT_20240819134910.png
$ C* W% l9 L/ z从图中可以看到,OEMiRoT 服务程序保存在片内的Flash
1 W# [& W5 L/ v7 I
( \2 I; \. U" I1 v# |
官方文档/ r4 w/ X8 i& P' {

5 d( t. B5 D: M$ e下面是两种安全机制的不同启动流程:) c8 @) [0 z( i! }. J% M
8 M  c6 W9 r/ Y- \3 c

0 D) F! b3 k8 `1 q$ `, S Security_STM32H7S-BootPath.png
) g. G, j& w4 j3 W1 F  ^# Q4 ]
$ J0 @2 E  R7 s, J: q调试认证 当 STM32 产品状态未打开时,用户可以通过向 STM32 设备发送密码或证书链来触发调试验证服务。
  T# ^! N- O) E0 w/ ^" r& D! \这两个选项被称为调试身份验证方法。2 J- r" s3 Y3 I% q+ C
调试验证协议使用 STM32 设备调试访问端口 0 (DAP0) 和 DBGMCU IP 进行通信。2 V( V6 `8 Z" U. p

2 x; m( {# `4 A
% d9 q0 R$ }" L- a在使用调试身份验证服务之前,用户必须为 STM32 提供证书。调试身份验证允许两种凭证:密码或证书:5 @9 ~; ~7 t0 A% {! K' W' x! h" r
' I3 }$ q0 V' v% F) i' s; P
- 密码方法,用户必须在 STM32 内提供密码哈希值(SHA256)。- C( |+ c" @% o0 Q( @
- 证书方法,用户必须提供调试身份验证根证书和调试身份验证授权权限(用于回归和/或调试重启)所携带公钥的哈希值。
2 D8 C+ u! c5 ]" u. s% a- v. I: w) d- J5 w$ A7 t
使用密码方法时,只能进行完全回归。
+ Q! c, a1 _9 y下图显示了用户如何使用密码方法触发调试身份验证服务。
5 w4 Z  L) ]9 N3 D1 k
$ b6 o3 T2 r& G8 [2 f 微信截图_20240819162238.png ; K  s) S  u0 u" `7 m% _" R
要访问调试验证功能,主机必须向 STM32 设备发送密码。STM32 设备收到密码后,会验证密码的哈希值是否与密钥存储区内的哈希值一致。8 U4 i1 }+ S+ b: U# G/ F- b
* T8 @2 h. Z5 O# H4 \) ?- ?( B+ F
使用证书调试身份验证概述
1 ^9 t) n! s4 v+ [为帮助理解使用证书调试身份验证的过程,本节将重点介绍最简单的证书链。但实际上,STM32 设备接收的是证书链,而不是一个证书。调试验证证书链的原理与 X509 证书链类似,但这里使用的证书格式是专有的。
6 j4 G5 X6 x3 @+ z% m. i8 E5 F! w& b3 l
8 {5 ?! h& M+ W; _

6 a  E- Y) o- U6 t6 Q3 R调试认证 参考手册 AN6008! P( A* O9 \; V, M' @9 ^

  ^0 g7 g0 h6 X. l" F1 R) w) C6 |( L2 P0 G6 M

1 x4 K+ H, E6 D+ X, m3 ?
0 @9 \; Q  ?- F$ }2 a5 p/ Q& v5 y* d+ g$ L3 s% x
. L8 Q% n& U# y
赞 收藏 评论0 发布时间:2024-8-19 16:40

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版