基于ARMv8-M架构的Cortex-M系列(Cortex-M33和Cortex-M23)微控制器中引入了TrustZone技术。通过TrustZone可在单个处理器中启用两个安全(security)域,将执行空间划分为安全和非安全分区。在安全端执行的可信软件和非安全端执行的不可信软件之间实现完全隔离来增强安全性。 安全端提供的函数如果允许非安全端软件调用,需将这些函数必须放在标记为非安全可调用 (NSC) 的内存区域中。 使用 TrustZone后,应用程序由两个独立的项目组成: 1、在安全端运行的安全应用程序 2、在非安全端运行的应用程序 ARMv8-M 内核启动后默认为安全端,由安全软件负责对安全属性单元 (SAU) 和实现定义属性单元 (IDAU) 进行编程,将内存空间划分为安全和非安全区域。安全端的软件可以访问安全和非安全内存,而非安全端的软件只能访问非安全内存。 如何在支持TrustZone的ARMv8-M架构处理器上使用FreeRTOS? 1、FreeRTOS for ARMv8-M移植 FreeRTOS内核提供了ARMv8-M(ARM Cortex-M33 和 ARM Cortex-M23)移植代码:
可以在安全或非安全端运行。允许非安全任务(或线程)调用安全端函数。 当 FreeRTOS 内核在非安全端运行时,TrustZone支持可选。仅允许FreeRTOS内核代码的权限提升。 应用中,FreeRTOS通常运行在非安全端,用户任务可以调用安全端软件导出的函数。 2、FreeRTOS示例工程 最简单的入门方法是使用FreeRTOS/Demo中的示例项目: |