欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

1-Alternative Boot Flows

发布时间:2025/3/21 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。