【官方原创】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 - 保留所有权利

相关推荐
SmartRadio18 小时前
MK8000(UWB射频芯片)与DW1000的协议适配
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·dw1000
LDR00618 小时前
芯片电路的引脚标识代表什么?
stm32·单片机·嵌入式硬件
恒锐丰小吕19 小时前
屹晶微 EG3116 600V高压、2A/2.5A驱动、双高有效输入逻辑的半桥栅极驱动芯片技术解析
嵌入式硬件·硬件工程
F1331689295719 小时前
WD5030K,耐高压输出电流10A,WD5030A输出电流12A
网络·单片机·嵌入式硬件·物联网·汽车
三佛科技-1341638421219 小时前
HN32512非隔离12V300MA~600MA降压控制方案典型应用 电路
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
集芯微电科技有限公司19 小时前
替代HT6310/KP3310离线式AC-DC无感线性稳压器
数据结构·人工智能·单片机·嵌入式硬件·fpga开发
物联网牛七七19 小时前
SRAM和DRAM的区别
单片机·存储器
点灯小铭19 小时前
基于单片机的增量式编码器测速仪设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
liu_endong20 小时前
杰发科技AC7840——真随机数和伪随机数
mcu·国产·杰发科技·autochips·车规芯片