快速链接:
.
个人博客笔记导读目录(全部)
- 付费专栏-付费课程 【购买须知】:
- 【精选】ARMv8/ARMv9架构入门到精通-[目录]
先看一张软件架构图:
TrustZone 技术的概念并不新鲜。该技术已在 Arm Cortex-A 系列处理器上使用多年,并且现在已扩展到涵盖 Armv8-M 处理器。
在较高层次上,Armv8-M 的 TrustZone 技术的概念类似于 Arm Cortex-A 处理器中的 TrustZone 技术。处理器具有安全和非安全状态,非安全软件只能访问非安全存储器。Armv8-M 的技术在设计时考虑了小型节能系统。与 Cortex-A 处理器中的 TrustZone 技术不同, Armv8-M 的Secure 和 Normal 世界是基于内存映射的,转换在异常处理代码中自动发生。
Armv8-M 和 Armv8-A所支持的Trustzone技术有以下方面的不同:
在具有 Armv8-M 架构安全扩展的设计中,对系统安全至关重要的组件可以放置在安全的世界。这些关键组件包括:
安全这个词在嵌入式系统设计中可以有很多不同的含义。在大多数嵌入式系统中,安全性可以包括但不限于到:
TrustZone 技术还可与面向下一代的高级微控制器中使用的附加保护功能一起使用物联网 (IoT) 产品。例如,为物联网应用开发的微控制器可以包含一系列安全功能。
TrustZone 技术的使用有助于确保所有这些功能只能使用具有有效entry point的 API 来访问,如下所示图显示:
通过使用 TrustZone 技术来保护这些安全功能,设计人员可以:
无线通信接口的安全性
在其他一些应用场景中,例如带有经过认证的内置无线电堆栈的无线 SoC,TrustZone 技术可以保护标准化操作,例如无线通信行为。
TrustZone 技术可以确保客户定义的应用程序不会使认证失效,如下图所示。
Trustzone技术下的两个安全状态(Security State): Non-Secure State 和 Secure State.
在TF-M中也称之为: NSPE(NON-Secure Processing Environment)和SPE(Secure Processing Environment)
关于reset
关于banked
实施了安全扩展后,下列寄存器都是banked by security:
msr/mrs指令编码
MRS
和MSR
指令编码中的bit[7]表示操作的是哪组寄存器(Secure or NON-Secure)
补充术语
RAZ:Read-As-Zero 读到的总是0
WI :Writes Ignoredx 写无效
RAO:Read-As-Oned读到的总是1
SBZP:Should-Be-Zero-or-Preserved on writes 写总是0
SBOP : Should-Be-One-or-Preserved on writes. 写总是1
UNK:unknown 读写时返回值未知
详见:ARM Glossary
cortex-A Trustzone 和 cortex-M Trustzone的对比:
在cortex-M上,双系统的切换,使用的是 Secure Gateway (SG) 指令,但只允许在特殊的memory上调用SG,即使 NSC(non-secure callable)
安全状态的切换
切换安全状态的方式有以下两种:
如果实施了安全扩展,则 4GB 内存空间将划分为安全和非安全内存区域。
安全内存空间进一步分为两种类型:安全(S)和非安全可调用(NSC : Non-secure Callable)
NSC 是一种特殊类型的安全内存。这种类型的内存是 Armv8-M 处理器允许保存 SG 指令的一种内存,使软件能够从非安全状态转换为安全状态。
通过将 SG 指令的功能限制在 NSC 内存中,安全软件创建者无需在正常安全内存中意外包含 SG 指令或数据共享编码值,包含 NSC 内存位置。
通常 NSC 内存区域包含小型分支跳转(entry points)的表。 为了防止非安全应用程序分支到无效入口点,这里有Secure Gateway (SG) 指令。
当非安全程序调用安全端的函数时:
引入NSC内存的原因是为了防止其他二进制数据,例如查找表,其值与SG指令的操作码相同,作为进入安全状态的入口函数。 通过分离 NSC 和 Secure 内存类型,包含二进制数据的 Secure 程序代码可以安全地放置在 Secure 区域中,而无需直接暴露于 Normal 世界,并且只能使用 NSC 内存中的有效入口点进行访问。
复位的时候SAU是disabled的
如果SAU是disabled的,且系统中也没有包含IDAU,又由于reset时默认的状态是Secure Security State,那么系统将无法切换到Non-secure状态,所有切换non-secure Security状态的操作都会产生Fault错误
SAU寄存器的总结
SAU开启之后: