1. 启动流程全景概览:启动阶段划分、关键术语与交付物清单

1.1 适用场景

本章适用于以下场景:

  • 初次接触高通8155平台(SA8155P/SA8195P)启动流程的嵌入式开发工程师。
  • 需要梳理启动链路各阶段责任边界与交付物的系统集成工程师。
  • 进行开机优化、安全启动(Secure Boot)合规性审查的项目成员。
  • 编写启动自动化测试用例的QA与验证工程师。

1.2 前置条件

  • 已获得高通8155平台相关芯片数据手册(Device Specification)及启动配置指南(Boot Flow Guide)。
  • 具备ARMv8-A架构基础认知,了解异常级别(EL0~EL3)。
  • 开发环境已搭建完成,至少拥有串口日志抓取工具及JTAG调试能力。

1.3 启动阶段划分与操作步骤

高通8155启动流程按执行顺序可分为以下8个逻辑阶段。每个阶段均有独立的镜像、加载器及运行目标内存区域:

  1. PBL(Primary Boot Loader):固化在ROM中的一级加载器,上电后由CPU直接从ROM执行,初始化基础时钟、DDR控制器并验证下一级加载器SBL的签名。
  2. SBL(Secondary Boot Loader):加载并运行于DDR的二级加载器,负责初始化更多外设(UART、eMMC、USB),加载UEFI/ABL到指定内存地址。
  3. UEFI/ABL(AArch64 Boot Loader):运行在EL2的UEFI固件,解析设备树DTB/ACPI表,加载并启动HLOS(High Level Operating System,即Android/Linux内核)。
  4. Kernel:Linux内核,解压并初始化设备驱动、内存管理、调度器,挂载根文件系统。
  5. Init:用户空间第一个进程PID 1,执行init.rc脚本,启动核心服务(servicemanager、surfaceflinger等)。
  6. Boot Animation:开机动画服务,标志着用户可见界面的启动。
  7. SystemUI & Launcher:系统UI与桌面启动,完成用户态启动流程。
  8. CarService:车机专用服务层,初始化空调、音响、车身控制等IVI服务,完成整机启动。

关键认识:PBL到Kernel阶段属于“安全启动链”,每一级加载前都对下一级镜像进行RSA2048/SHA256校验,任何一级校验失败将进入紧急下载模式(EDL)。

1.4 关键术语

术语 定义 关联阶段
EL0/EL1/EL2/EL3 ARM异常级别,EL3最高(安全监控),EL2为虚拟机监控器,EL1为内核,EL0为用户态。 PBL→Kernel
CDT(Device Configuration Data) 存储于eMMC/NAND中的分区表与硬件配置参数,由PBL/SBL读取。 PBL、SBL
XBL(eXtensible Boot Loader) 高通对SBL的代称,本质上相同。 SBL
DTB/DTBO 设备树二进制/覆盖,描述硬件拓扑与资源,用于内核驱动加载。 UEFI→Kernel
EDL(Emergency Download Mode) 设备进入的恢复模式,可通过QPST/fastboot刷机。 PBL(异常)
HLOS 高级操作系统,即Android Linux内核及用户空间。 Kernel→Launcher

1.5 输入输出物

阶段 输入物 输出物
PBL ROM代码、CDT分区、eMMC boot1/boot2 SBL镜像加载完成状态、启动链路日志(QUP UART)
SBL sbl1.mbn、sec.dat(安全配置)、rpm.mbn UEFI/ABL镜像加载完成、DDR初始化完成、时钟树稳定
UEFI/ABL abl.elf、DTB/DTBO分区、UEFI变量 kernel Image、ramdisk、fdt地址加载完成
Kernel→Launcher boot.img、vendor_boot.img、system.img Android系统启动完成、SurfaceFlinger服务就绪

1.6 责任边界

  • 芯片级(Qualcomm):PBL提供,不可更改;SBL/UEFI固件由QTI提供参考,OEM可定制CDT与安全配置。
  • 平台级(OEM/Tier1):定制ABL参数、设备树、Kernel配置;确保HLOS镜像签名链完整。
  • 应用级(IVI团队):负责CarService、SystemUI、Launcher等用户态服务的启动优化与监控。
  • 验证团队:制定启动延迟指标(KPI),验收各阶段时间窗口。

1.7 记录材料

每次启动完成后,应由自动化脚本采集以下记录材料并归档:

# 启动日志关键段示例(抓取自串口)
PBL: Boot Mode: 0x0 (Normal)
PBL: Loading SBL from eMMC boot1
SBL: DDR init: 4266MHz, dual channel
SBL: Loading ABL from boot_a partition
UEFI: Kernel load address: 0x80000000
UEFI: DTB at 0x83000000, size 0x30000
Kernel: Booting Linux on physical CPU 0x0
Init: starting service 'surfaceflinger'...
  • 启动时间戳:各阶段标记点(Ping-Pong计时或Trace32时间轴截图)。
  • 安全校验结果:PBL/SBL签名校验通过/失败日志。
  • 异常快照:进入EDL时的故障转储文件(dump.elf)。

1.8 异常处理

常见异常场景及应对策略:

  • PBL卡死、无串口输出:检查供电序列(PMIC复位时序)、晶振起振、JTAG读取ROM状态寄存器。
  • SBL校验失败(SECURE_BOOT_EN=1):确认SBL镜像签名与OEM root cert匹配,检查sec.dat有效期。
  • UEFI无法加载Kernel:检查boot.img头信息(页大小、内核偏移量)、DTB/DTBO分区是否损坏。
  • Kernel panic后重启:通过ramdump抓取vmcore,分析最后调用栈。
  • Boot Animation后黑屏:检查SurfaceFlinger初始化日志、HWC HAL兼容性。

1.9 验收标准

验收项 达标要求
电源接通至串口输出PBL日志 ≤ 500ms
PBL → SBL跳转完成 ≤ 1.5s
SBL → UEFI跳转完成 ≤ 1.0s
Kernel解压完成至init启动 ≤ 2.5s
Launcher完全显示(首帧) ≤ 12s(冷启动)
整个流程无安全校验失败记录 100% 通过率
高通8155启动流程全景 高通8155启动流程全景结构图 PBL ROM加载 基础初始化 SBL DDR/外设 签名校验 UEFI HLOS加载 ACPI/DTB Kernel 驱动加载 根文件系统 Init Zygote/Serv BootAnim SystemUI 桌面启动 CarService IVI就绪 说明 逐级签名验证:PBL→SBL→UEFI→Kernel,任何一级失败即进入EDL模式。 冷启动总时间要求 < 12秒(从PMIC上电至Launcher首帧)。 0 ms ~1.5s ~2.5s ~5s ~8s ~12s Power On → PBL → SBL → UEFI → Kernel → Init → SystemUI → CarService