【DeepSeek】BL2加载BL3x
2026/4/22 23:36:00 网站建设 项目流程

下面是详细的流程解析:

1. BL2 阶段(可信启动加载器)

  • 职责:BL2 运行在 Trusted SRAM 中,主要负责加载后续阶段的镜像。
  • 动作
    1. BL2 从存储设备(如 Flash)中读取BL31(EL3 Runtime Software)BL33(Non-trusted Firmware,通常是 U-Boot)的镜像到内存中。
    2. BL2 填充镜像描述符,告诉系统这些镜像在哪里,入口点是多少。
    3. 跳转:BL2 完成加载后,会直接跳转到BL31的入口点。

2. BL31 阶段(EL3 运行时软件 / Secure Monitor)

这是 ARM TrustZone 架构中最核心的部分。

  • 职责:BL31 运行在最高的特权级 EL3。它负责系统安全状态的切换(Secure World 与 Non-secure World 的切换)。
  • 动作
    1. 初始化:BL31 进行 EL3 级别的环境初始化(如设置异常向量表、配置 PSCI 电源管理等)。
    2. 准备跳转:BL31 初始化完成后,它不会“退出”(return)或消亡。它准备好接收来自 BL33(或 Linux)的 SMC(Secure Monitor Call)调用。
    3. 移交控制权:BL31 会恢复 BL33 的上下文(CPU 寄存器状态),然后执行eret(Exception Return)指令,从 EL3 切换到 EL2(或 EL1),正式跳转到BL33 (U-Boot)

3. BL31 与 BL33 的关系(关键点)

  • BL31 不是“退出”了:当 BL33 (U-Boot) 或 Linux 内核运行时,如果需要进行安全操作(例如电源管理、TrustZone 服务),它们会触发 SMC 异常,CPU 会立刻暂停当前任务,跳回 BL31处理。
  • BL31 是常驻的:在整个系统运行期间,BL31 始终驻留在内存中充当“安全监视器”的角色。

4. BL33 阶段

  • 职责:这就是我们常见的 U-Boot(非安全世界的 Bootloader)。
  • 动作:初始化外设、加载 Linux 内核,最终启动操作系统。

流程图解

BL33 (U-Boot)BL31 (EL3 Monitor)BL2BL33 (U-Boot)BL31 (EL3 Monitor)BL25. EL3 环境初始化(设置向量表、PSCI等)6. 准备 BL33 的运行环境(EL2/EL1 上下文)8. U-Boot 开始运行加载 Linux 内核BL31 此时保持静默等待 SMC 调用1. 初始化系统2. 加载 BL31 镜像到内存3. 加载 BL33 (U-Boot) 镜像到内存4. 跳转到 BL31 执行7. 执行 eret 指令移交控制权给 BL33

总结

你的理解流程是对的:BL2 加载 -> 跳 BL31 -> 跳 BL33

唯一需要修正的概念是:BL31 不会像普通函数那样“退出”,它是系统的“守门员”,在把控制权交给 BL33 后,它依然在后台待命,随时准备处理来自非安全世界的安全请求。

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

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

立即咨询