|
STM32 在某些系列MCU中可以使用TrustZone技术,常用的比如L5,U5,U3等。说的简单点就是为了放置被异常代码侵扰,把系统资源分为两个独立的、硬件强制执行的安全世界(Secure World)和非安全世界(Non-Secure World)。但是这部分待遇不一样,安全部分拥有更高的特权,可以访问所有资源,包括安全和非安全资源。非安全世界只能访问非安全资源。所以应用起来就是,把重要的操作都放到安全区域,不重要的放到非安全区域。 应用起来才是硬道理。可以参照官方的例程去理解。并且了解整个的设置流程。 首先需要打开STCubeProgrammer,连接到MCU板。然后就是设置TZEN=1,然后设置SECWM1和SECWM2,如说明所示: - TZEN=1; ^% S8 S' h: {/ t$ a$ y! y8 z' h - SECWM1_PSTRT=0x0 SECWM1_PEND=0x7F meaning all 128 sectors of Bank1 set as secure - SECWM2_PSTRT=0x7F SECWM2_PEND=0x0 meaning all 128 sectors of Bank2 set as non_secure; d. ]* P! L- l7 O9 c: j/ Q ( ]% h/ I; Q7 [& C- ^% i% I: d$ A Z , S7 ^2 b, M0 T. h8 O. ^. E 还需要设置SBoot0R 和 NSBoot0R,如图1和图2所示:/ E8 H% v. c3 h" [5 x
图13 y; Y9 o/ o" o+ x$ c) w
图25 x0 C! w" R- _ 0 F' f" a. x$ z1 I0 m$ i 设置好之后,要记得点击右边的apply,否则设置无效,如图3所示。
图3 3 J$ O/ m. B: a1 E9 R# z 这样基本就设置好了,打开cubemx,设置GPIO,将需要放到secure区域的外设都设置到Secure区域,不需要的就设置为NS区域,如图4所示:
图4 设置好时钟,如果需要把时钟部分放到secure区域,右击选择System Clock Mux,选择secure即可。如图5所示:
图57 w' u, i4 \7 Q9 o6 \2 c 7 V, H+ r9 R' u% M0 J 还需要设置GTZC_S,如图6所示:" ~3 j, U- f D4 Z* a
图64 J+ T# `, X) _5 X: W9 t9 M: R9 K ( ]1 D" M5 j6 a( p" ` 这些设置好后,生成project。 : L) I. q6 e5 w: a5 i0 F% m8 e- i# T 在项目中会有两个项目,一个是secure,一个是Nsecure。要先编译S项目,生成secure_nsclib.o文件,这是连接NS项目的接口,否则NS项目编译会报错。 再编译NS项目。1 A& z2 S2 x! M# r8 H& X 编译后,Download NS项目,然后Download S 项目。 这个过程可以通过右击项目名,选择active需要用的project。Download后,按复位键可正常运行程序,先点灯试试,如图7所示:( v- @* W- ^! o2 S
图7 当然也可以Debug NSProject。( \9 K8 W0 q0 U8 S( N 看B站上有官方的详细介绍,仔细学习,应该理解起来更容易。2 W5 W) Z) J( Q0 w" V" k, j |
【stm32U3测评】内置OPAMP性能测试(一)
【stm32U3测评】使用FDCAN进行IAP升级-- FDCAN升级思路以及上位机发送
【STM32U3评测】CANFD Bootloader(1)
STM32U3B5/U3C5:为超低功耗设计带来高性能 DSP 与边缘 AI
【STM32U3评测】使用INS5699 RTC模组
【评测汇总】STM32U3 系列开发板评测全汇总 | 吃透新品核心性能与实战场景
【stm32U3测评】FDCAN 满载性能实测
【STM32U3 评测】CAN FD测试与UDS OTA升级
【STM32U3 评测】基于 CAN 的 UDS OTA 不完全实现指南
【STM32U3评测】轻量级人脸检测部署。
微信公众号
手机版