news 2026/7/15 12:47:34

Trusted Firmware-A 启动流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Trusted Firmware-A 启动流程

Trusted Firmware-A(TF-A)的调用流程遵循ARM的启动架构规范,通常分为多个阶段,从冷启动开始,逐步将控制权从底层固件转移到上层操作系统。以下是TF-A的典型调用流程:


1. Boot ROM (BL1)

  • 位置:固化在芯片内部的ROM中,是芯片上电后执行的第一段代码。
  • 职责
    • 初始化最基础的硬件(如CPU、必要的时钟、内存控制器)。
    • 加载并验证下一阶段固件(BL2)到安全内存(通常是SRAM)。
    • 建立安全环境,例如初始化TrustZone,将世界划分为安全世界(Secure World)和非安全世界(Normal World)。
  • 跳转:验证BL2后,跳转到BL2执行。

2. Trusted Boot Firmware (BL2)

  • 位置:通常加载到安全RAM(如SRAM)中运行。
  • 职责
    • 初始化更复杂的硬件(如DDR内存、更全面的外设)。
    • 加载并验证后续的固件镜像,包括:
      • BL31:EL3运行时固件。
      • BL32:可选的Secure-EL1固件(如OP-TEE)。
      • BL33:非安全世界引导加载程序(如U-Boot)。
    • 根据平台配置,可能还会加载其他固件(如SCP固件)。
  • 跳转:将控制权交给BL31。

3. EL3 Runtime Firmware (BL31)

  • 位置:运行在EL3(最高特权级),常驻安全内存。
  • 职责
    • 提供安全监控器功能,管理安全世界和非安全世界之间的切换(SMC调用)。
    • 实现电源状态协调接口(PSCI),用于CPU电源管理(如开机、关机、休眠)。
    • 初始化系统级安全服务(如加解密模块)。
    • 可选:为BL32(如OP-TEE)设置执行环境。
  • 跳转
    • 如果启用了BL32,则先跳转到BL32(Secure-EL1)。
    • 否则,直接跳转到BL33(Non-secure EL2或EL1)。

4. Secure-EL1 Payload (BL32,可选)

  • 典型实现:OP-TEE(可信执行环境)。
  • 职责
    • 提供可信执行环境,运行安全服务(如密钥存储、安全认证)。
    • 通过SMC调用与BL31(EL3)交互。
  • 跳转:完成后,通过SMC返回BL31,由BL31将控制权转交给BL33。

5. Non-secure Firmware (BL33)

  • 典型实现:U-Boot、UEFI或其它bootloader。
  • 职责
    • 在非安全世界运行,初始化非安全外设。
    • 加载操作系统内核(如Linux),并传递设备树(DTB)等参数。
  • 跳转:最终跳转到操作系统内核(通常位于EL2或EL1)。

6. 操作系统内核

  • 示例:Linux内核。
  • 启动:内核接管后,继续初始化系统,启动用户空间,完成系统启动。

│ Trusted Firmware-A 调用流程 │

│ BootROM
│ ↓
│ BL1_entry (bl1_entrypoint)
│ ↓
│ bl1_main()
│ ↓
│ bl1_load_bl2()
│ ├── bl1_plat_get_image_desc()
│ ├── bl1_plat_handle_pre_image_load()
│ └── load_auth_image() ← 加载验证BL2
│ ↓
│ BL2_entry
│ ↓
│ bl2_main()
│ ↓
│ bl2_load_images()
│ ├── plat_get_bl_image_load_info()
│ ├── bl2_plat_handle_pre_image_load()
│ ├── load_auth_image() ← 加载验证BL31/BL32/BL33
│ └── plat_get_next_bl_params()
│ ↓
│ ┌─────────────────────┐
│ │ 跳转方式选择 │
│ ├─────────────────────┤
│ │ 1. SMC方式: │
│ │ smc_BL1_RUN_IMAGE│
│ │ ↓ │
│ │ 2. 直接跳转: │
│ │ bl2_run_next_image│
│ └─────────────────────┘
│ ↓
│ BL31_entry
│ ├── bl31_setup() ← 早期平台设置
│ └── bl31_main()
│ ├── bl31_lib_init() ← 初始化辅助库
│ ├── bl31_platform_setup()← 平台设置
│ ├── runtime_svc_init() ← 初始化运行时服务
│ ├── bl31_register_bl32_init()
│ │ ↓
│ │ bl32_init() ← 调用安全OS初始化(可选)
│ └── bl31_prepare_next_image_entry()
│ ├── cm_prepare_el3_exit_ns()
│ │ ↓
│ │ NonSecure_OS (BL33/U-Boot)
│ └── cm_prepare_el3_exit()
│ ↓
│ Secure_OS (BL32/安全负载)

关键特性

  • 链式验证:每个阶段验证下一阶段的完整性和真实性,确保启动链安全。
  • 权限分离:EL3/BL31管理安全世界切换,BL32提供安全服务,BL33及以后运行非安全世界。
  • 灵活性:可通过编译选项配置是否包含BL32、BL33的源类型等。

这个流程确保了从硬件复位到操作系统启动的整个过程中,安全性和可控性得到保障。具体实现可能因平台和配置而异。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:14:59

如何快速掌握vue-plugin-hiprint:Vue项目打印设计的终极解决方案

如何快速掌握vue-plugin-hiprint:Vue项目打印设计的终极解决方案 【免费下载链接】vue-plugin-hiprint hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 项目地址: https://gitcode.com/gh_mirrors/vu/vue-plugin-hip…

作者头像 李华
网站建设 2026/7/14 1:58:58

ReadCat开源小说阅读器:打造沉浸式数字阅读新体验

还在为商业阅读软件的广告困扰吗?想要一款真正纯净、功能强大的本地小说阅读器吗?ReadCat开源小说阅读器正是为你量身打造的完美解决方案!这款基于Vue3和Electron技术构建的跨平台工具,为技术爱好者和阅读用户带来了前所未有的阅读…

作者头像 李华
网站建设 2026/7/13 12:23:56

物流智能调度进阶之路(量子Agent赋能路径优化实战)

第一章:物流智能调度进阶之路(量子Agent赋能路径优化实战)在现代物流系统中,路径优化长期面临组合爆炸难题,传统算法在大规模节点场景下计算效率受限。随着量子计算与多智能体系统(Multi-Agent System, MAS…

作者头像 李华
网站建设 2026/7/14 15:10:11

【医疗多模态Agent权重优化】:揭秘高效模型融合背后的黑科技

第一章:医疗多模态Agent权重优化的背景与意义在现代智慧医疗系统中,多模态Agent通过整合医学影像、电子病历、基因组数据和实时生理信号等多种异构信息源,显著提升了疾病诊断、治疗建议与患者管理的智能化水平。然而,不同模态数据…

作者头像 李华
网站建设 2026/7/10 10:37:41

SD Maid SE安卓版(安卓系统清理器)

SD Maid是一款Android设备的系统清理工具,它能帮助用户清理手机中的不需要的文件和数据,提升设备的性能并节省存储空间。 软件功能 垃圾清理:SD Maid能够扫描并删除设备中的垃圾文件、临时文件和无用的应用程序数据,包括缓存文件…

作者头像 李华
网站建设 2026/7/11 12:43:47

Zoner Photo Studio X(照片编辑管理)

Zoner Photo Studio X是一款功能丰富的照片编辑和管理软件。它提供了许多强大的工具和功能,可以帮助用户轻松地编辑、组织和共享照片。 软件功能 图片编辑:提供了多种编辑工具,包括剪裁、调整色彩、修复红眼、消除瑕疵等,使用户能…

作者头像 李华