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

Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列

[复制链接]
STMCU小助手 发布时间:2022-11-12 15:59
引言
" Q; H1 m* f0 C- A在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。! ~( e7 ~; n  w; }* \7 O
STM32L5 和 STM32U5 系列器件(本文档的后面部分称其为 STM32L5、STM32U5 或 STM32L5/U5)基于高性能 Arm®Cortex®-M33 32 位 RISC 内核。该处理器使用 Armv8‑M 架构,主要应用于非常注重安全性的环境。3 E. P! u8 S* X7 N5 _
面向 Armv8-M 的 Arm® TrustZone®技术是一种安全扩展,旨在将硬件划分为安全区域和非安全区域。通过 Arm® TrustZone®技术和软件方法,STM32L5/U5 微控制器(MCU)为安全应用程序提供良好的设计灵活性。
2 e( X9 Z. Q# m; E- H& q本文档介绍 Arm® TrustZone®技术和 STM32L5/U5 器件的各项特性,这些特性允许将 MCU 内存/资源划分为安全区域和非安全区域。
8 q6 Q% l9 f+ A
9 c0 F  e1 I: ~  f0 c2 q7 f4 a1 概述2 _* v  v  k4 f" @( n$ u& e$ h
本应用笔记适用于基于 Arm® Cortex®内核设备的 STM32L5 和 STM32U5 系列微控制器。
3 |0 E- e& a; {提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
4 t# o3 P; |( z0 v1 W( ~4 l# x% q
. e4 c( y' e- f" P4 G4 K2 Arm TrustZone 技术
+ {. H# A4 q/ s2 M$ K% O) {2.1 概述

/ s6 Q% Y8 O- V. D- |面向 Armv8-M 的 Arm TrustZone 技术将系统分为两个区域:一个是安全区域,另一个是非安全区域。安全与非安全区域的划分是基于内存映射的。
  ^( e: m8 f$ r. i; W! t所有可用的微控制器资源(包括 Flash 存储器、SRAM、外部存储器、外设和中断)被分配给安全区域或非安全区域。规划了这些资源的安全属性之后,非安全区域只能访问非安全内存和资源,而安全区域可以访问这两个区域中的所有内存和资源,包括安全和非安全资源。
2 j  G0 A* T% T/ {) ^需要保护的重要数据(如加密密钥)必须在安全区域中以安全的方式进行存储和处理。
# s6 Y6 y, u/ a) m1 L* r! k8 }, p代码的执行位置定义了其类型:$ a1 ]& M; L( v; A$ R
• 如果代码在安全内存中执行,则称其为安全代码。
- U; \5 j) |" ^8 U  n+ h, W/ z" I8 f• 如果代码在非安全内存中执行,则称其为非安全代码。; T. a. n# _+ r7 {; P
安全代码和非安全代码在相同的 STM32L5/U5 器件上运行,如下图所示。+ z. l; n7 ~( r- w$ L

9 Q& t3 h$ d) i4 [4 R 9~HX_@LWYY6AOPWZNLVUEHQ.png
( K0 p: I7 t( w% d  d6 a, G; |" N1 J& P% f' b" M) p
2.2 安全状态
2 J' o  H1 ~; s7 W* {# f% P7 b在简化视图中,执行的代码地址决定了 CPU 的安全状态,即安全或非安全:& X$ ^' I( [, A) S4 e
• 如果 CPU 在非安全内存中运行代码,则 CPU 处于非安全状态。$ ~% g( d1 K* q+ B: d& c  U
• 如果 CPU 在安全内存中运行代码,则 CPU 处于安全状态。" B9 q5 o& J) W% N
Armv8-M 技术定义了以下地址安全属性:
$ U: O7 T+ v, p+ I' c• 安全) F8 z3 X" c3 e+ A
安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。& X" Y" P6 ^& v) e
• 非安全可调用(NSC)
. I/ _% O0 ~, I$ WNSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。9 S; j; s, _. R( i2 O
当非安全代码调用安全端函数时:
" Q  Q. O' A7 D. K4 }4 e, Z– API 中的第一条指令必须是 SG 指令。- a1 V6 y9 |+ l! L* x) ~
– SG 指令必须在 NSC 区域内。
2 F( Y3 O: x& Y) r3 _6 N$ s* @安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。% i: C4 w6 K3 e  H1 E; h' e, x
• 非安全  Y3 U. k  Z' e$ C6 p, S  F9 `
非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。9 u/ i* D" |$ @5 [
3 z% d" e4 X; d) K$ [7 j4 A
3 在 STM32L5 和 STM32U5 系列器件上实现 TrustZone
  ~; }2 l6 y1 [5 l8 S' R3.1 激活 STM32L5 和 STM32U5 TrustZone
* }. {5 I) E7 G0 f
在 STM32L5/U5 中,TrustZone 是默认禁用的,可以通过在相应的选项字节中设置 TZEN 选项位进行启用。: X" S7 ?3 @3 O
本文档中描述的所有特性适用于启用了 TrustZone 的 STM32L5/U5 器件。
1 i% ]* j" a6 `+ f" \; f- d! c8 M; i/ O' Y+ b( `+ M9 S
3.2 TrustZone 框图) ^8 ?3 u( B/ a
在 STM32L5/U5 中,TrustZone 的实现得益于 SAU(安全属性单元)、IDAU(实现定义的属性单元)、Flash 存储器和 GTZC(全局 TrustZone 安全控制器 )。
$ H7 q2 R8 J  Y" k. T9 g! @6 r下面的框图详细说明了 TrustZone 的实现过程。& T# L% [& K. @$ N9 \4 }" L. h# B
$ v+ A" h3 g9 D0 u$ F5 |2 D
SVHNG~X{YP)YTG)J7~IM50N.png
- p' ]! s; m; Y1 d- L
6 Z1 Y/ g# G8 y4 d8 U# i8 C' r+ N. x3.3 安全属性单元(SAU)和实现定义的属性单元(IDAU)* o, m8 P2 Z& X% l1 r
CPU 看到的内存地址安全状态由内部 SAU(安全属性单元)和 IDAU(实现定义的属性单元)组合控制。
& v( M1 B* G) C4 n5 q3 E; g安全属性的最终结果取决于 IDAU 和 SAU 其中较高的安全设置。安全属性的优先级如下:0 [$ B0 ^' n, r9 O$ G
• 安全具有最高的安全优先级。9 G3 x# K/ |+ W/ G' I  q! l# `
• 非安全可调用的安全优先级次之。( O* E/ R* ?  ]" F
• 非安全的安全优先级最低。/ P3 b& M: w0 F, j1 i
下表显示了如何将特定的安全属性(安全、非安全、激活非安全可调用)分配给特定地址。
1 D/ n$ F$ {8 I7 y4 S2 Q0 l
' ]7 B+ K( M0 T, F! Y `~8]D%NEAFVWXQ}}51)[MPI.png ( k/ }* F1 D$ |

* E: c7 P) r6 e, S* z/ ?" U
! |( c9 l! s$ M  A3.3.1 STM32L5 和 STM32U5 的 IDAU 和存储器别名使用

% o( t" Y# K& Q) j# u) i3 V8 oSTM32L5/U5 内存映射遵循 Arm 的建议实现一个重复的内存映射,一个用于安全视图,另一个用于非安全视图。  O; C3 ]9 P& [: y% U
这意味着内存映射的每个区域(代码、SRAM、外设)被分成两个子区域,其中内部存储和外设被解码在两个单独的地址位置 - 非安全视图中和安全视图中。IDAU 的实现定义了这些区域的安全属性。6 t( p6 c. {8 q' T
IDAU 内存映射分区不可配置。它由硬件确定。下表显示了 STM32L5/U5 IDAU 定义的内存映射安全属性分区。
% c6 H% @7 s8 u! r; G. F' a
- D* p/ q  y9 f0 P: F( d. T }T`E2EWFE_0LUA3[(}FU`D8.png
9 [2 @& L! y5 ?! |& t( o" }
  S9 Q2 P- Z- v* A2 C3.3.2 STM32L5 和 STM32U5 SAU
1 t* a2 {* W" U% ~+ W; sSTM32L5/U5 中有 8 个 SAU 区域。用户通过 SAU 修改所需的安全配置分区,如下表所示。启用 TrustZone 后,SAU 将所有地址默认为安全:所有内存区域均认为安全。
* A5 ^# [& ~8 ~  V+ O* O
) S3 |7 U( R, N) u) x PHM]Y$)4YEDB%I2S~D4MCOT.png ; |. ^$ w: B+ X" l  f! ?: ?
# q$ V& k& y7 L
示例
3 }9 M' @7 s# ?4 n外设在两个地址范围被解码:非安全视图中的 0x4000 0000 和安全视图中的 0x5000 0000。, R, y1 g3 {/ U) \7 I5 R8 E* `
根据 SAU 和 IDAU 的编程,安全代码通过生成安全事务来访问安全视图中的外设,而非安全代码在非安全视图中的另一个地址访问相同的外设。根据 GTZC/TZSC 如何定义外设安全属性,授权或拒绝访问。详情请参见第 4 节 和第 5 节 。
/ y4 T8 L5 {" r5 Q, I& f
1 m! Y8 u$ m  @/ y# _完整版请查看:附件3 ?, `. L  c+ m- b$ D" @3 d
$ s. ]& ?7 p4 l

zh.DM00068118.pdf

下载

377.72 KB, 下载次数: 3

收藏 评论0 发布时间:2022-11-12 15:59

举报

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