这是本文档旧的修订版!


ARM TrustZone技术和安全启动流程涉及到一些特点,首先分区结构可大致如左图所示:

一般而言,在NAND闪存上,分区表是由字符串定义的(mtdparts)​,fsbl1, fsbl2: (First Stage Boot Loader) 包含了ARM可信固件(TF-A)​,metadata1, metadata2分区则包含了从哪个FIP镜像启动的信息(A或B); 而固件镜像包fip-a, fip-b则包含了OP-TEE和U-Boot。​UBI分区中有不同的UBI卷,包含有U-Boot环境参数和系统镜。​

以下是一个简化的CCMP启动流程:

1、上电或复位:处理器开始执行内置的ROM代码,加载tf-a固件,初始化TrustZone

2、tf-a根据metadata分区中的信息加载FIP固件,它加载OP-TEE(BL32),设置安全环境,然后加载并启动非安全世界的引导加载程序U-Boot(BL33)

3、U-Boot:加载Linux内核和设备树,启动操作系统。

这个流程确保了系统的每个阶段都是经过验证的,并且能够在TrustZone的保护下安全地执行。