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

相关推荐
崇山峻岭之间16 分钟前
单片机外部中断实验
单片机·嵌入式硬件
chipsense27 分钟前
工业UPS电流传感器选型实战指南:AS1V系列如何应对工业配电特殊挑战
单片机·嵌入式硬件·ups·电流传感器
振浩微433射频芯片36 分钟前
告别“喊破嗓”:深度解析433MHz射频在宠物训练器中的核心应用与选型
单片机·嵌入式硬件·物联网·学习·宠物
╰⋛⋋⊱⋋翅膀⋌⊰⋌⋚╯1 小时前
ESP32-NVS保存
单片机
Hall_IC2 小时前
意法半导体STM32F103RCT6分销商
stm32·单片机·嵌入式硬件
世微 如初3 小时前
基于AP5160的大功率LED恒流驱动设计:原理分析与外围计算
驱动开发·单片机·芯片
华清远见IT开放实验室3 小时前
硬核根基,智能载体:华清远见嵌入式“硬件+仿真+课程+师资”产教融合与实践教学方案
linux·人工智能·stm32·物联网·嵌入式·虚拟仿真
老李的森林4 小时前
嵌入式开发--STM32用DMA+IDLE中断方式串口接收不定长数据--之2
stm32·单片机·嵌入式硬件·串口·dma·idle中断
三易串口屏4 小时前
实验2 实时显示单片机的参数(整数、小数、中文 自定义协议方式)
单片机·物联网·mongodb·自动化·串口屏·医疗器械·工控设备
╰⋛⋋⊱⋋翅膀⋌⊰⋌⋚╯4 小时前
FreeRTOS--CPU利用率
stm32·freertos