ATF (ARM Trusted Firmware) -1:综述

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) 开源项目

  1. 官方开源仓库
    项目名称:Trusted Firmware-A (TF-A)
    GitHub 地址:https://github.com/ARM-software/arm-trusted-firmware
    官方文档:https://trustedfirmware-a.readthedocs.io/
  2. 项目特点
    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/             # 辅助工具(镜像打包、签名、调试脚本)
相关推荐
小李独爱秋2 小时前
模拟面试:lvs常见的工作模式有哪些?各有什么特点?
linux·运维·面试·职场和发展·操作系统·职场发展·lvs
Codefengfeng11 小时前
分辨压缩包的真加密与伪加密
linux·运维·网络
暴力求解12 小时前
Linux---进程(五)进程调度
linux·运维·服务器
楼田莉子12 小时前
C++项目:日志&&线程池
linux·c++·学习·visual studio code
wsad053212 小时前
Linux 用户和组管理完整指南(中英文参数对照)
linux·运维·服务器
S-码农12 小时前
Linux进程通讯——共享内存
linux
EmbedLinX13 小时前
嵌入式Linux之U-Boot
linux·服务器·笔记·学习
程序设计实验室13 小时前
从挖矿木马入侵到 Docker Rootless 加固,我的服务器安全复盘
linux·docker
雷电法拉珑13 小时前
财务数据批量采集
linux·前端·python