ATF(Arm Trusted Firmware)是一个为ARMv8-A架构SoC提供的安全固件,它包含了多个组件和功能来确保系统的安全启动和运行时环境。以下是ATF中的一些主要功能和组件:
BL1(Boot Loader Stage 1)
这是ATF的第一阶段引导加载程序。
负责从非易失性存储器(如eMMC、UFS、NAND等)中加载BL2和其他固件组件。
初始化最低级别的硬件,如设置异常向量和缓存。
BL2(Boot Loader Stage 2)
这是ATF的第二阶段引导加载程序。
负责更高级的硬件初始化,如MMU、GIC(通用中断控制器)和某些外设。
可以执行图像认证来验证后续要加载的固件(如UEFI、U-Boot或操作系统内核)的完整性和真实性。
加载并跳转到下一阶段的固件。
BL31(ARM Trusted OS)
这是一个可选的组件,通常是一个轻量级的信任操作系统(Trusted OS)。
提供了安全世界(Secure World)的运行时环境。
管理安全和非安全世界之间的切换。
提供了一组服务,如密码加速、密钥管理和安全存储。
启动过程
ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。
在AArch32中,不会加载BL31,而是将EL3或者Monitor模式的运行代码保存在BL32中执行。
在AArch64中,ATF的完整启动流程包括调用el3_exit函数来实现BL1到BL2的跳转,进入BL2中开始执行。
BL2跳转到BL31执行,并在BL2中加载BL31、BL32、BL33的镜像文件到对应权限的内存中,并将这些镜像文件的描述信息组成一个链表保存起来,以备BL31启动BL32和BL33使用。
建议
理解ATF的各个组件及其功能:这对于确保系统的安全启动和运行至关重要。
根据具体需求选择合适的组件:例如,在需要高级安全特性的场景中,BL31和BL32的使用是必不可少的。
关注ATF的更新和兼容性:随着ARM架构的不断发展,ATF也会不断更新,以支持新的硬件和软件特性。