ARMV8启动

ARMV8启动



reference:
聊聊SOC启动 armv8:https://zhuanlan.zhihu.com/p/519995589



BL1  (ROM code)
|
BL2  (SPL running use sam,initialize DDR)
|
BL31 (secure monitor)
|
BL32(trust os)   BL33(uboot)
                 |
                 linux kernel






ATF

固件层级的“安全世界总管”
定位: 运行在最高特权等级 EL3 的固件。
核心职责:
系统启动: 负责最初始的硬件初始化(BL1, BL2),加载并跳转到下一阶段的固件或操作系统(BL31 -> BL32/BL33)。
安全监控: 作为“看门人”,处理从非安全世界(Normal World,运行普通操作系统如 Linux)到安全世界(Secure World)的切换请求(通过 SMC/HVC 指令)。PSCI 调用就是最重要的例子之一。
平台安全服务: 提供标准化的安全服务接口(如 PSCI),并管理 EL3 级别的安全资源。
可信操作系统调度: 负责加载、启动和上下文切换运行在 S-EL1 的可信操作系统(TEE OS),如 OP-TEE。
ATF 与 PSCI: 如之前所述,ATF 是 PSCI 服务的主要实现者和提供者。当 OS 调用 PSCI 功能时,SMC 指令会陷入到运行在 EL3 的 ATF(具体是 BL31 阶段),由 ATF 执行实际的硬件操作。

OP-TEE

运行在安全世界的“可信操作系统”
定位: 一个开源的、运行在 S-EL1(Secure EL1)的可信执行环境操作系统。

核心职责:
提供 TEE 环境: 为 S-EL0(Secure EL0)的 可信应用程序 提供一个隔离的、安全的执行环境。
管理 TA: 加载、验证、执行和隔离多个可信应用程序。
提供安全服务: 实现密码学操作(加解密、签名验签)、安全存储、密钥管理等安全服务,供 TA 或通过 TEE Client API 供非安全世界的普通应用程序调用。
与 REE 通信: 提供标准的机制(如 GP TEE Internal Core API / Client API)与非安全世界的富执行环境通信。
依赖 ATF: OP-TEE 本身不直接运行在 EL3。它需要依赖运行在 EL3 的软件(通常是 ATF 的 BL31)来:
加载和启动: ATF 在启动流程中负责将 OP-TEE OS 镜像(作为 BL32)加载到安全内存并跳转到其入口点。
世界切换: 当普通世界应用程序需要调用 TEE 中的服务时,它会通过 SMC 指令发起请求。这个请求首先会被 EL3 的 ATF 捕获。ATF 负责保存非安全世界的上下文,然后切换到 S-EL1 的 OP-TEE 环境,并将请求传递给 OP-TEE。当 OP-TEE 处理完请求后,同样需要通过 ATF 切换回非安全世界。

底层硬件访问: OP-TEE OS 可能需要访问某些受保护的硬件资源(如特定的安全外设寄存器),这些访问有时需要通过调用 ATF 提供的底层服务(也是通过 SMC)来完成。ATF 充当了 OP-TEE 与最底层硬件(尤其是需要 EL3 权限的操作)之间的桥梁。

层级关系:

ATF 运行在最高特权 EL3,是安全世界的“基础平台”和“调度员”。
OP-TEE 运行在 S-EL1,是由 ATF 加载、启动和管理的一个“租户”(可信操作系统)。

分工协作:

ATF: 负责底层硬件初始化、安全监控、处理 SMC 陷阱、实现 PSCI 等平台级安全服务、加载和调度 OP-TEE。
OP-TEE: 负责在安全世界提供一个完整的、隔离的运行时环境,用于执行敏感的可信应用程序和安全服务。

协同工作流:

普通 App -> SMC 请求访问 TEE -> ATF (EL3) 捕获、切换世界 -> OP-TEE (S-EL1) 处理请求 -> ATF (EL3) 切换回普通世界 -> 返回结果给普通 App。
系统启动:BootROM -> ATF BL1/BL2 -> ATF BL31 (EL3) -> 加载并跳转到 OP-TEE OS (BL32, S-EL1) -> OP-TEE 初始化 -> ATF BL31 -> 加载并跳转到 Non-Secure OS (BL33, NS-EL2/EL1)。
依赖关系: OP-TEE 依赖于 ATF 来提供其运行所需的基础设施(加载、启动、世界切换、底层服务)。ATF 可以独立存在(即使不用 OP-TEE,它也能提供 PSCI 等服务),但 OP-TEE 需要 ATF 或类似功能的 EL3 固件才能正常工作。
目标不同: ATF 的目标是实现 ARM 平台固件的标准化和安全性,提供基础安全服务。OP-TEE 的目标是实现一个标准化的、安全的、用于运行可信应用的执行环境。

ATF,OP-TEE

ATF 是的“底层支撑平台”和“调度协调者”。

OP-TEE 是运行在由 ATF 管理的安全世界(S-EL1)中的一个具体的、重要的“租户”和“服务提供者”(TEE OS)。
它们共同协作,利用 ARM TrustZone 技术,在 ARM 平台上构建起完整的硬件强制隔离的可信执行环境解决方案。
在典型的基于 ARMv8-A 的系统中(如许多手机、嵌入式设备),你经常会看到 ATF 和 OP-TEE 一起部署,共同实现从底层固件安全到上层应用安全的完整链条。

posted @ 2022-09-26 17:36  王阳开  阅读(71)  评论(0)    收藏  举报