ATF简介
一、ATF是啥呢?
ATF(Arm Trusted Firmware) 是由 Arm 官方提供的开源固件框架,主要用于在基于 Arm 架构的处理器上实现 安全启动、安全世界管理和异常级别切换 等功能。支持安全世界与非安全世界之间的隔离。(ATF是安全世界,APP/linux是非安全世界喽!!!)
它运行在 Arm 架构的 EL3(Exception Level 3),也就是最高权限级别,属于 安全世界(Secure World) 的一部分。
二、为啥要有ATF
ATF 的存在是为了满足以下几个关键需求:
- 安全启动(Secure Boot):确保系统从上电开始就处于可信状态。
- 异常级别管理:在 EL3 层管理 EL0~EL2 的权限切换,确保系统安全。
- TEE 支持:为 TrustZone 提供安全世界的运行环境(如 OP-TEE)。
- 电源管理:协调多核处理器的启动、挂起、唤醒等操作。
- 系统初始化:初始化内存、MMU、缓存等关键硬件资源。
三、ATF工作原理
ATF 的核心模块包括:
- BL1(Boot Loader Stage 1):芯片上电后执行的第一段代码,负责加载 BL2。
- BL2(Trusted Boot Firmware):验证并加载后续固件(如 BL31、BL32、BL33)。
- BL31(EL3 Runtime Firmware):常驻 EL3,处理异常、上下文切换、安全调用(SMC)。
- BL32(Optional TEE):运行在 Secure World 的 TEE(如 OP-TEE)。
- BL33(Normal World OS):如 U-Boot、Linux 等,运行在 EL2/EL1。
工作流程如下:
上电 → BL1 → BL2 → BL31(+BL32)→ BL33 → 操作系统启动
ATF 通过 SMC(Secure Monitor Call) 实现 Normal World 与 Secure World 的通信。
1、如何和UBOOT以及linux协同工作呢?
组件 | 运行级别 | 主要职责 |
---|---|---|
ATF (BL1/BL2/BL31) | EL3 | 安全启动、异常管理、TEE支持、电源管理 |
U-Boot (BL33) | EL2/EL1 | 加载内核、设备树、initrd,提供启动参数 |
Linux Kernel | EL1 | 操作系统核心,管理硬件资源和用户空间 |
1. ATF 阶段
- BL1:芯片上电后执行,初始化最小硬件,加载 BL2。
- BL2:验证并加载 BL31(ATF Runtime)、BL32(TEE,可选)、BL33(U-Boot)。
- BL31:驻留在 EL3,初始化安全环境,设置异常向量表,准备好 SMC 接口。
- BL31 最后跳转到 BL33(U-Boot),并保留对 EL3 的控制。
2. U-Boot 阶段
- 运行在 EL2 或 EL1。
- 读取设备树(DTB)、内核镜像(zImage/Image)、initrd。
- 设置启动参数(ATAG 或 bootargs)。
- 通过
smc
调用与 ATF 通信(如 PSCI 电源管理)。 - 最后跳转到 Linux 内核入口。
3. Linux 阶段
- 内核启动后,继续初始化硬件、挂载根文件系统。
- 通过
SMC
接口与 ATF 交互(如 CPU 热插拔、挂起唤醒等)。 - 如果有 TEE(如 OP-TEE),Linux 通过
TEE driver
与其通信。
关键协同机制
1. SMC 调用机制
- U-Boot 和 Linux 使用
SMC
指令向 ATF 发起请求。 - 常见用途:
- 电源管理(PSCI)
- 安全服务(如密钥存储、加密)
- TEE 通信
2. 设备树传递
- U-Boot 将设备树(DTB)传递给 Linux。
- ATF 通常不直接处理 DTB,但可能会修改或注入安全相关节点。
3. 异常级别切换
- ATF 负责从 EL3 切换到 EL2(U-Boot)或 EL1(Linux)。
- 保证安全世界与普通世界的隔离。
ATF 是安全世界的守门人,U-Boot 是引导者,Linux 是最终的执行者。三者通过 SMC、异常级别切换和设备树等机制紧密协作,构建一个既安全又高效的启动流程。
EL3/2/1啥意思呢?
在 Arm 架构中,异常等级(Exception Levels, EL) 是用来划分不同特权级别的机制,主要用于操作系统、安全固件和用户应用之间的隔离。
异常等级 | 权限 | 运行环境 | 典型用途 |
---|---|---|---|
EL3 | 最高 | Secure Monitor | ATF、安全固件、异常管理 |
EL2 | 高 | Hypervisor | 虚拟化(KVM、Xen) |
EL1 | 中 | OS Kernel | Linux、RTOS |
EL0 | 最低 | User Space | 应用程序 |
四、具体芯片中的应用
NXP i.MX8M:
- ATF 管理 Cortex-A 核心的启动和电源状态。
- 支持 OP-TEE 和 CAAM(加密加速模块)协同工作。