赞
踩
Trusted Firmware-A(ATF)是一款轻量级的开源固件,用于为ARMv8-A SoC平台提供安全启动和运行时环境。它由ARM公司和全球范围内的合作伙伴共同开发和维护,旨在提供一个安全、可靠和可定制的基础固件,以支持ARMv8-A SoC平台的安全引导和操作。它实现了不同的ARM接口标准,如下:
名称 | 寄存器 | 功能 |
---|---|---|
SP_ELx | 栈针寄存器 | ARMv8包含四个异常等级,对应有四个SP栈针寄存器SP_EL0~SP_EL3,SP_EL0可以被任何异常等级使用,其他异常等级会使用对应的SP_ELx寄存器 |
PSTATE | 处理器状态寄存器 | 表示处理器状态,包含条件标志位,执行状态控制,异常掩码标志位,访问权限 |
SPSR | 备份程序状态寄存器 | 用于保存程序在异常处理过程中的状态。在发生异常时,CPU会将PSTATE寄存器值保存到SPSR寄存器中,然后切换到异常处理程序;处理完成后恢复SPSR的值到PSTATE寄存器中 |
SCR_EL3 | 安全配置寄存器 | 设置安全相关的属性,只有EL3等级可以配置,其他等级没有 |
SCTLR_EL3 | 系统控制器 | 设置EL3等级下的状态控制信息,包括MMU,对齐检查,cache控制,内存权限,数据大小端 |
ELR_ELx | 异常链接寄存器 | 存放异常返回的地址,在异常处理完成后恢复到PC中 |
ARM将ATF作为底层固件并且开源出来,目的在于将ARM底层的操作统一,以使代码能够重用和便于移植。ATF主要实现了以下功能:
ATF将整个启动过程如下图所示。
ATF的加载流程划分为多个阶段,用BLx来表示,典型的有BL1、BL2、BL31、BL32、BL33等,典型的加载流程如下。
由于ARMv8架构提出了不同的异常级别,每个阶段运行在不同的异常等级,其典型的启动流程如下。
复位后BL1运行在EL3,它执行完成后会通过异常返回ERET的方式跳转到BL2
BL2执行完成后需要跳转到BL31,由于BL31运行在EL3异常等级,只能通过smc异常触发进入EL3异常等级
BL1捕获SMC异常,根据BL2传入的参数设置BL31的入口地址和系统初始状态,通过ERET跳转到BL31的入口地址处执行
BL31根据其镜像加载信息设置入口地址以及其它状态,并完成跳转BL32
BL32加载完成后将通过SMC返回到BL31
BL31跳转到non secure EL1或non secure EL2以执行BL33
阶段 | 异常等级 | 功能 | 描述 |
---|---|---|---|
BL1 | EL3 | AP Boot ROM | 加载bl2 |
BL2 | Secure EL1 | Trusted Boot Firmware | 加载bl3x |
BL31 | EL3 | EL3 Runtime Firmware | 启动TEE-OS;启动REE镜像 |
BL32 | Secure EL1 | TEE-OS(如OP-TEE) | 运行Trusted-OS |
BL33 | NS-EL1/EL2 | Non-Trusted Firmware(如U-Boot) | 加载kernel |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。