Skip to main content
启动架构在启动的每个阶段使用引导加载程序和板级支持包(BSP)镜像。引导加载程序管理每个启动阶段,直到 Linux 内核和应用程序准备就绪并可以运行。

引导加载程序

系统在上电时运行引导加载程序软件,它作为加载操作系统和其他所需应用程序的接口。 Qualcomm 芯片组(包括 Qualcomm Linux 支持的芯片组)使用如下多阶段启动过程: 启动架构

主引导加载程序(PBL)

  • 为应用程序建立安全信任根(RoT)和安全启动过程。有关更多信息,请参阅安全启动
  • 识别主存储设备并加载称为可扩展引导加载程序(XBL)的二级引导加载程序。 如果系统在加载 XBL 镜像时遇到任何可恢复的错误,PBL 会进入紧急下载(EDL)模式。有关如何检测 EDL 模式的更多信息,请参阅 EDL 设备管理器的枚举
  • 将 XBL 段加载到启动 SoC 内部存储器中。有关 PBL 如何加载 XBL 段的更多信息,请参阅 APSS 冷启动流程

可扩展引导加载程序(XBL)

  • 初始化硬件、固件镜像、CPU 缓存、MMU、启动设备、PMIC 和 DDR。
  • 设置 RAM 转储 USB 驱动程序、USB 充电、热检查、电源管理集成电路(PMIC)和低功耗双倍数据速率(LPDDR)时钟功能。
  • 通过 USB 将 RAM 转储收集到主机上。
  • 加载并验证 Qualcomm® 可信执行环境(Qualcomm TEE)、Qualcomm Hypervisor 和 UEFI 镜像。
  • 提供 XBL 配置(XBL_CFG),它是冷启动流程的一部分,包含 PMIC 和其他驱动程序设置。
  • 为 XBL 提供 Qualcomm 签名的 ELF 段,以初始化外部保护单元(xPU)。
  • XBL_CFG 是一个独立的二进制文件,包含特定于平台的配置和设置。XBL 使用 XBL_CFG 驱动程序加载并配置所需的设置。该驱动程序使用此二进制文件对 XBL_CFG 的每项设置提供按需读取访问。

统一可扩展固件接口(UEFI)

UEFI 是操作系统(OS)与平台固件之间的软件接口。 它包含带有平台信息的数据表,以及 OS 及其加载程序可以使用的启动和运行时服务调用。它们共同为启动 OS 和运行 UEFI 应用程序创建了一个标准环境。 Qualcomm 使用 Tianocore EDK-II,这是一个开源实现,可从 http://www.tianocore.org/edk2/ 获取,它遵循 UEFI 规范 系统提供以下构建选项:
  • Retail 构建:具有最少的调试功能和最优的内存占用,非常适合生产环境。
  • Debug 构建:非常适合开发环境,启用了所有调试功能。
有关开发 UEFI 应用程序的信息,请参阅统一可扩展固件接口(UEFI)

U-Boot

U-Boot 是一个开源引导加载程序,在 Qualcomm Linux 启动流程中可以用作 EDK II 的替代方案。在此配置中,U-Boot 替代 EDK II,而所有其他阶段保持不变。 U-Boot 提供以下功能:
  • 初始化并配置启动所需的平台硬件和外设
  • 加载 systemd-boot EFI 镜像并将控制权移交给它,随后由其加载操作系统(OS)
  • 为 OS 实现 UEFI 启动服务和有限的运行时服务
  • 提供用于系统配置和调试的交互式命令行界面
  • 通过使用可信加密签名验证 OS 镜像来支持安全启动机制
有关 U-Boot 的更多详细信息,请参阅 Qualcomm Linux 上的 U-Boot

systemd-boot OS 管理器

systemd-boot 是一个执行已配置 EFI 镜像的 UEFI 启动管理器。它仅支持带有 UEFI 固件的系统,并执行以下操作:
  • 从 EFI 系统分区(ESP,在 Linux OS 运行时挂载到 /efi/boot/boot/efi)以及扩展引导加载程序分区(XBOOTLDR,挂载到 /boot)加载启动项信息。 您必须将配置文件片段、内核、初始 RAM 磁盘(initrd)和其他 EFI 镜像放置在 ESP 或 XBOOTLDR 中。
  • 读取简单且通用的引导加载程序配置文件,并为每个引导加载程序条目选择一个文件。所有文件都位于 ESP 分区中。
要确保 Qualcomm Linux 内核可以作为 EFI 镜像运行,请使用 CONFIG_EFI_STUB 编译选项。

后续步骤