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

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

[复制链接]
STMCU小助手 发布时间:2022-11-12 15:59
引言; O0 P. q4 l& ^$ U
在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。5 T  g/ y; ?# n; _- T, P& r( [, H
STM32L5 和 STM32U5 系列器件(本文档的后面部分称其为 STM32L5、STM32U5 或 STM32L5/U5)基于高性能 Arm®Cortex®-M33 32 位 RISC 内核。该处理器使用 Armv8‑M 架构,主要应用于非常注重安全性的环境。' r4 b4 M8 O) |0 z' Q
面向 Armv8-M 的 Arm® TrustZone®技术是一种安全扩展,旨在将硬件划分为安全区域和非安全区域。通过 Arm® TrustZone®技术和软件方法,STM32L5/U5 微控制器(MCU)为安全应用程序提供良好的设计灵活性。9 z) l3 @1 U: m9 i# A
本文档介绍 Arm® TrustZone®技术和 STM32L5/U5 器件的各项特性,这些特性允许将 MCU 内存/资源划分为安全区域和非安全区域。5 r/ Y7 z# k3 H5 P! I
+ @0 }: R, @4 k1 a2 A
1 概述
9 X( ?7 n/ t* l" C6 t本应用笔记适用于基于 Arm® Cortex®内核设备的 STM32L5 和 STM32U5 系列微控制器。  i" [' d3 F+ P1 Z# O
提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。+ p, c3 T  _2 N7 L/ D0 m; h

7 T  \8 D! X# E; p7 }% H+ }2 Arm TrustZone 技术
6 B) Z) e6 l- i; X: t2.1 概述
+ G, |# k0 ]) X' Y: g
面向 Armv8-M 的 Arm TrustZone 技术将系统分为两个区域:一个是安全区域,另一个是非安全区域。安全与非安全区域的划分是基于内存映射的。
/ |( G9 ^) _4 s所有可用的微控制器资源(包括 Flash 存储器、SRAM、外部存储器、外设和中断)被分配给安全区域或非安全区域。规划了这些资源的安全属性之后,非安全区域只能访问非安全内存和资源,而安全区域可以访问这两个区域中的所有内存和资源,包括安全和非安全资源。
, Q% a& K. v* M. k/ p$ a需要保护的重要数据(如加密密钥)必须在安全区域中以安全的方式进行存储和处理。. E" p0 D4 ^* Z9 t0 [5 I
代码的执行位置定义了其类型:* p# S' g2 k0 T2 G
• 如果代码在安全内存中执行,则称其为安全代码。) Y6 A% Y( L6 x9 L6 q
• 如果代码在非安全内存中执行,则称其为非安全代码。$ |7 U5 T' e! h1 {! e% g+ j0 s
安全代码和非安全代码在相同的 STM32L5/U5 器件上运行,如下图所示。* }: H% n+ _) b6 L3 Q% A. _( a" s

& p* a0 l$ H4 W. O: X 9~HX_@LWYY6AOPWZNLVUEHQ.png   L1 U  D" o- {/ \  ^

3 Y6 L: g4 Q4 @. W' @2.2 安全状态0 t* K: K# Y  U5 W7 R  ~, ?
在简化视图中,执行的代码地址决定了 CPU 的安全状态,即安全或非安全:, ?5 \' G; I( s7 h( C. W
• 如果 CPU 在非安全内存中运行代码,则 CPU 处于非安全状态。
1 `' ?0 A& j2 ~5 ^0 u8 U6 q1 f3 P• 如果 CPU 在安全内存中运行代码,则 CPU 处于安全状态。3 B, z& C9 y" M
Armv8-M 技术定义了以下地址安全属性:
" l+ v" e2 V7 d• 安全
* Q+ o5 L. `" h; `安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。
6 D, ^2 |% Q% N• 非安全可调用(NSC)" ^9 i& u* |# ^2 n9 l6 n/ w
NSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。
3 d: S* u; v% [& c- N# U8 P当非安全代码调用安全端函数时:
! T( D% f3 J3 c1 D8 o( T. \– API 中的第一条指令必须是 SG 指令。
5 k5 m- k) G+ f6 P- f/ ^– SG 指令必须在 NSC 区域内。
" M! {4 {2 w, p& K0 B) i) K" [0 M4 {安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。
. w! I# p+ i& ]5 ]3 C# S7 K• 非安全
: A$ }2 q- ~" _% z0 W$ X非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。
7 g$ k, G1 O. L7 F( Q: l/ L" T0 F# L/ g7 w" ~
3 在 STM32L5 和 STM32U5 系列器件上实现 TrustZone
* d: Y9 c* e/ c+ F3 Q3.1 激活 STM32L5 和 STM32U5 TrustZone
+ E- R: z! P; [  F% A0 f" g
在 STM32L5/U5 中,TrustZone 是默认禁用的,可以通过在相应的选项字节中设置 TZEN 选项位进行启用。
: S. P, V% _! r/ V/ S本文档中描述的所有特性适用于启用了 TrustZone 的 STM32L5/U5 器件。
7 @6 {- J5 s  y' m6 b: y: {; p- i& M- D6 E. Q4 M
3.2 TrustZone 框图* M5 x1 T' w' C8 Q$ y' b! H
在 STM32L5/U5 中,TrustZone 的实现得益于 SAU(安全属性单元)、IDAU(实现定义的属性单元)、Flash 存储器和 GTZC(全局 TrustZone 安全控制器 )。) J% d( ~% w3 J; A: h
下面的框图详细说明了 TrustZone 的实现过程。- c9 Z$ z2 o7 m9 j) n, t$ H) O) n# Y

/ N1 ^% N: z' a% N7 N0 d% C SVHNG~X{YP)YTG)J7~IM50N.png
$ X+ _4 m6 v& I/ I- d9 }4 n' ^* h! r  W9 f9 `& Z
3.3 安全属性单元(SAU)和实现定义的属性单元(IDAU)! H- L$ `9 ^% C/ r9 l$ p
CPU 看到的内存地址安全状态由内部 SAU(安全属性单元)和 IDAU(实现定义的属性单元)组合控制。
, w/ O1 b6 {6 l6 T3 ^5 b2 Q安全属性的最终结果取决于 IDAU 和 SAU 其中较高的安全设置。安全属性的优先级如下:# O( V2 M) W. E9 u1 |3 z. k
• 安全具有最高的安全优先级。( n# k* Y* c$ G0 a
• 非安全可调用的安全优先级次之。0 p+ ?5 K' e( T7 n5 `
• 非安全的安全优先级最低。2 g5 ]  j* J6 B6 B6 b7 A2 Y2 t
下表显示了如何将特定的安全属性(安全、非安全、激活非安全可调用)分配给特定地址。
2 }/ r% G1 B" X$ S5 T
, b  O* F6 w. d+ n* Y% g `~8]D%NEAFVWXQ}}51)[MPI.png
; x8 m9 A( `/ X# R* s/ `) |( C6 I( d, {
  m; s2 p( t9 {
3.3.1 STM32L5 和 STM32U5 的 IDAU 和存储器别名使用
% ~2 Z6 \1 A( o& Y  I6 l
STM32L5/U5 内存映射遵循 Arm 的建议实现一个重复的内存映射,一个用于安全视图,另一个用于非安全视图。# U+ c$ B: A& `# o' j, [, c3 Q4 n
这意味着内存映射的每个区域(代码、SRAM、外设)被分成两个子区域,其中内部存储和外设被解码在两个单独的地址位置 - 非安全视图中和安全视图中。IDAU 的实现定义了这些区域的安全属性。
  u, j, c) S4 ?! n2 P- Z! A; ]IDAU 内存映射分区不可配置。它由硬件确定。下表显示了 STM32L5/U5 IDAU 定义的内存映射安全属性分区。5 G3 Y/ n1 A9 ?  `. D8 b" a. A$ F
$ F9 D" S6 h1 i, i
}T`E2EWFE_0LUA3[(}FU`D8.png
/ j2 N7 ~0 X0 z
4 }# ]( |8 t# |  Q3 {3.3.2 STM32L5 和 STM32U5 SAU
& _# |* d: v1 A7 u# R7 x8 iSTM32L5/U5 中有 8 个 SAU 区域。用户通过 SAU 修改所需的安全配置分区,如下表所示。启用 TrustZone 后,SAU 将所有地址默认为安全:所有内存区域均认为安全。
4 X2 Y" f7 Z: B/ r* w; n! y( a0 F" \+ k$ t- r1 a6 M4 a
PHM]Y$)4YEDB%I2S~D4MCOT.png . Q" `# C% O( s1 G9 c- N" ^* W

; T. Z! H' U/ M" s2 E, f8 z8 p示例
' T- S, W# w* {7 I外设在两个地址范围被解码:非安全视图中的 0x4000 0000 和安全视图中的 0x5000 0000。+ E" G# i- x' o" ^$ y. ?: J
根据 SAU 和 IDAU 的编程,安全代码通过生成安全事务来访问安全视图中的外设,而非安全代码在非安全视图中的另一个地址访问相同的外设。根据 GTZC/TZSC 如何定义外设安全属性,授权或拒绝访问。详情请参见第 4 节 和第 5 节 。! G6 I' H2 {+ H' A
' W% Q5 X+ A1 k
完整版请查看:附件
: T% i, _& K0 d( @- @1 C8 e' C' Y% b9 a& Y# v8 f

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 手机版