01
ATF移植概述
什么是ATF · ATF在系统启动中的角色 · 移植前准备与硬件评估
概念入门
02
源码获取与分支选择
官方仓库拉取 · 正确分支选择 · LTS与开发版本区别
git版本
03
构建环境搭建
交叉编译工具链 · 依赖库安装 · 常见构建错误解决
工具链环境
04
平台目录结构解析
plat文件夹详解 · platform.mk · plat_def.h关键文件
结构配置
05
链接脚本(.ld.S)问题
链接脚本结构 · 符号未定义/段重叠 · 修复方法
链接ld
06
MMU与页表配置
MMU初始化 · 页表设置异常 · 调试技巧
MMU页表
07
中断控制器(GIC)移植
GIC v2/v3初始化 · 中断号映射 · SPI/PPI配置
GIC中断
08
定时器驱动移植
Generic Timer配置 · CNTFRQ设置 · 计时不准确排查
定时器频率
09
串口(UART)驱动移植
控制台初始化 · 波特率配置 · 字符丢失/乱码修复
UART调试
10
电源管理(PSCI)实现
PSCI接口 · CPU_ON/OFF · 挂起与恢复问题
PSCI电源
11
异常向量表配置
向量表结构 · 同步/异步异常 · Undef/SVC修复
异常向量
12
SMC(安全监控调用)处理
SMC调用流程 · 标准/自定义服务 · 参数传递错误
SMC调用
13
TBBR(可信板级启动需求)实现
认证链配置 · 密钥管理 · 启动验证失败排查
安全TBBR
14
FIP(固件镜像包)打包问题
FIP结构 · 打包工具 · 镜像加载顺序错误
FIP打包
15
内存布局与共享内存
ATF内存分区 · BL32/BL33共享 · 内存冲突解决
内存布局
16
多核启动与同步
主/从核启动 · spinlock/semaphore · 核间通信
多核同步
17
调试与日志系统
LOG_LEVEL配置 · 自定义日志宏 · 串口调试优化
日志调试
18
JTAG与硬件调试
OpenOCD配置 · 断点设置 · 单步调试ATF启动
JTAG硬件
19
QEMU仿真环境
QEMU搭建ATF仿真 · 调试启动流程 · 常见仿真问题
QEMU仿真
20
BL1阶段问题
BL1启动流程 · ROM空间限制 · BootROM交互
BL1ROM
21
BL2阶段问题
BL2加载BL31/BL32/BL33 · FIP解析失败 · 内存不足
BL2加载
22
BL31阶段问题
运行时服务初始化 · SMC分发器 · 安全上下文切换
BL31运行时
23
BL32(TEE)集成
OP-TEE与ATF接口 · 安全内存配置 · TEE启动失败
TEEOP-TEE
24
BL33(U-Boot/EDK2)启动
ATF跳转到BL33 · 启动参数传递 · Bootloader兼容性
BL33U-Boot
25
安全启动与OTP
一次性可编程存储器 · 安全位设置 · 防回滚机制
OTP安全
26
性能优化
启动时间优化 · 代码尺寸优化 · 缓存策略调整
优化性能
27
多平台适配
同一代码库支持多SoC · 条件编译 · 设备树传递
多平台DTB
28
版本升级与迁移
ATF版本API变化 · 迁移注意事项 · 兼容性测试
升级迁移
29
社区资源与贡献
邮件列表 · Issue提交 · Patch规范 · 获取帮助
社区贡献
30
综合实战
从零移植ATF到新开发板 · 完整排查流程 · 文档编写
实战项目