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

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

[复制链接]
KEY1 发布时间:2024-8-19 16:40
STM32H7R7/S7系列芯片有很多新的安全特性,这是我们以往的开发设计过程中没有太关注或者较少用到的特性,但是这些特性对量产和代码保护是很有用的。
) i4 b4 [" h) z  n) n9 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
, U3 v4 U" g: k( L' t# U
STM32H7RS 系列 不同于H7系列,产品特性和开发方式都有变化$ l  U6 y# [+ O% k/ @
H7RS系列  官方宣称是 低成本的器件,但是我搜了下淘宝的价格,还是比较高的, 可能是由于零售渠道的原因,$ ?3 [2 l, q" \! L- I9 [
但是分析这个芯片的特点, 可以判断出来 它的设计制造成本是比常规H7系列要低,为什么这么说,
  S+ G3 q# e' t* J因为相对于H7系列 ,优化了资源配置, 缩减了一些不常用的接口和资源, 加入了更多了安全相关功能,我发现的最主要的几点是 :1它的内部Flash很小,只有64KB ,2 取消了MIPI接口,一般这个接口的屏幕要贵一些, $ p1 E5 y- c% Z: y

* M* \* x( g* u! A& @这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。4 W5 G$ v$ Y' q2 C6 {
通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;: c: k- I: O! A! j
然后在CubeMX中 也对该系列芯片进行了深度支持,
. z& }% U( U% Q: J! ~在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项,
' _. _* A5 J8 E) y8 N3 s2 E% M首先就是在 Project Manager选项卡中 多了 2项
, S. g0 T1 _' o) W 微信截图_20240819010413.png ! S; h$ @+ {, p6 g$ D7 A4 C4 ~' {
这几项在设计时 一般情况中间的Appli 是必选,2 J2 t" c: A8 }8 s. X3 [7 m7 M
第1项Boot 就是片内Flash的工程代码,
3 }! C' H8 ^2 ^( w第2项Appli 就是片外Flash的工程代码,  u9 ~! T4 n" g8 ~
1 y2 `: U" \0 J% w
然后在 Tools 选项卡中 是对内存分配,MPU分配相关的设置" n6 k$ P. B/ Z- ?# M
微信截图_20240819011110.png
1 L9 ?0 v2 H. Z- u( |3 \8 b2 o$ W. T* \% S6 \0 P5 S
从CubeMX中 基本可以看到, 配置过程比一般的芯片开发要复杂一些,但是 这些配置内容是无法避免的,就算用其他的芯片,
4 J0 p, c$ V* a, N) e也需要类似的配置过程,只是有可能是用户直接在代码中实现的,而非在配置界面进行配置的。1 K: g$ `# r" T! t1 R
1 V2 z* \8 O* `# d
一般情况下要使用单片机进行复杂的的GUI程序开发,需要面对 几个问题:5 h1 z* x3 M2 c+ Q
1 需要较多的 RAM 空间作为 图像缓存,对于800*400及以上的屏幕就需要外扩片外RAM ,
  m, S. v. Y# x+ o% e. U6 a2一些静态图片和字库会占用较多的Flash空间,这些内容一般情况下片内Flash是放不下的,所以还得扩展片外Flash,: m- H2 D7 Y1 n3 |4 e
) G. L5 D# Y; Y8 Q. v( Q/ o9 i
这些必要的过程,CubeMX已经将相关的配置加入了其中,所以会使得配置内容比常规的开发要多一些步骤,. Q& m7 G/ J7 T
但是整体上来看,原本复杂的开发过程中的关键步骤现在可以在CubeMX中进行部分配置了,对整个代码项目是便捷的。
( s; _( @, E, Y  v% `9 w2 K& v加上TouchGFX 可以给项目生成一套完整的可以直接运行的工程代码,如果使用官方开发板原理图的接口,那项目开发起来简直就是飞速了。; G* Q1 j1 \( {/ O1 d1 \* e

. z7 X3 I2 }  A' v
, W$ Y9 P# {& KSTM32H7RS 生命周期的产品状态与 STM32H5 新系列类似。该生命周期集成了对调试验证功能的支持。
/ P! Z) a9 T6 j( }, Z. P' z0 K, o( k$ o8 d" i
产品状态
说明
可进行的过渡状态
开放状态(Open)
用于无限制开发的状态。HUK  隐藏,用户可自由试验,调试器打开
预置状态
预置状态(Provisioning)
用于提供密钥、确保固件安全和设置选项字节的状态
关闭、锁定、回归
关闭(Closed)
最终产品交付状态 -  允许调试验证(调试重启或回归)
回归
锁定(Locked)
最终产品交付状态 - 无法进行调试验证。
回归(Regression)
解除运行以允许完全调试的过程
打开
' Y" K7 m5 o* ~) J2 t
/ P$ K# r$ ^2 N8 ^! r
H7S7系列的安全功能 有很多特性,
* n0 E# a! q( G/ M% F 微信截图_20240819093000.png 4 S0 n& Q: P4 P! Z& o* n
ST官方安全特性介绍2 E- {! R' N- e. y3 m% F; E6 Y

6 l$ Q/ U+ l( m4 t2 L
) v' M" g; R1 z& E% j  L$ ASTiRoT 代表 ST 不可变(不可更改)信任根,是第一个启动阶段。STiRoT 的目标是实现 SESIP 3 级认证。由于 STiRoT 需要硬件加密功能,因此仅在 STM32H7Sxx 产品线上提供,STM32H7R系列没有此功能( q9 B( \8 j& J/ u0 e
  [- _; R6 O( k$ A, G: i; e* q
STiRoT 嵌入在 STM32H7Sxx 的不可变区域中,提供两种服务:% B+ N) ]8 |: ]# k% |
• 安全启动(信任服务根)是一个不可更改的代码,在系统重置后始终会被执行(1)。它能激活运行时保护,% Y) y, w" Y; J' t
然后在每次执行前验证应用程序 (2) 代码的真实性和完整性 (3)。" `0 B* [/ S* [3 W5 ^( l
• 安全固件更新应用程序是一个不可变的代码,它能检测到新的固件镜像可用。它会检查其真实性 (1),然! Q$ x. b% n% m6 i
后检查代码的完整性 (2),然后在解密后安装 (3)。) z7 ^3 b1 {/ B: |( G& \3 r2 G' W
官方文档
3 b" g! t3 q/ u& k+ x: E* X  o! E% r' F# v
OEMiRoT服务
7 ]; z' R+ G' h& m0 r0 ]- d4 D1) 安全启动 (信任根服务): 0 P- |/ k# |7 `% Y9 T2 g
它是每次系统重置后运行的不可变代码。它会激活 STM32 运行时保护,并在每次执行之前验证应用程序代码的真实性和完整性。 + T, t; H- S, L! G% O# j+ d* m) [* u
  • 完整性 :确保不会运行任何损坏或恶意修改的固件。
  • 真实性 :验证固件来自可信且已知的来源,以防止未经授权的实体安装和执行代码。
    4 A7 Q5 u( i$ y
2) 安全固件更新
  L# u- o1 R# D4 @) Q( \它是一个不可变的代码,用于检测新固件映像是否可用,检查其 真实性 完整性 在解密后安装之前验证代码的 ; ~7 j1 n2 }7 z( g1 i3 L" Z2 B6 i+ @

7 z' p7 v$ `& z OEMIROT_20240819134910.png
' Q( z  d2 L. x9 o7 }$ l$ j从图中可以看到,OEMiRoT 服务程序保存在片内的Flash, V4 B6 T# u! o% w3 X2 l9 P: |5 T
$ H3 _1 ]+ v1 Q. W% E2 R! K- }1 @
官方文档
) R* I4 r& ?1 \  ^1 }# I" K' s2 @1 _4 R1 w; r$ a
下面是两种安全机制的不同启动流程:
+ S5 T) [# H+ a4 S) {/ I0 k( `
7 F1 H3 e5 Y  [7 Q0 s
& O, s$ p, ~' M0 n2 D
Security_STM32H7S-BootPath.png
7 ~$ n8 {6 \. l$ a3 O/ o1 o+ l$ W5 \; A4 o. F9 R
调试认证 当 STM32 产品状态未打开时,用户可以通过向 STM32 设备发送密码或证书链来触发调试验证服务。: q. j; w8 R; u2 ]7 c* T
这两个选项被称为调试身份验证方法。
' Z) `& }2 A' b调试验证协议使用 STM32 设备调试访问端口 0 (DAP0) 和 DBGMCU IP 进行通信。' Q  I6 P# q3 A$ s6 b  ^
- t& Q$ o9 q% L' v5 {
7 ~7 h6 e8 S9 K" V7 J3 ]% Y
在使用调试身份验证服务之前,用户必须为 STM32 提供证书。调试身份验证允许两种凭证:密码或证书:) C" t- d" W3 ]* H& V

) x$ M. ~: h* n - 密码方法,用户必须在 STM32 内提供密码哈希值(SHA256)。6 \4 v: g0 T4 k3 ?
- 证书方法,用户必须提供调试身份验证根证书和调试身份验证授权权限(用于回归和/或调试重启)所携带公钥的哈希值。
, D# ]) @0 j3 ~; g* X7 n: [
; C* X5 u3 c6 }8 k+ f/ d使用密码方法时,只能进行完全回归。
" v  a% U( N, W下图显示了用户如何使用密码方法触发调试身份验证服务。
/ f6 o* `  E0 o' k$ F  t% w- v  O& M, i3 y5 k" n
微信截图_20240819162238.png 2 o% l" I; R# L7 n5 G
要访问调试验证功能,主机必须向 STM32 设备发送密码。STM32 设备收到密码后,会验证密码的哈希值是否与密钥存储区内的哈希值一致。
$ v/ |" R- e3 Y8 d0 D5 S: O' z, A- r7 u- j$ Z$ I. g
使用证书调试身份验证概述
5 C2 N' Z% P6 k为帮助理解使用证书调试身份验证的过程,本节将重点介绍最简单的证书链。但实际上,STM32 设备接收的是证书链,而不是一个证书。调试验证证书链的原理与 X509 证书链类似,但这里使用的证书格式是专有的。
% Z- \. p+ Z) @6 U. }! V$ E! e6 W8 ]2 z3 [$ ]# x" b+ A: }
8 I! b! z8 A3 c( f6 g% d
2 r, S; U) S$ ^  v% ^
调试认证 参考手册 AN6008+ l' M# T: Q; |7 y
. j# U' f* P, X8 N/ [
, Q; X! a" G# U

7 A- ~: ^: {$ S( W: a. v  |+ C8 I0 B" c9 H$ i

& p: N* x% b# ?) x
5 [$ J, y2 _0 a( k6 c; o4 T- @
收藏 评论0 发布时间:2024-8-19 16:40

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版