一.ARMV8的ATF 1. BootROM(芯片内置固化 ROM,Secure) 上电最先跑,写在芯片内部硬件 ROM 里,不可修改。 作用: (1)初始化最基础硬件(复位、时钟、OCRAM) (2)读取启动配置(从 eFuse 或者引脚判断:SPI Flash/eMMC 启动) (3) 把 SPL 镜像加载到片上 OCRAM,跳转到 SPL 执行。 (4) U-Boot SPL(Secondary Program Loader,Secure 世界) (5)SPL 就是精简版 U-Boot,跑在安全世界,放在片上 OCRAM 运行。
2.SPL 的工作: (1)初始化 DDR 内存(DDR 控制器初始化,把外部 DDR 拉起来) (2)从 Flash(eMMC/SPI)读取 BL31 镜像,加载到 DDR 的安全预留区域 (3)跳转到 BL31,把执行权交给 BL31 注意:SPL 属于安全世界,此时 NS=0,能操作安全相关硬件。
3.BL31(ATF 核心,EL3 Monitor,常驻内存) EL3 是 ARMv8 最高特权级,只有 BL31 运行在 EL3,常驻内存,不会退出销毁 BL31 的核心职责: (1)提供 SMC(Secure Monitor Call)安全监控调用。普通世界(U-Boot/Linux)想要访问安全硬件,要通过 SMC 指令陷入 EL3,由 BL31 代理执行。 (2) 安全切换:把 CPU 从 Secure 世界切换到 Normal 普通世界,准备启动 BL33。 (3)电源管理、复位、异常处理。 BL31 不会消失!后面 Linux 内核运行的时候,如果调用 SMC,依然会进入 BL31 处理。
4.U-Boot proper(BL33,普通世界 NS=1) (1) BL33 就是完整 U-Boot 主程序,由 BL31 启动,运行在普通世界。 (2)
网硕互联帮助中心


评论前必须登录!
注册