一、引言
STM32 MCU 中较新的产品系列例如 STM32L5、STM32U5 采用了 ARM Cortex V8M 的 CM33 内核,并引入了 TrustZone 概念。在此基础上,从内核到存储器再到外设等设计了完整的支持 TrustZone 架构的系统隔离机制。
在新的 TrustZone 架构下,软件的开发由原来的单一工程,变成了 Secure 安全和 NonSecure 非安全两个工程的联合开发,系统上电首先从 Secure 工程开始运行,完成必要初始化之后跳转至 NonSecure 工程运行,之后 NonSecure 工程还可以通过调用 Secure 工程经由 NSC(Secure NonSecure Callable)区提供的 API 调用 Secure 工程的函数。
由于此时系统的所有资源,包括 Memory、外设等等都区分了安全和非安全属性,而CPU 也区分安全和非安全运行状态,其对应的安全或非安全代码及其使用的数据都需要有相应的存储空间存放,且该存储空间需要具有相同的安全或者非安全属性,否则代码无法正常运行。因此,在 TrustZone 架构下首先需要针对不同物理区间做地址安排及相应安全属性的正确配置。对于 V8M 内核来说,这涉及到 SAU/IDAU 的配置,且取指令与取数据可能有不同的访问规则,同时指令以及数据是否能够从 memory 中正确取得,除了和 SAU/IDAU 的配置有关以外,还与 Memory 自身的安全属性配置有关。
本文将对 SAU/IDAU 配置,Memory 的自身安全属性配置,以及内核访问指令与数据时的安全访问规则加以阐述,希望可以帮助相关开发者更好地理解 V8M TrustZone 的架构以及在 STM32 中的实现,同时,还会列举一些与 memory 的 TrustZone 安全配置相关的常见问题及分析方法,给开发者做参考。
详阅请点击下载:《STM32 TrustZone 开发调试技巧 | 地址安全区及资源安全属性配置》
来源: STM32
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。