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

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

[复制链接]
STMCU小助手 发布时间:2022-11-12 15:59
引言2 K8 J1 P9 m9 X# g* H/ I
在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。
% |. B+ F$ h, L; J) b( B7 XSTM32L5 和 STM32U5 系列器件(本文档的后面部分称其为 STM32L5、STM32U5 或 STM32L5/U5)基于高性能 Arm®Cortex®-M33 32 位 RISC 内核。该处理器使用 Armv8‑M 架构,主要应用于非常注重安全性的环境。. ?' v* @1 V' S' s, O* L- L* [
面向 Armv8-M 的 Arm® TrustZone®技术是一种安全扩展,旨在将硬件划分为安全区域和非安全区域。通过 Arm® TrustZone®技术和软件方法,STM32L5/U5 微控制器(MCU)为安全应用程序提供良好的设计灵活性。
' r, l4 x4 s3 x$ m% P本文档介绍 Arm® TrustZone®技术和 STM32L5/U5 器件的各项特性,这些特性允许将 MCU 内存/资源划分为安全区域和非安全区域。$ F! q! Z7 `5 W
8 ]6 M: Q. `1 i8 A* }  b6 T
1 概述0 v( Q! c' W% Y+ S& {8 y4 H) l
本应用笔记适用于基于 Arm® Cortex®内核设备的 STM32L5 和 STM32U5 系列微控制器。/ O; }  Y) q( Q# J
提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。5 j: I+ e) q- ^9 W
2 k1 j$ F# E7 ~5 D6 w
2 Arm TrustZone 技术
8 _- f( L( ~' _# \2.1 概述

: g% f, C6 c/ u面向 Armv8-M 的 Arm TrustZone 技术将系统分为两个区域:一个是安全区域,另一个是非安全区域。安全与非安全区域的划分是基于内存映射的。1 P$ q' q  C% o- u# {
所有可用的微控制器资源(包括 Flash 存储器、SRAM、外部存储器、外设和中断)被分配给安全区域或非安全区域。规划了这些资源的安全属性之后,非安全区域只能访问非安全内存和资源,而安全区域可以访问这两个区域中的所有内存和资源,包括安全和非安全资源。
" Q' y( ]) d" s' O需要保护的重要数据(如加密密钥)必须在安全区域中以安全的方式进行存储和处理。4 B2 [/ z% X; ^# M9 ~8 b
代码的执行位置定义了其类型:( B- \9 T( M1 d7 w2 F3 a4 h# W
• 如果代码在安全内存中执行,则称其为安全代码。7 ?8 Y) g8 G, ^4 i6 ~) O+ v/ y
• 如果代码在非安全内存中执行,则称其为非安全代码。
' \( g, L9 e% M+ F! H* @3 E安全代码和非安全代码在相同的 STM32L5/U5 器件上运行,如下图所示。' }6 c" S$ C! M5 ^* E/ H6 {6 D. l

. o. n6 @$ z. C& m# U# z) P9 I 9~HX_@LWYY6AOPWZNLVUEHQ.png
4 R5 P- y) ^6 Q* K$ J" N; ?0 l- I- w" f4 O! o4 Y/ F5 _! ?
2.2 安全状态
8 J* O6 `1 b, ^2 q" B& b2 ]在简化视图中,执行的代码地址决定了 CPU 的安全状态,即安全或非安全:1 c+ l# x- D0 @* }8 w! p
• 如果 CPU 在非安全内存中运行代码,则 CPU 处于非安全状态。. J0 n! z% h/ S) ^
• 如果 CPU 在安全内存中运行代码,则 CPU 处于安全状态。
6 j! w: S# Y/ I+ V+ YArmv8-M 技术定义了以下地址安全属性:3 ~$ F- Q: _( A8 R& Q; R( ~/ F* K
• 安全
3 r! p8 Z! J, B) e安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。
) [3 i6 I& B$ M4 J6 w& E( o! d/ h# W8 q• 非安全可调用(NSC)/ M$ i' i$ L, `6 z; s5 R. w. g) R
NSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。0 Q. t* R9 C4 n; `. v3 a
当非安全代码调用安全端函数时:* b$ S9 \* O% w2 a- ~
– API 中的第一条指令必须是 SG 指令。
' l. \. p4 F! n, p) K* Y( a; [2 y– SG 指令必须在 NSC 区域内。2 Z. q8 h; N+ S' ~" O
安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。% l9 B" r$ t$ B9 w: |( V
• 非安全, l- ~  n  t0 U/ @- Q
非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。
+ p- Y; `' K) S% H; K; ^  ~8 ^, ~) b
3 I4 j. D1 x4 J# R/ f9 x5 `. M
3 在 STM32L5 和 STM32U5 系列器件上实现 TrustZone( Q" A, {9 I- r% P( h
3.1 激活 STM32L5 和 STM32U5 TrustZone
# V6 O: o2 n5 d, ~. {, j
在 STM32L5/U5 中,TrustZone 是默认禁用的,可以通过在相应的选项字节中设置 TZEN 选项位进行启用。
2 v( i+ U1 u$ }8 W本文档中描述的所有特性适用于启用了 TrustZone 的 STM32L5/U5 器件。
9 J5 m- V1 R* N! D6 f5 b' K  K, t# Q. ~* ~8 s1 |# f0 Q; o
3.2 TrustZone 框图
; D- y9 n0 Y3 y% O  r& M- R在 STM32L5/U5 中,TrustZone 的实现得益于 SAU(安全属性单元)、IDAU(实现定义的属性单元)、Flash 存储器和 GTZC(全局 TrustZone 安全控制器 )。$ p/ l4 P, L0 W! D$ {# R' n
下面的框图详细说明了 TrustZone 的实现过程。. g& |) [- n  c
: `+ P; Z7 q( u, u& z9 A* C
SVHNG~X{YP)YTG)J7~IM50N.png
2 O8 b1 Q/ v1 g/ s5 }( B& w! K8 Q0 S# y7 w! ~
3.3 安全属性单元(SAU)和实现定义的属性单元(IDAU)
+ D1 ^1 i5 o; M! aCPU 看到的内存地址安全状态由内部 SAU(安全属性单元)和 IDAU(实现定义的属性单元)组合控制。+ `0 g( w0 m' ?* g5 P! T
安全属性的最终结果取决于 IDAU 和 SAU 其中较高的安全设置。安全属性的优先级如下:5 t6 T, Q" V' b+ R
• 安全具有最高的安全优先级。$ G) ]/ S6 Q9 ]$ a# L( X- x
• 非安全可调用的安全优先级次之。! |, S* ^" Q. C1 v: a' E; `4 g
• 非安全的安全优先级最低。
( I( e4 Z# x& D3 V下表显示了如何将特定的安全属性(安全、非安全、激活非安全可调用)分配给特定地址。3 Z* R1 ]( {5 y$ U

. b' e5 o2 W! }4 C2 z' o `~8]D%NEAFVWXQ}}51)[MPI.png
" a% Q" n  B: \: A) W& x
! w6 t6 Y; g3 o& x3 m& r5 X' N1 g0 v1 X+ V# b% ^0 f
3.3.1 STM32L5 和 STM32U5 的 IDAU 和存储器别名使用
( @* a! \: D! J
STM32L5/U5 内存映射遵循 Arm 的建议实现一个重复的内存映射,一个用于安全视图,另一个用于非安全视图。( R" z8 M7 a# u# s- S" M& Y
这意味着内存映射的每个区域(代码、SRAM、外设)被分成两个子区域,其中内部存储和外设被解码在两个单独的地址位置 - 非安全视图中和安全视图中。IDAU 的实现定义了这些区域的安全属性。
8 r( Z  y, c( m3 Z( p, c2 aIDAU 内存映射分区不可配置。它由硬件确定。下表显示了 STM32L5/U5 IDAU 定义的内存映射安全属性分区。
# u& ?; k- z0 E! h
5 ]+ C% r% F9 l$ T. e7 W* E }T`E2EWFE_0LUA3[(}FU`D8.png
( Y1 I7 K6 ]8 r# h" c4 K
6 R3 e' f5 C" G7 c& h3.3.2 STM32L5 和 STM32U5 SAU' f: j3 f4 r6 s' D# v5 u
STM32L5/U5 中有 8 个 SAU 区域。用户通过 SAU 修改所需的安全配置分区,如下表所示。启用 TrustZone 后,SAU 将所有地址默认为安全:所有内存区域均认为安全。
: s5 S- K' ~0 y# u. s  A2 \+ F6 l
$ ?" q4 o5 M( z PHM]Y$)4YEDB%I2S~D4MCOT.png ; ^& [5 ?* M9 Z2 P  i# h4 G) P% M
! A& n, l. s" F
示例/ I; g" }& G" l0 [# ^! Y
外设在两个地址范围被解码:非安全视图中的 0x4000 0000 和安全视图中的 0x5000 0000。
8 m0 f* w) V% L7 E. }- A根据 SAU 和 IDAU 的编程,安全代码通过生成安全事务来访问安全视图中的外设,而非安全代码在非安全视图中的另一个地址访问相同的外设。根据 GTZC/TZSC 如何定义外设安全属性,授权或拒绝访问。详情请参见第 4 节 和第 5 节 。
/ W) n- k+ W6 w) T; X4 H0 a1 ?  P' S) A  b
完整版请查看:附件5 q7 I& K9 S3 F& w
6 Z6 x  _7 g" O8 o

zh.DM00068118.pdf

下载

377.72 KB, 下载次数: 3

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

举报

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