MTK安全启动分析3:MTK 启动组件与 ARMv8 标准 ATF 阶段对应关系
MTK 启动组件与 ARMv8 标准 ATF 阶段对应关系
一、总览对应表
|
ARMv8 标准ATF阶段 |
标准职能定位 |
MTK 平台对应组件 |
运行特权级 |
运行架构 |
核心作用匹配 |
|
BL1 |
芯片ROM级一级引导,硬件信任根,验签并加载BL2 |
BROM(Boot ROM) |
EL3 |
AArch32 |
芯片固化代码,锚定eFuse硬件根,验签preloader,跳转执行 |
|
BL2 |
可信二级引导,完成硬件初始化、加载并验签所有BL3x镜像、配置安全环境、跳转BL31 |
Preloader |
SVC(EL1 安全态) |
AArch32 |
初始化硬件/安全域、加载并验签ATF/TEE/LK、配置内存隔离、跳转ATF |
|
BL31 |
安全监视器固件,EL3运行时,负责特权级切换、SMC分发、电源管理 |
ATF / BL31 固件 |
EL3 |
AArch64 |
安全世界核心底座,PSCI电源管理、SMC调用分发、安全/非安全世界切换 |
|
BL32 |
可信操作系统TEE,运行在安全世界EL1,提供可信服务 |
TEE OS(Trustonic/Trusty等) |
Secure EL1 |
AArch64 |
密钥管理、安全存储、DRM、Keymaster等可信业务 |
|
BL33 |
普通世界Bootloader,非安全态引导程序,加载系统内核 |
LK(Little Kernel) |
Non-secure EL2/EL1 |
AArch64 |
系统级引导、AVB验证、加载内核/设备树、启动Android |
二、逐阶段详细对应与代码佐证
1. BL1 ↔ MTK BROM(Boot ROM)
标准定义
MTK 对应逻辑
- 锚定 eFuse/OTP 中的根公钥哈希,硬件级信任根;
- 从eMMC读取preloader镜像,完成签名校验;
- 校验通过后,将启动参数存入r4寄存器,跳转preloader入口;
- 校验失败则进入下载模式,拒绝启动。
差异点
2. BL2 ↔ MTK Preloader
标准定义
- 基础硬件初始化(时钟、串口、存储、内存);
- 从存储设备加载 BL31、BL32、BL33 镜像;
- 对所有BL3x镜像做签名校验,保证镜像可信;
- 配置安全硬件、内存隔离、MPU权限;
- 跳转进入 BL31(EL3),移交控制权。
MTK 对应逻辑
|
标准BL2职能 |
Preloader 对应代码/逻辑 |
|
硬件初始化 |
platform_pre_init() / platform_init() ,初始化时钟、串口、存储、DDR |
|
安全硬件配置 |
device_APC_dom_setup() 配置总线域隔离, trustzone_pre_init() 配置安全环境 |
|
加载并验签BL31/BL32 |
bldr_load_tee_part() 加载ATF+TEE镜像, tee_verify_image() 做签名校验 |
|
加载BL33 |
bldr_load_part_lk() 加载LK镜像 |
|
内存安全隔离 |
tee_sec_config() 配置EMI MPU,锁定安全内存仅安全世界可访问 |
|
跳转BL31 |
trustzone_jump() → jumparch64 切换架构并进入ATF |
MTK 专属差异(最核心的不同)
3. BL31(ATF) ↔ MTK ATF / BL31 固件
标准定义
- 初始化EL3异常向量表,处理SMC调用、中断、异常;
- 实现PSCI(电源状态协调接口),负责CPU热插拔、休眠唤醒、系统重启/关机;
- 负责安全世界与普通世界的上下文切换、权限管控;
- 启动BL32(TEE OS),再启动BL33(普通世界Bootloader)。
MTK 对应逻辑
- 运行在AArch64 EL3,是整个系统的最高权限层;
- 承接Preloader传入的启动参数、密钥、内存布局;
- 初始化SMC分发框架、PSCI服务、安全中断;
- 启动BL32(TEE OS)后,切换到非安全态启动BL33(LK);
- 系统运行过程中常驻后台,响应普通世界的SMC安全请求。
补充
4. BL32(TEE OS) ↔ MTK TEE OS
标准定义
MTK 对应逻辑
- 支持Trustonic、Google Trusty、微诚、天宸等多家TEE方案,代码中通过编译宏适配;
- 运行在AArch64 Secure EL1,由BL31加载启动;
- 接收Preloader注入的RPMB密钥、FDE根密钥,实现安全存储、全盘加密的底层支撑;
- 向上对接Android Keymaster、Gatekeeper、Widevine等系统安全服务。
5. BL33 (UBOOT)↔ MTK LK(Little Kernel)
标准定义
MTK 对应逻辑
- 运行在AArch64 Non-secure EL2,由ATF BL31从安全世界切换过来启动;
- 核心职责:外设初始化、开机Logo显示、AVB 2.0系统级验签、boot/recovery分区校验、加载内核与设备树、传递启动参数、跳转Linux内核;
- 提供Fastboot、Recovery等刷机/恢复模式。
补充
三、完整启动时序的逐阶对应
- BL1(BROM):芯片上电,固化ROM代码运行,验签Preloader → 跳转Preloader
- BL2(Preloader):初始化硬件、配置安全域、加载并验签ATF/TEE/LK → 暖复位切换架构,跳转BL31
- BL31(ATF):EL3运行时初始化、注册SMC/PSCI服务 → 启动BL32 TEE OS
- BL32(TEE OS):可信系统初始化、密钥服务就绪 → 返回BL31
- BL33(LK):BL31切换到非安全态,启动LK → LK执行AVB验证、加载内核 → 启动Android系统
四、总结
1.职能完全对齐,仅实现方式有平台差异
2.两级安全启动的分层对应
- BL1→BL2 对应芯片级安全启动:BROM验签Preloader,锚定硬件根;
- BL2→BL31/BL32 对应安全世界信任链:Preloader验签ATF/TEE,保证安全世界可信;
- BL33 内部执行系统级AVB验证:LK验签系统分区,保证普通世界系统可信。
3.行业通用命名习惯
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)