1-Alternative Boot Flows
引流关键词: 中断、同步异常、异步异常、irq、fiq、BL1,BL2,BL3,BL31,BL32,BL33,AP_BL1,AP_BL2,AP_BL3,AP_BL31,AP_BL32,AP_BL33,SCP_BL1,SCP_BL2,BL0,BL30, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表…
快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
[专栏目录]-ATF/FF-A/specification学习
1.交替引导流程
1.1。EL3 有效负载替代引导流程
在预生产系统上,需要能够在最高异常级别执行任意裸机代码。它允许完全、直接地访问硬件,例如运行硅浸泡测试。
尽管可以从头开始实施一些裸机安全固件,但这在某些平台上是一项复杂的任务,具体取决于将系统置于预期状态所需的配置级别。
与其引导裸机应用程序,一种可能的折衷方案是 通过 TF-A 引导。这是作为替代引导流程实现的,其中修改后的 BL2 引导 EL3 有效负载,而不是加载其他 BL 映像并将控制权传递给 BL31。它通过以下方式降低了开发 EL3 裸机代码的复杂性:EL3 payloads
-
将系统置于已知的架构状态;
-
处理平台安全世界初始化;
-
如果平台需要,加载 SCP_BL2 图像。
在 Arm 标准平台上启动 EL3 有效负载时,TrustZone 控制器的配置得到简化,仅启用区域 0 并配置为仅允许安全访问。这样就可以完全访问 EL3 有效负载的整个 DRAM。
系统保持与在默认引导流程中进入 BL31 时相同的状态。特别是:
-
运行在EL3;
-
当前状态是 AArch64;
-
小端数据访问;
-
禁用所有例外;
-
MMU 禁用;
-
缓存被禁用。
1.1.1。启动 EL3 有效负载
EL3 有效负载图像是一个独立的图像,不是 FIP 的一部分。它不是由 TF-A 加载的。因此,有两种可能的情况:
-
EL3 有效负载可以驻留在非易失性存储器 (NVM) 中并就地执行。在这种情况下,启动它只需要EL3_PAYLOAD_BASE在构建 TF-A 时在 NVM 中指定正确的地址即可。
-
EL3 有效负载需要在运行时加载到易失性存储器(例如 DRAM)中。
为了在后一种情况下提供帮助,SPIN_ON_BL1_EXIT=1可以使用构建选项。它在 BL1 中引入的无限循环在适当的时刻停止执行,以便调试器控制目标并加载有效负载(例如,通过 JTAG)。
预计这种加载方法在大多数情况下都可以工作,因为调试器连接通常在预生产系统中可用。不过,用户可以自由使用任何其他特定于平台的机制来加载 EL3 有效负载。
1.2. 预加载的 BL33 替代引导流程
一些平台能够将 BL33 预加载到内存中,而不是依赖 TF-A 来加载它。这可以简化普通世界代码的打包并提高开发环境中的性能。安全世界冷启动完成后,TF-A 只需跳转到构建时提供的 BL33 基地址。
要使用此选项,PRELOADED_BL33_BASE编译 TF-A 时必须使用 build 选项。例如,以下命令将创建一个没有 BL33 的 FIP,并准备跳转到地址 0x80000000 加载的 BL33 图像:
make PRELOADED_BL33_BASE=0x80000000 PLAT=fvp all fip总结
以上是生活随笔为你收集整理的1-Alternative Boot Flows的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 20-Granule Protectio
- 下一篇: 2-Authentication Fra