跳转至

Linux 初识 Falcon Mode

本章节属于 Linux 启动优化的一个知识点,大概讲述认识下 Falcon Mode。

专有名词

Acronym Meaning
ATF Arm Trusted Firmware
DTB Device Tree Blob
DTS Device Tree Source
FIT Flattened Image Tree
OS Operating System
ROM Read-Only Memory
SoC System on Chip
SPL Secondary Program Loader

1. U-Boot SPL

SPL 是 U-Boot 的精简版本。它有助于进行一些初始硬件配置(例如 DRAM使用 CPU 缓存作为 RAM 进行初始化)并加载更大、功能齐全的 U-Boot 版本。当板子启动时,除了ROM代码外,第一级引导加载程序是U-Boot SPL;和第二阶段引导加载程序是常规的 U-Boot(或 U-Boot)。需要明确的是:SPL 代表 Secondary Program Loader,这意味着ROM代码是加载(和执行)另一个程序的第一件事,而SPL是加载(并执行)另一个程序的第二件事。

Introduction to U-Boot SPL

image-20240314141316148

在Arm V8架构上,Arm定义了一种首选的方式来使用Arm Trusted Firmware(ATF)引导安全组件。该过程包括以下几个步骤:

  1. 加载OP-TEE操作系统:ATF首先加载OP-TEE操作系统,该操作系统负责初始化安全世界。

  2. 加载U-Boot:在OP-TEE初始化之后,ATF加载U-Boot。然后,U-Boot动态修改设备树(Device Tree Blob,DTB),以包含加载Linux TEE(可信执行环境)驱动程序所需的特定节点。

  3. 启动Linux:通过修改后的DTB,Linux被启动,继续系统初始化过程。

这个顺序确保了Arm V8系统的安全和可控的引导过程。

image-20240314141225436

image-20240320172605944

2. Falcon Mode

在U-Boot中,引入了Falcon Mode以加速启动过程,允许它在不启动完整U-Boot的情况下启动Linux内核(或其他镜像)。 猎鹰模式依赖于SPL框架。在大多数实现中,SPL用于启动U-Boot。Falcon Mode扩展了这种方式,允许直接从SPL启动Linux内核。

Load and boot Linux kernel from SPL

image-20240314141239049

image-20240320172621232

image-20240321114352362

image-20240321114420647

3. 总结

对于本章节显得枯燥,这里需要总结下:Falcon mode 是依赖于SPL框架,可以直接跳过UBOOT第二阶段,加载Linux 内核,这总往往在于对快速启动要求比较高的时候会使用上,往往作为一种快速启动的优化手段。拥有此功能需要得到SoC 的支持,并非所有SoC都有Falcon Mode。