ARM Trusted Firmware (ATF/TF-A) 开源项目介绍
ARM Trusted Firmware 官方正式名称为 Trusted Firmware-A (TF-A) ,业内仍广泛沿用 ATF 简称,是 ARM 架构体系下最核心的开源安全固件参考实现,为 ARM A-profile 系列处理器(Armv7-A、Armv8-A 及后续架构)提供标准化的信任根(Root of Trust, RoT)、安全启动、安全世界运行时服务与特权级管理能力,是 ARM TrustZone 安全技术体系的核心基石。
【系统安全】万字长文带你搞懂安全启动及ATF
核心架构与启动流程
TF-A 采用模块化的分层启动架构,将启动流程拆分为多个 Boot Loader(BL)阶段,每个阶段承担独立的职责,完成链式信任传递,同时实现功能解耦与安全隔离。
1.1 核心异常等级与权限模型
Armv8-A 架构定义了 4 个异常等级,权限从高到低为 EL3 > EL2 > EL1 > EL0,TF-A 的核心代码运行在EL3 最高特权级,是唯一可以在安全世界(Secure World)与普通世界(Normal World/REE)之间进行切换的组件,是两个世界通信的唯一枢纽。
①EL3 :仅安全状态,运行 TF-A BL31 核心固件,负责安全监控、SMC 调用处理、世界切换、电源管理。
②Secure EL1/EL0 :安全状态,运行 TEE 操作系统(如 OP-TEE)、安全应用,由 TF-A 负责加载与初始化。
③Non-secure EL2/EL1/EL0:非安全状态,运行 Hypervisor、操作系统内核、用户应用,由 TF-A 完成权限交接与启动引导。
1.2 标准冷启动流程
TF-A 的标准冷启动流程分为 5 个核心阶段(BL2U一般不参与),遵循链式验签原则,每一个阶段都会对下一个阶段的镜像进行完整性与合法性校验,确保信任链完整传递。


核心功能与标准规范实现
TF-A 不仅是启动固件,更是一套完整的安全世界软件框架,核心功能完全对齐 ARM 官方的行业标准规范,是 ARM 架构安全能力的标准化载体。
2.1 核心安全能力
①可信安全启动
完整实现 ARM Trusted Board Boot Requirements (TBBR) 客户端规范,支持基于公钥密码体系的链式验签,确保启动链上每一个镜像都未被篡改、未被回滚,构建完整的信任链;支持镜像加密、安全调试管控、防回滚保护等高级安全特性。
②EL3 安全监控与世界切换
实现安全监控器核心逻辑,是安全世界与普通世界的唯一交互入口,负责两个世界的 CPU 上下文保存与恢复、权限校验、中断路由,确保两个世界的硬件隔离,防止非安全世界非法访问安全世界资源。
③SMC 调用处理框架
完整实现SMC Calling Convention (SMCCC) 规范,提供标准化的安全调用接口。普通世界 / TEE 通过 SMC 指令触发特权请求,由 EL3 的 TF-A 统一分发处理,支持标准服务、厂商自定义服务的模块化扩展。
2.2 标准化运行时服务
TF-A 内置了多个标准化的运行时服务,是 ARM 架构系统功能的核心基础设施:
①PSCI (Power State Coordination Interface):电源状态协调接口,是 ARM 架构多核 CPU 电源管理的行业标准,负责 CPU 热插拔、多核启动、系统休眠 / 唤醒、关机 / 重启等核心电源管理功能,是 Linux、Android 等系统电源管理的底层依赖。
②SCMI (System Control and Management Interface) :系统控制与管理接口,提供标准化的平台电源、时钟、传感器、性能管控的通信协议,实现与系统控制处理器(SCP)的标准化交互。
SDEI (Software Delegated Exception Interface):软件委托异常接口,为非安全世界提供标准化的异常处理机制,用于 RAS(可靠性、可用性、可服务性)、固件 - first 错误处理等场景。
③FF-A (Firmware Framework for A-profile) :Arm A-profile 固件框架,支持安全分区(Secure Partition)管理,为虚拟化场景下的多租户安全隔离提供标准化支持。
TRNG / 加密服务:提供硬件真随机数接口、标准化的密码学算法抽象层,对接芯片硬件加密引擎,为安全启动与运行时服务提供密码学能力支撑。
2.3 基础框架能力
①中断管理框架:支持 GICv2/GICv3/GICv4 中断控制器,实现安全中断与非安全中断的路由、优先级管控,确保安全中断可以优先被处理。
②内存管理库:提供 MMU 页表管理、内存隔离、安全内存区域管控能力,实现安全世界与非安全世界的内存硬件隔离,防止内存越权访问。
③平台适配框架:提供标准化的平台移植接口,芯片厂商只需实现硬件相关的底层接口,即可快速完成 TF-A 的适配,无需修改核心框架代码。
④调试与 trace 框架:提供标准化的调试接口、安全日志系统,支持安全调试开关控制,平衡开发调试与量产安全需求。
目录结构
ATF (ARM Trusted Firmware) 开源项目
- 官方开源仓库
项目名称:Trusted Firmware-A (TF-A)
GitHub 地址:https://github.com/ARM-software/arm-trusted-firmware
官方文档:https://trustedfirmware-a.readthedocs.io/ - 项目特点
ARM 官方维护:是 ARMv8/v9 架构下 ATF 的参考实现,代码质量极高。
支持多平台:包含 ARM FVP (Fixed Virtual Platform) 模拟器、高通、联发科、树莓派 4 等多种平台的移植代码。
以下是其目录结构与简要说明
c
arm-trusted-firmware/
├── bl1/ # Boot Loader Stage 1:芯片复位后执行的第一阶段固件(参考实现)
├── bl2/ # Boot Loader Stage 2:加载并验证后续镜像,构建信任链
├── bl2u/ # Boot Loader Stage 2 Update:用于安全固件更新的第二阶段固件
├── bl31/ # EL3 运行时固件:核心安全监控器、PSCI、SMC 处理
├── bl32/ # Secure-EL1 Payload:TEE 操作系统(如 OP-TEE)的加载与执行
├── common/ # 通用代码库(日志、断言、字符串处理、平台抽象层)
├── contrib/ # 社区贡献的非核心代码(如第三方平台移植)
├── docs/ # 官方文档(设计指南、移植手册、API 参考)
├── drivers/ # 通用驱动(UART、SPI、Flash、Crypto 等)
├── fdts/ # 设备树源文件(用于描述硬件平台信息)
├── include/ # 公共头文件(架构定义、平台接口、服务 API)
├── lib/ # 核心库(XLAT 页表管理、Crypto、PSCI 库、编译器支持)
├── licenses/ # 开源许可证文件
├── make-helpers/ # Makefile 辅助脚本(编译规则、平台配置)
├── plat/ # 平台适配层(各芯片/开发板的硬件初始化代码)
│ ├── arm/ # ARM 官方平台(如 FVP 模拟器)
│ ├── qcom/ # 高通平台适配
│ ├── rockchip/ # 瑞芯微平台适配
│ └── ... # 其他厂商平台
├── services/ # 运行时服务(PSCI 电源管理、SCMI 系统控制、安全服务)
└── tools/ # 辅助工具(镜像打包、签名、调试脚本)