当前位置: 首页 > news >正文

ATF简介

一、ATF是啥呢?

ATF(Arm Trusted Firmware) 是由 Arm 官方提供的开源固件框架,主要用于在基于 Arm 架构的处理器上实现 安全启动、安全世界管理和异常级别切换 等功能。支持安全世界与非安全世界之间的隔离。(ATF是安全世界,APP/linux是非安全世界喽!!!)

它运行在 Arm 架构的 EL3(Exception Level 3),也就是最高权限级别,属于 安全世界(Secure World) 的一部分。

二、为啥要有ATF

ATF 的存在是为了满足以下几个关键需求:

  1. 安全启动(Secure Boot):确保系统从上电开始就处于可信状态。
  2. 异常级别管理:在 EL3 层管理 EL0~EL2 的权限切换,确保系统安全。
  3. TEE 支持:为 TrustZone 提供安全世界的运行环境(如 OP-TEE)。
  4. 电源管理:协调多核处理器的启动、挂起、唤醒等操作。
  5. 系统初始化:初始化内存、MMU、缓存等关键硬件资源。

三、ATF工作原理

ATF 的核心模块包括:

  • BL1(Boot Loader Stage 1):芯片上电后执行的第一段代码,负责加载 BL2。
  • BL2(Trusted Boot Firmware):验证并加载后续固件(如 BL31、BL32、BL33)。
  • BL31(EL3 Runtime Firmware):常驻 EL3,处理异常、上下文切换、安全调用(SMC)。
  • BL32(Optional TEE):运行在 Secure World 的 TEE(如 OP-TEE)。
  • BL33(Normal World OS):如 U-Boot、Linux 等,运行在 EL2/EL1。

工作流程如下:

上电 → BL1 → BL2 → BL31(+BL32)→ BL33 → 操作系统启动

ATF 通过 SMC(Secure Monitor Call) 实现 Normal World 与 Secure World 的通信。

1、如何和UBOOT以及linux协同工作呢?

组件运行级别主要职责
ATF (BL1/BL2/BL31)EL3安全启动、异常管理、TEE支持、电源管理
U-Boot (BL33)EL2/EL1加载内核、设备树、initrd,提供启动参数
Linux KernelEL1操作系统核心,管理硬件资源和用户空间
1. ATF 阶段
  • BL1:芯片上电后执行,初始化最小硬件,加载 BL2。
  • BL2:验证并加载 BL31(ATF Runtime)、BL32(TEE,可选)、BL33(U-Boot)。
  • BL31:驻留在 EL3,初始化安全环境,设置异常向量表,准备好 SMC 接口。
  • BL31 最后跳转到 BL33(U-Boot),并保留对 EL3 的控制。
2. U-Boot 阶段
  • 运行在 EL2 或 EL1。
  • 读取设备树(DTB)、内核镜像(zImage/Image)、initrd。
  • 设置启动参数(ATAG 或 bootargs)。
  • 通过 smc 调用与 ATF 通信(如 PSCI 电源管理)。
  • 最后跳转到 Linux 内核入口。
3. Linux 阶段
  • 内核启动后,继续初始化硬件、挂载根文件系统。
  • 通过 SMC 接口与 ATF 交互(如 CPU 热插拔、挂起唤醒等)。
  • 如果有 TEE(如 OP-TEE),Linux 通过 TEE driver 与其通信。

关键协同机制

1. SMC 调用机制

  • U-Boot 和 Linux 使用 SMC 指令向 ATF 发起请求。
  • 常见用途:
    • 电源管理(PSCI)
    • 安全服务(如密钥存储、加密)
    • TEE 通信

2. 设备树传递

  • U-Boot 将设备树(DTB)传递给 Linux。
  • ATF 通常不直接处理 DTB,但可能会修改或注入安全相关节点。

3. 异常级别切换

  • ATF 负责从 EL3 切换到 EL2(U-Boot)或 EL1(Linux)。
  • 保证安全世界与普通世界的隔离。

ATF 是安全世界的守门人,U-Boot 是引导者,Linux 是最终的执行者。三者通过 SMC、异常级别切换和设备树等机制紧密协作,构建一个既安全又高效的启动流程。

EL3/2/1啥意思呢?

在 Arm 架构中,异常等级(Exception Levels, EL) 是用来划分不同特权级别的机制,主要用于操作系统、安全固件和用户应用之间的隔离。

异常等级权限运行环境典型用途
EL3最高Secure MonitorATF、安全固件、异常管理
EL2Hypervisor虚拟化(KVM、Xen)
EL1OS KernelLinux、RTOS
EL0最低User Space应用程序

四、具体芯片中的应用

  • NXP i.MX8M

    • ATF 管理 Cortex-A 核心的启动和电源状态。
    • 支持 OP-TEE 和 CAAM(加密加速模块)协同工作。

http://www.dtcms.com/a/302774.html

相关文章:

  • 汽车膨胀水箱(副水箱)液位传感器的作用
  • Linux DNS解析3 -- DNS解析代理配置使用
  • Android 媒体播放开发完全指南
  • 量子计算新势力,微美全息FPGA方案解锁大幅优化与性能提升密码
  • 在Windows下读写Linux EXT文件系统文件
  • 为什么bert是双向transformer
  • vue2 基础学习 day02 (案例、watch侦听器(监视器))
  • API产品升级丨全知科技发布「知影-API风险监测平台」:以AI重构企业数据接口安全治理新范式
  • 深入探索Linux:忙碌的车间“进程”间通信
  • Datawhale AI夏令营--Task2:理解项目目标、从业务理解到技术实现!
  • Linux知识回顾总结----基础IO
  • Muduo库
  • Effective Modern C++条款18:为什么在独占资源管理中使用`std::unique_ptr`?
  • getdents64系统调用及示例
  • 搭建HAProxy高可用负载均衡系统
  • 四、计算机组成原理——第2章:数据的表示和运算
  • OpenLayers 综合案例-动态闪烁
  • YOLO11 改进、魔改|低分辨率自注意力机制LRSA ,提取全局上下文建模与局部细节,提升小目标、密集小目标的检测能力
  • Python将Word转换为Excel
  • eclipse更改jdk环境和生成webservice客户端代码
  • Linux应用管理与YUM/DNF指南
  • 迅为RK3568开发板OpeHarmony学习开发手册-配置电源管理芯片和点亮HDMI屏幕-配置电源管理芯片
  • ARM share memory
  • 智慧工地系统:科技赋能建筑新未来
  • 电子签章(PDF)
  • 阿里云可观测 2025 年 6 月产品动态
  • 【机器学习-4】 | 集成学习 / 随机森林篇
  • 以科力锐为例介绍常见的数据中心4种灾备方式
  • HDFS Block与Spark的partition对比
  • MCU+RTOS调试