TF-A 一开始是为 ARMv8 准备的,ARMv8 最突出的特点就是支持 64 位指令,但是为了兼容原来的 ARMv7,ARMv8提供了两种指令集:AAarch64 和 AArch32,根据字面意思就是 64 位和 32 位,其中 AArch32 和 ARMv7基本一样(会多一些其他操作指令)。
安全不能仅仅依靠软件来实现,也是需要硬件支持的,比如 ARM处理器就有不同的运行等级,运行在低等级(非安全模式)的应用就不能访问高等级(安全模式)的资源,以此来保证敏感资源的安全性。
ARMv7-A 工作模式
以前的 ARMv7 处理器有 7 中运行模型:User、FIQ、IRQ、Supervisor(SVC)、Abort、Undef 和 System。新的ARMv7-A 架构加入了 TrustZone安全扩展,所以就新加了一种运行模式:Monitor,新的处理器架构还支持虚拟化扩展,因此又加入了另一个运行模式:Hyp,所以 Cortex-A7 处理器有 9种处理模式,如表所示:
不同的处理器模式下,CPU 对于硬件的访问权限不同,叫做 PrivilegeLevel(特权等级),一共有两个特权级别:Privilege(特权级)和 non-privilege(非特权级)。其中只有User 模式处于non-privilege,也就是非特权级,剩下的 8 个模式都是 privilege(特权级)。
系统启动以后应用软件都是运行在 User模式,也就是非特权级,这个时候处理器对于敏感资源的访问是受限的,如果要访问这些敏感资源就需要切换到对应的工作模式下。
ARMv7-A 对 Privilege Level 进行了命名:PL0 和 PL1,后来也出现了 PL2,用于虚拟扩展。ARMv7-A 新增的Monitor 模式就是针对安全扩展的,为了支持 TEE 而引入的。
全部0条评论
快来发表一下你的评论吧 !