【官方原创】SAU对NSC分区的影响 LAT1578

关键字:Trustzone/SAU/NSC

1. 前言

客户询问,在Trustzone打开的情况下,如果没有将NonSecure和Secure之间的

NSC接口放在一个单独的NSC分区里,而是和Secure分区混在一起会怎么样?

2. 查看SAU的配置代码

SAU配置代码一般是在相应的工程目录里。例如,对于STM32CubeH5的GPIO例

程,它在STM32Cube_FW_H5_V1.5.0\Projects\NUCLEO

H563ZI\Examples\GPIO\GPIO_IOToggle_TrustZone\Secure\Inc\partition_stm32h56

3xx.h;对于X-CUBE-FREERTOS的消息队列例程,它在Packs\STMicroelectronics\X

CUBE-FREERTOS\1.3.0\Projects\NUCLEO

H563ZI\Applications\FreeRTOS_Queues_ThreadFlags_TrustZone\Secure\Inc\partiti

on_stm32h563xx.h里。

如果打开上述两个文件,你可以看到默认情况下,SAU并没有被打开,也就是

SAU_INIT_CTRL_ENABLE为0。

3. 不使能SAU

从上文可知,如果你什么都不修改,那么你可以观察SAU不使能情况下NSC分区的

情况。以STM32CubeIDE为例,你可以手工注释掉FLASH_NSC分区。例如:

然后你将以前放入FLASH_NSC的代码放入正常的Secure分区里,如下

编译代码并下载到开发板运行,你发现没有任何问题。

是否SAU不开的例程就不安全,Non-secure就可以直接访问Secure区域?

其实并不是,我们只是更改了sgstubs所在的分区,所生成的代码依然含有secure

gateway 的指令SG。如果没有secure gateway的指令SG,直接调用Secure区域的代

码,例如,我们使用地址直接调用Secure工程中的代码。

系统直接提示我们,入口无效,如下图所示:

4. 使能SAU

在partition_stm32h563xx.h 里使能 SAU,你需要将SAU_INIT_CTRL_ENABLE 置

1,如下图所示

其实正确运行该工程,在SAU使能的情况下,还需要正确配置NonSecure Flash以

及NonSecure RAM,所以我们需要将partition_stm32h563xx.h 里的多处代码置1。

使能NonSecure Flash 如下图所示

使能NonSecure RAM如下图所示

以及使能所使用到的外设区域。

这时可以看到,当系统开始调用NSC代码时

会得到无效入口的Secure Fault。我们比较这里的无效入口的原因,不是代码编译的

问题,而是所在分区不对。

当然我们也可以将链接脚本里的信息还原,同时在partition_stm32h563xx.h使能前

面没有提到NSC分区如下:

则编译下载运行时看到能正常调用NSC函数。

5. 结论

我们可以看出,NSC分区能不能和Secure 分区混合在一起,要看SAU是否使能。如

果SAU没有使能,和Secure分区混在一起, NSC可以被正常调用,系统正常工作 ;如果

SAU使能,没有单独的NSC分区,则NSC调用会引发Secure Fault。一般推荐无论

SAU使能不使能均使用单独的NSC分区。


意法半导体公司及其子公司 ("ST")保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

相关推荐
風清掦1 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报1 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业1 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能1 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn1 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响2 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
qq_672592752 小时前
电源芯片为什么发热
单片机·嵌入式硬件
天天爱吃肉82182 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
国科安芯3 小时前
抗辐照MCU在精密时频系统中的单粒子效应评估与可靠性验证
单片机·嵌入式硬件·架构·制造·安全性测试
森焱森3 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化