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

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

[复制链接]
KEY1 发布时间:2024-8-19 16:40
STM32H7R7/S7系列芯片有很多新的安全特性,这是我们以往的开发设计过程中没有太关注或者较少用到的特性,但是这些特性对量产和代码保护是很有用的。
3 i9 B3 `4 a' |$ z8 T
这是一款基于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
; H( [! m6 a; N# g2 e- C: I( k: r. V
STM32H7RS 系列 不同于H7系列,产品特性和开发方式都有变化
) C1 @2 a  u1 {. LH7RS系列  官方宣称是 低成本的器件,但是我搜了下淘宝的价格,还是比较高的, 可能是由于零售渠道的原因,# |& H: ~7 _8 m: @- E
但是分析这个芯片的特点, 可以判断出来 它的设计制造成本是比常规H7系列要低,为什么这么说,
+ A& `3 U& j9 |# _. P因为相对于H7系列 ,优化了资源配置, 缩减了一些不常用的接口和资源, 加入了更多了安全相关功能,我发现的最主要的几点是 :1它的内部Flash很小,只有64KB ,2 取消了MIPI接口,一般这个接口的屏幕要贵一些,
* S6 w; F# l( a
+ h* ~8 a  F; `9 d这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。
& R4 ]$ B2 C/ |- b1 r7 U通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;: _# ?7 x9 I2 [
然后在CubeMX中 也对该系列芯片进行了深度支持,5 |6 L8 H1 C; b; Z: F7 A6 ?
在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项,
' ~3 q+ d1 ?: c" J2 z! S首先就是在 Project Manager选项卡中 多了 2项
, v2 ~6 u( A3 H# f1 n; B: j 微信截图_20240819010413.png
$ O5 r; {( w" z2 s4 P" a& Q$ Z这几项在设计时 一般情况中间的Appli 是必选,0 M  q9 c  }4 d, x/ J" j
第1项Boot 就是片内Flash的工程代码,
6 }0 ]1 K. u* l第2项Appli 就是片外Flash的工程代码,
, N. ?0 x0 e) b  T# n8 O' Q, O$ {8 Z3 d( j
然后在 Tools 选项卡中 是对内存分配,MPU分配相关的设置6 @$ Y* `7 U. v) Y) E
微信截图_20240819011110.png
# M7 W0 v8 Z2 D5 v* k  f: p  B0 V
从CubeMX中 基本可以看到, 配置过程比一般的芯片开发要复杂一些,但是 这些配置内容是无法避免的,就算用其他的芯片,# u* R+ q3 s( F4 N6 n. v
也需要类似的配置过程,只是有可能是用户直接在代码中实现的,而非在配置界面进行配置的。* m6 m0 ~  |3 h" |3 p0 h) \
; G+ @" E0 Z3 V
一般情况下要使用单片机进行复杂的的GUI程序开发,需要面对 几个问题:6 ~$ I0 p/ v' g5 l
1 需要较多的 RAM 空间作为 图像缓存,对于800*400及以上的屏幕就需要外扩片外RAM ,
2 n& j; O: Y& l2一些静态图片和字库会占用较多的Flash空间,这些内容一般情况下片内Flash是放不下的,所以还得扩展片外Flash,
! T+ @. \7 C2 }: U/ `1 [' s5 d8 @2 r8 ^- p4 r
这些必要的过程,CubeMX已经将相关的配置加入了其中,所以会使得配置内容比常规的开发要多一些步骤,3 T' p+ Y6 O* x7 ?2 a5 U
但是整体上来看,原本复杂的开发过程中的关键步骤现在可以在CubeMX中进行部分配置了,对整个代码项目是便捷的。- t- ^0 ~+ o& E# r  r3 K
加上TouchGFX 可以给项目生成一套完整的可以直接运行的工程代码,如果使用官方开发板原理图的接口,那项目开发起来简直就是飞速了。/ j/ D6 A  q- s3 `2 _0 j
# Q4 [3 M# a- h' m" |9 d
. }# ~; l1 G" i( y4 d
STM32H7RS 生命周期的产品状态与 STM32H5 新系列类似。该生命周期集成了对调试验证功能的支持。
" W' `) O" g1 q. y
2 ^& O$ q6 B% n+ U2 E- ]
产品状态
说明
可进行的过渡状态
开放状态(Open)
用于无限制开发的状态。HUK  隐藏,用户可自由试验,调试器打开
预置状态
预置状态(Provisioning)
用于提供密钥、确保固件安全和设置选项字节的状态
关闭、锁定、回归
关闭(Closed)
最终产品交付状态 -  允许调试验证(调试重启或回归)
回归
锁定(Locked)
最终产品交付状态 - 无法进行调试验证。
回归(Regression)
解除运行以允许完全调试的过程
打开

5 ^+ @  I( U& ~; u- v! ~3 T$ {
+ p7 g% @8 Y' K& n5 D# u% pH7S7系列的安全功能 有很多特性," o  E" z5 Q- A* n
微信截图_20240819093000.png
  m& X3 \0 l7 [2 \ST官方安全特性介绍
# J% \" k8 M( g) K$ K- p6 B, I3 P* K, X
- F; r# l4 Y: ]9 S/ B5 }
STiRoT 代表 ST 不可变(不可更改)信任根,是第一个启动阶段。STiRoT 的目标是实现 SESIP 3 级认证。由于 STiRoT 需要硬件加密功能,因此仅在 STM32H7Sxx 产品线上提供,STM32H7R系列没有此功能
  ~7 M- t4 ~9 R$ i+ G( Z8 o3 o4 Z8 ^* l  I+ f8 Q& ~
STiRoT 嵌入在 STM32H7Sxx 的不可变区域中,提供两种服务:; i" b9 p& ~$ p) ~. X
• 安全启动(信任服务根)是一个不可更改的代码,在系统重置后始终会被执行(1)。它能激活运行时保护,
+ Y: O5 m: y, N+ L# [& K然后在每次执行前验证应用程序 (2) 代码的真实性和完整性 (3)。
* d9 C" }: b" ], `! h1 I" x• 安全固件更新应用程序是一个不可变的代码,它能检测到新的固件镜像可用。它会检查其真实性 (1),然. f3 e* ?5 }3 P' A" K9 i3 u
后检查代码的完整性 (2),然后在解密后安装 (3)。4 S3 q' j" h9 z; r' @
官方文档
: m6 `3 S0 o( G0 S( n9 q0 W* B% X( t
OEMiRoT服务
" y' I8 _) [" y3 P4 p. O1) 安全启动 (信任根服务):
9 p% Y- ?9 A$ x; R; J( M! g它是每次系统重置后运行的不可变代码。它会激活 STM32 运行时保护,并在每次执行之前验证应用程序代码的真实性和完整性。 ' d, j0 M" B9 }' D+ E: K
  • 完整性 :确保不会运行任何损坏或恶意修改的固件。
  • 真实性 :验证固件来自可信且已知的来源,以防止未经授权的实体安装和执行代码。
    5 y" H! J# `  Z6 ?
2) 安全固件更新 , e) Z, z; W( e0 a5 U  {" U  u. h
它是一个不可变的代码,用于检测新固件映像是否可用,检查其 真实性 完整性 在解密后安装之前验证代码的   h  r3 D3 A& J2 t9 K2 u  N" @
3 m* _: W1 r! \6 y
OEMIROT_20240819134910.png ; S1 P# _- \/ y6 b. {7 V
从图中可以看到,OEMiRoT 服务程序保存在片内的Flash
! e5 q* [3 R6 _! J

4 M9 C/ S& ^7 ]9 x7 `( w官方文档
- @& t6 H1 P9 Y3 F. Q4 G
7 a$ v' t1 V& n" r3 B; ^% e下面是两种安全机制的不同启动流程:
6 h7 v1 ~8 L! }" l! h/ D( ~9 W

0 E4 t/ [& E) u. T( A1 `7 R) k$ [. s2 |' t
Security_STM32H7S-BootPath.png # M$ B% F/ i5 T7 @
& ?8 F" N1 Q: o" d0 l" o. n
调试认证 当 STM32 产品状态未打开时,用户可以通过向 STM32 设备发送密码或证书链来触发调试验证服务。8 {9 P. o' O- }5 y/ K0 @
这两个选项被称为调试身份验证方法。" ?# ~( j" w; X% m) f) C
调试验证协议使用 STM32 设备调试访问端口 0 (DAP0) 和 DBGMCU IP 进行通信。
: m9 b* a3 C" b, I( M/ R! J  @2 N5 e$ ?& D1 ~  S$ u
3 x+ E3 l  T/ G, [
在使用调试身份验证服务之前,用户必须为 STM32 提供证书。调试身份验证允许两种凭证:密码或证书:/ X- `$ \2 z0 r& O: B) A1 g

' w+ v- e! z7 k% l - 密码方法,用户必须在 STM32 内提供密码哈希值(SHA256)。
5 W& S" Z+ j4 B- P. O  H - 证书方法,用户必须提供调试身份验证根证书和调试身份验证授权权限(用于回归和/或调试重启)所携带公钥的哈希值。  b1 q* E* P5 k

) ^0 a: k7 @6 q' R5 p' M使用密码方法时,只能进行完全回归。' J8 e5 ]3 ?- \) G# o
下图显示了用户如何使用密码方法触发调试身份验证服务。
! ~% H7 \1 x. y, ?* B% m" M' U  _# z/ F2 C0 r! `
微信截图_20240819162238.png
* V. B5 A( Q2 O5 V* j要访问调试验证功能,主机必须向 STM32 设备发送密码。STM32 设备收到密码后,会验证密码的哈希值是否与密钥存储区内的哈希值一致。
* F5 A, `& g$ j9 \
* ~; o% N1 m- |& o/ ]) k, M6 m2 T使用证书调试身份验证概述
1 s6 b8 ?, W8 \1 Y为帮助理解使用证书调试身份验证的过程,本节将重点介绍最简单的证书链。但实际上,STM32 设备接收的是证书链,而不是一个证书。调试验证证书链的原理与 X509 证书链类似,但这里使用的证书格式是专有的。
6 |" Z5 Y& K: Q( j' k# c4 _
0 c" o9 V9 L" e$ m2 L% t7 y, h! g4 v2 _' }7 k8 @

" B6 u# D7 `/ u$ _7 E: g调试认证 参考手册 AN6008
0 `3 j. S  w! u' ]
1 B6 D5 \7 E8 c) g( g; R' Y9 U! Z7 i4 H" {! {# z' k. B

  ?; E* C6 |5 m) F( N$ j3 M) E6 w% Y- e
4 T. H. R; |: X5 q

3 X( ?, V0 L  l
收藏 评论0 发布时间:2024-8-19 16:40

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版