atf的含义(ATF里都包括哪些东西呢)

作者简介

Baron,九年手机安全/SOC底层安全开发经验。专业设计和开发trustzone/tee安全产品。是国内最早的tee之一,对商用tee和开源tee都有很深的研究,对未来的安全架构/安全趋势有很清晰的看法。

1、什么是ATF

TF-A(ATF)最初是什么?ATF是一个固件,一段代码,也是ARMV7-A/ARMV8-A/ARMV9-A的参考实现代码,(注意这只是一个参考实现。也可以用一个自己写的固件代替ATF。)

2、那么ATF包括哪些内容呢?

的初始功能很简单:

保存并恢复cpu_context,即两个系统之间的切换。

电源、PSCI等的管理

然而,随着技术的发展,功能变得越来越复杂。以下是当前的一些功能:

安全世界初始化,比如异常向量表,一些控制寄存器和中断寄存器。

CPU复位和断电序列。包括对Arm DynamIQ cpu的支持。

标准系统IP的驱动程序,如通用中断控制器(GIC)、高速缓存一致互连(CCI)、高速缓存一致网络(CCN)、网络互连(NIC)和信任区域控制器(TZC)。

一种通用SCMI驱动程序,适用于电源控制接口,如ARM系统控制处理器(SCP)

Smc处理,使用el3运行时服务框架

支持PSCI库,用于CPU/集群/系统的电源管理。这个库集成到AAARCH64EL3的运行时中,也适用于aarch32 el3。

安全监控代码,用于全球交换和中断路由。

用于OP-TEE安全操作系统、NVIDIA可信小内核和可信安全操作系统的SPD

SecureBoot实施

预TBB和Arm CryptoCell产品集成,通过其硬件根的信任和加密来加速服务。

3、由ATF定义的ATF启动模型

ATF划分镜像,BL1 BL2属于引导镜像,BL3属于运行时镜像。BL3分为BL31 BL32 BL33对应ATF运行时,REE运行时,TEE运行时。

(注:本文为快速入门,请自行理解这些概念:BL1 BL2 BL31 BL32 BL33和EL3 S-EL1 NS-EL1的概念)

4、 ATF ATF(运行时服务)的rt_svc简介

4.1、 SPD (Opteed)的示例

比如负责双系统切换的SPD,就是OEN_TOS的RT-Service,负责启动TEE和双系统切换。

补充双系统切换时寄存器的存储和恢复模型(switchcpu_context模型)

5、有ATF参与的ATF多系统交互模型

权限级别和安全状态之间的交互模型,ATF是运行在EL3权限级别的一段代码。下面是特权级别和安全状态之间的切换模型。可以看出,所有的交互和跳转都是通过异常向量表进行的。

异常权限级别之间的跳转模式都是由同步异常或异步异常做出的:

进入ATF触发异常的方式:同步异常(不限于smc)和异步异常(irq、fiq、serror)。

如果是同步异常,会判断是否是smc调用触发的同步异常。如果是,就会在jump ATF的异常向量表中进入同步异常程序smchandler64或smchandler32。在这个程序中,smc id将被分析以选择跳转到哪个rt-svc(运行时服务)。

如果是异步异常,它必须触发irq或fiq或serror中断等。此时会跳转到ATF中的异常向量表中的异步异常程序,然后跳转到响应中断处理函数。

6、 ATF ATF如何处理业务逻辑?

那么ATF中有哪些业务逻辑,又是如何区分和处理的呢?

异常进来的时候,做一些判断,比如你是同步的还是异步的?如果是一个异步异常,你会做些什么还是转发中断?如果同步不正常,你是在做什么还是在做RT-Service?

编辑:李倩