1. 前言 3 {- b! J% H! |* t& Z STM32L5 是 STM32 家族中第一个基于 Cortex-M33 内核的系列,而 TrustZone 正是此内核最重要的特性,使能 TrustZone 的方法非常简单,在 RDP=0 的情况下直接在 option byte 中将 TZEN 置 1 即可,但是一旦 TrustZone 使能后,与其相关的安全特性也将开启,由于安全方面的特性,在 TrustZone 已经打开的情况下欲将其再次关闭却不能像打开时那样那么简单操作了。本文将以用户的视角描述一下关闭 TrustZone 的过程. 1 K1 X9 z. S9 C1 e, I2 R! O 2 过程 : q8 B B. e- K- i% ^: E 为了讲述这一过程,我们将以 NUCLEO-L552ZE-Q 这块板子为例,工具使用STM32CubeProgrammer V2.4.0/ }, o [& G0 h9 t 首先通过 CubeProgrammer 这个工具将 MCU 的 TrustZone 打开, 在此之前读保护 RDP=0 ,是用户面临的选项字节最初始状态 : # W% W7 _( v+ H 按客户的操作思路,接下来我们尝试关闭 TrustZone…8 f8 }( h# |) e- j 首先,直接在 option byte 中直将 TZEN 后那个勾去掉,然后 Apply… 此时会出现错误,如上图所示。 $ w) f2 w; h6 }/ o6 P( m ( V" D6 c1 G4 n2 Z f$ B 在 TrustZone 已经激活的情况下,是不能直接将其关掉的。0 t. Q* {& p: j3 p/ b3 O F9 Q 接下来查看参考手册,在 RM0438 4.4.2 节有讲述到如何将 TrustZone 关闭的内容 :/ G! g- \- W: U6 F, w # f- P4 Q4 n. A6 ? - V: M8 n7 b" w( a; ^ . O1 s, \1 r* | 显然,原来 TrustZone 关闭必须是在读保护从 RDP1 回退到 RDP0 的同时进行才可以。首先,我们要将 RDP 设置为 level1,然后再回退…' o- n! y" e8 f- | 7 q$ R) H: p9 ?+ T8 Q [5 ` 7 c' x" W: Q& @7 `2 x% ], D! z# U 7 ^" t" F- d# R6 T 如上图所示,在设置 RDP1 的时候, 此时会出现警告,意思是说在 TrustZone 开启的情况下尝试使能RDP,如果当前 FLASH 内的代码不能使得芯片上电后执行的程序最终跳转到 NS 空间,将会导致关闭trustzone 和回退 RDP 失败,强烈建议将 nSWBOOT0 设置为 1。这样可以确保我们可以通过调整PH3/Boot0 引脚电平来从系统 bootloader 启动,这是一定可以跑到 NS 程序空间的。2 Y, ^: B4 |* X6 B' o7 m 0 c2 { t2 V3 c 完整版请查看:附件 . {' c1 T; T; Q8 }; h7 T , D/ N) M3 a5 Z1 e4 Z* M |
STM32L5中如何关闭trustzone.pdf
下载382.41 KB, 下载次数: 0
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32L5 系列微控制器和 TrustZone® 开发入门
STM32CubeL5 TFM 应用程序入门
STM32CubeIDE 中基于 STM32L5 系列的项目入门
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32U5对比STM32L5有 哪些更新?
修改STM32L5的存储空间安全属性的设置
使用STM32L5的OTFDEC和ICACHE功能实时高效运行片外Flash中的加密代码
使用STM32L5 TrustZone特性控制调试端口访问,保护片上代码安全
面向STM32L5系列的STM32CubeL5入门