ARM Trusted Firmware (ATF) 官方源码目录
2026/6/26 4:39:48 网站建设 项目流程
ARM Trusted Firmware (ATF) 官方源码目录结构,ATF启动流程和安全机制,逐个解释每个核心目录的作用,重点标注和SoC安全、TrustZone相关的关键代码位置:

一、核心启动阶段目录(重中之重,BL1-BL32流程)

这些目录包含了ATF最核心的启动代码,是理解安全启动和世界切换的关键:

目录

作用

安全相关重点

bl1/

BL1阶段代码,固化在芯片ROM中

整个系统的硬件信任根,负责验证BL2的签名;包含最基础的异常处理和上下文切换代码

bl2/

BL2阶段代码,可信引导加载程序

负责验证BL31、BL32、BL33的签名;初始化DDR内存控制器;是安全启动信任链的第二环

bl2u/

BL2U阶段代码(特殊BL2)

用于安全固件更新(NSAID)

场景,只负责验证和加载新的固件镜像,不执行完整的启动流程

bl31/

BL31阶段代码,Secure Monitor

整个ATF最核心的安全代码,运行在EL3最高权限:
1. 实现SMC指令处理和世界切换逻辑
2. 配置TZC-400总线防火墙,划分安全/非安全内存
3. 配置GIC中断控制器的安全属性
4. 提供PSCI电源管理服务

bl32/

BL32阶段代码,TEE加载器

负责加载和初始化TEE操作系统(如OP-TEE、Trusty);包含SPD(安全有效负载分发器)框架


二、平台与驱动目录(芯片厂商定制的核心位置)

这些目录包含了不同芯片平台的特定代码,是移植ATF到具体SoC的关键:

目录

作用

安全相关重点

plat/

平台相关代码

每个芯片厂商的ATF移植代码都在这里,例如:plat/arm/

ARM官方参考平台

plat/qcom/

高通骁龙平台

plat/hisilicon/

华为海思平台

这里包含了具体芯片的TZC-400配置、安全启动密钥验证、硬件初始化代码

drivers/

通用硬件驱动

包含所有ATF支持的硬件驱动,其中安全相关的关键驱动:
drivers/arm/tzc400/TZC-400总线防火墙驱动
drivers/arm/gic/ GIC中断控制器驱动
drivers/crypto/ 硬件加密引擎驱动
drivers/io/存储设备驱动(用于从Flash加载镜像)

fdts/

设备树文件

包含各个平台的设备树源文件,描述硬件资源的地址、中断等信息

三、通用库与服务目录

这些目录包含了ATF的通用功能和安全服务:

目录

作用

安全相关重点

common/

通用功能代码

包含异常处理、上下文管理、日志、调试等通用代码

lib/

通用库函数

包含字符串操作、内存操作、密码学算法(SHA、RSA、ECC、国密SM2/SM3/SM4)等库函数

这里的密码学算法用于验证固件签名

services/

安全服务

包含ATF提供的所有安全服务:

services/std_svc/psci/:

PSCI电源管理服务

services/spd/:

安全有效负载分发器(用于加载TEE)

services/secure_partition/:

安全分区服务(ARMv8.4+)

include/

头文件

包含所有ATF的头文件,其中

include/lib/el3_runtime/

和include/common/debug.h

是调试时常用的


四、构建与工具目录

目录

作用

make_helpers/

Makefile辅助脚本

tools/

构建工具

docs/

官方文档

五、学习建议

1.先从启动流程入手

  1. 先看bl1/aarch64/bl1_entrypoint.S,这是系统上电后执行的第一行代码
  2. 然后看bl1/bl1_main.c,了解BL1如何加载和验证BL2
  3. 再看bl31/aarch64/runtime_exceptions.S,这是SMC指令和异常处理的核心代码

2.重点看安全相关代码

  1. 世界切换逻辑:bl31/aarch64/context.S和bl31/aarch64/ehf.c
  2. TZC-400配置:drivers/arm/tzc400/tzc400.c和具体平台的plat/xxx/xxx_security.c
  3. 签名验证:common/tbbr/tbbr_img_desc.c和lib/crypto/目录下的算法实现

3.结合具体平台学习

  1. 如果你是做Android手机,建议看plat/qcom/或plat/hisilicon/目录下的代码
  2. 如果你是做车载,建议看plat/arm/目录下的参考平台代码

4.动手实践

  1. 下载QEMU的ATF镜像,在QEMU上运行并调试
  2. 修改TZC-400的配置,验证安全内存的访问控制效果
  3. 尝试添加一个自定义的SMC调用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询