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

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

[复制链接]
KEY1 发布时间:2024-8-19 16:40
STM32H7R7/S7系列芯片有很多新的安全特性,这是我们以往的开发设计过程中没有太关注或者较少用到的特性,但是这些特性对量产和代码保护是很有用的。

( x$ }1 k* i% K1 t( l
这是一款基于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

, B5 D! g& ^4 W, J, KSTM32H7RS 系列 不同于H7系列,产品特性和开发方式都有变化8 A  N. F0 H* f. }6 f- a
H7RS系列  官方宣称是 低成本的器件,但是我搜了下淘宝的价格,还是比较高的, 可能是由于零售渠道的原因,
$ W5 C% r. N$ S. P但是分析这个芯片的特点, 可以判断出来 它的设计制造成本是比常规H7系列要低,为什么这么说,0 I# H0 Z) e( a
因为相对于H7系列 ,优化了资源配置, 缩减了一些不常用的接口和资源, 加入了更多了安全相关功能,我发现的最主要的几点是 :1它的内部Flash很小,只有64KB ,2 取消了MIPI接口,一般这个接口的屏幕要贵一些, & ~5 `' S- }: l0 h6 |" g: ^" X

- o/ c& V5 \5 T8 W这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。
2 W8 D6 y  ?2 V; M$ D通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;
+ \, @" X% `+ L) l7 l9 _* x然后在CubeMX中 也对该系列芯片进行了深度支持,
! v6 j, q. l- O4 o& O在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项,2 p  T  `# ?) ^/ t3 Z# Y
首先就是在 Project Manager选项卡中 多了 2项
. g# R0 n2 g7 D: t& A, Z& | 微信截图_20240819010413.png
+ g& G- X* Q2 }" ?这几项在设计时 一般情况中间的Appli 是必选,( _' I/ Z) \0 G' z( _
第1项Boot 就是片内Flash的工程代码,
6 T/ w# ?9 X, g第2项Appli 就是片外Flash的工程代码,( O% F  e/ t$ Z

- w. o" e9 [+ j然后在 Tools 选项卡中 是对内存分配,MPU分配相关的设置
3 E1 O$ }6 J0 m1 d 微信截图_20240819011110.png
8 d% V: R: n3 j
9 L! N- o7 L( u7 m从CubeMX中 基本可以看到, 配置过程比一般的芯片开发要复杂一些,但是 这些配置内容是无法避免的,就算用其他的芯片,
. ~  d, G4 H# @* n' Y) L也需要类似的配置过程,只是有可能是用户直接在代码中实现的,而非在配置界面进行配置的。
; `& ]  A0 D9 O/ }6 j$ J
( `) ^9 N2 X  n( g! c: A3 j一般情况下要使用单片机进行复杂的的GUI程序开发,需要面对 几个问题:: S7 s+ L8 F* g. h% i6 {
1 需要较多的 RAM 空间作为 图像缓存,对于800*400及以上的屏幕就需要外扩片外RAM ,% e' X# R9 }$ j* e% f. D& {! r/ D
2一些静态图片和字库会占用较多的Flash空间,这些内容一般情况下片内Flash是放不下的,所以还得扩展片外Flash,2 [: u5 O# s  l

6 s; P$ t) C) {- \这些必要的过程,CubeMX已经将相关的配置加入了其中,所以会使得配置内容比常规的开发要多一些步骤,
0 W- r/ l+ p& Z7 ]  j但是整体上来看,原本复杂的开发过程中的关键步骤现在可以在CubeMX中进行部分配置了,对整个代码项目是便捷的。1 M" X5 n. Y7 R( b7 s5 c
加上TouchGFX 可以给项目生成一套完整的可以直接运行的工程代码,如果使用官方开发板原理图的接口,那项目开发起来简直就是飞速了。
: v; a  K7 O) p: k6 ?  Q
7 l1 E" i3 M& N. C8 j  G% P) O# W8 V1 t
STM32H7RS 生命周期的产品状态与 STM32H5 新系列类似。该生命周期集成了对调试验证功能的支持。
5 K2 E. Z7 `7 d% V; J2 s
/ \& C, p) n  Z( K0 V
产品状态
说明
可进行的过渡状态
开放状态(Open)
用于无限制开发的状态。HUK  隐藏,用户可自由试验,调试器打开
预置状态
预置状态(Provisioning)
用于提供密钥、确保固件安全和设置选项字节的状态
关闭、锁定、回归
关闭(Closed)
最终产品交付状态 -  允许调试验证(调试重启或回归)
回归
锁定(Locked)
最终产品交付状态 - 无法进行调试验证。
回归(Regression)
解除运行以允许完全调试的过程
打开
# n- d* _5 Q3 K4 V
7 l& n. n  P0 b* G5 z% Q
H7S7系列的安全功能 有很多特性,4 B% O4 W* R# f
微信截图_20240819093000.png
4 W& k6 e$ u6 zST官方安全特性介绍
- ?/ h; t4 J" D- J, r+ z9 e3 _
1 _# ^, n, O  C) P! b$ s& |0 K% B/ S" i  v4 i' v
STiRoT 代表 ST 不可变(不可更改)信任根,是第一个启动阶段。STiRoT 的目标是实现 SESIP 3 级认证。由于 STiRoT 需要硬件加密功能,因此仅在 STM32H7Sxx 产品线上提供,STM32H7R系列没有此功能! o4 w6 o* Y/ O! ^

. ?7 B1 E/ Y2 d" r5 k9 SSTiRoT 嵌入在 STM32H7Sxx 的不可变区域中,提供两种服务:8 p$ _+ r0 n2 o- P6 @# F+ m- V; M
• 安全启动(信任服务根)是一个不可更改的代码,在系统重置后始终会被执行(1)。它能激活运行时保护,
* ]( j* Z7 ]! f4 S3 K* I然后在每次执行前验证应用程序 (2) 代码的真实性和完整性 (3)。
4 u0 R. W3 c2 b( w• 安全固件更新应用程序是一个不可变的代码,它能检测到新的固件镜像可用。它会检查其真实性 (1),然
3 p9 M3 \& ~: B6 J8 h后检查代码的完整性 (2),然后在解密后安装 (3)。
5 _, {0 C: Y+ G: A& b4 n, R官方文档
1 ]8 e# C- x7 c' o. a( C  p$ R5 ?! h- X$ L& W6 }: K0 m
OEMiRoT服务
  Z/ E8 h( s9 ]9 `" _" ~1 n1) 安全启动 (信任根服务): * J, P  q. W. s) D+ L/ s" A3 A
它是每次系统重置后运行的不可变代码。它会激活 STM32 运行时保护,并在每次执行之前验证应用程序代码的真实性和完整性。 - |, v. f- p3 h# T" Y* l: o
  • 完整性 :确保不会运行任何损坏或恶意修改的固件。
  • 真实性 :验证固件来自可信且已知的来源,以防止未经授权的实体安装和执行代码。# w. J4 {  x- }$ A$ Z
2) 安全固件更新
( s( h' c$ i6 c: s) O( b- U! d" m* J它是一个不可变的代码,用于检测新固件映像是否可用,检查其 真实性 完整性 在解密后安装之前验证代码的 6 N8 p$ h3 F6 `+ C5 z9 A' @
+ n( y; X  O: ~' t
OEMIROT_20240819134910.png
* r6 j9 |, m- @; w' U3 m  {- X从图中可以看到,OEMiRoT 服务程序保存在片内的Flash
& }6 Y( q& [# z9 T% T  W
2 ~1 `' @/ \& ^) f
官方文档3 T0 @( p; b% u+ Q1 a9 f

: @; U5 i# Q7 g# W" o6 `* t下面是两种安全机制的不同启动流程:2 c8 H$ z/ q5 J3 G9 D! w
, g9 i- N8 W. L, y
* Z: }/ x  M. j
Security_STM32H7S-BootPath.png " ]9 P' M1 \0 e+ |$ @: k
8 j( n1 o( r( Y& ^6 Q6 R+ E' k+ N8 x% i
调试认证 当 STM32 产品状态未打开时,用户可以通过向 STM32 设备发送密码或证书链来触发调试验证服务。
0 i7 d2 O2 y/ ^1 K* e3 z# b+ c这两个选项被称为调试身份验证方法。' S$ K, C; z, k- r4 S& z3 m) D" O
调试验证协议使用 STM32 设备调试访问端口 0 (DAP0) 和 DBGMCU IP 进行通信。
2 b% v) U4 z8 q" z* j* K9 g) l, B
$ Q% W& {- V1 T6 Y! @- I& {! b
' E  X" {9 }% Z! |0 C* d0 f在使用调试身份验证服务之前,用户必须为 STM32 提供证书。调试身份验证允许两种凭证:密码或证书:; R$ D7 q9 E, U, H2 }2 M9 b

3 E+ o. E7 q8 a  a) k: B/ l - 密码方法,用户必须在 STM32 内提供密码哈希值(SHA256)。( _% ~3 v% Q7 c7 k, _/ R
- 证书方法,用户必须提供调试身份验证根证书和调试身份验证授权权限(用于回归和/或调试重启)所携带公钥的哈希值。
1 [) @" M6 T  G2 Y0 s
. g) t/ y2 Y; `1 j7 D$ ]使用密码方法时,只能进行完全回归。2 e+ D; R6 M- w
下图显示了用户如何使用密码方法触发调试身份验证服务。
, e4 ^$ Y6 i% M/ Z
, s! c4 A& d. E' C7 r. c& x+ {+ u 微信截图_20240819162238.png * N, H# @+ [: e7 g, o
要访问调试验证功能,主机必须向 STM32 设备发送密码。STM32 设备收到密码后,会验证密码的哈希值是否与密钥存储区内的哈希值一致。
  h  H" z( c8 J+ b4 [( R5 h
. _" S* _! p0 p4 E4 z/ i0 V$ [使用证书调试身份验证概述6 a" E6 x: _/ y1 c" X- Y' s
为帮助理解使用证书调试身份验证的过程,本节将重点介绍最简单的证书链。但实际上,STM32 设备接收的是证书链,而不是一个证书。调试验证证书链的原理与 X509 证书链类似,但这里使用的证书格式是专有的。
9 B& y8 \: H6 ]* F6 s/ C" O  t1 J- [

3 B" u! b) V" g! u' Q6 J' d! A7 R2 `3 {7 X& U# r% v
调试认证 参考手册 AN6008
4 l  ~% }$ C4 Q. R& p3 b
4 c7 g8 k5 {1 o/ c. R. @4 [/ c1 D4 j, J# N% n( S+ t/ A" |0 S  M1 T# d
. R; z5 ~- e# y& s
3 @* z" M$ ?4 {1 F8 V

( a1 p* U" i7 f; q" O
8 |' H( I- X! _3 B9 c3 ?7 @2 G; m' s
收藏 评论0 发布时间:2024-8-19 16:40

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版