3. SDM启动流程(Boot Flow):Boot ROM阶段、Bootloader加载、HPS与FPGA配置顺序、安全启动链

Agilex SoC的启动流程由安全设备管理器(SDM)统一编排,分为四个核心阶段:Boot ROM、Bootloader加载、HPS与FPGA配置以及安全启动链验证。整个流程从片上ROM开始,逐级验证并加载后续固件,最终完成HPS子系统与FPGA Fabric的协同初始化。

3.1 启动流程总览

下图展示了SDM主导的完整启动流水线,从芯片上电复位到操作系统启动的四个关键阶段。

Agilex SDM启动流程总览 SDM启动流程总览 阶段1: Boot ROM 上电复位 → 硬件初始化 加载Bootloader 阶段2: Bootloader U-Boot / UEFI 外设初始化 阶段3: 配置 HPS + FPGA 协同配置 阶段4: 安全启动链 逐级签名验证 信任根建立 关键说明 • Boot ROM位于片上ROM,不可修改,是信任根(Root of Trust)的起点。 • Bootloader(如U-Boot)从QSPI/MMC/NAND等介质加载,负责初始化DDR、时钟、外设。 • HPS与FPGA配置顺序可配置:先HPS后FPGA、先FPGA后HPS、或并行配置。 • 安全启动链使用RSA/ECDSA签名验证,确保每个阶段固件的完整性与真实性。

3.2 Boot ROM阶段

Boot ROM是芯片上电后执行的第一个固件,固化在SDM内部的只读存储器中。其主要职责包括:

  • 硬件初始化:配置PLL、时钟树、基本I/O引脚复用。
  • 启动源检测:根据BSEL(Boot Select)引脚或fuse状态,确定从QSPI、NAND、MMC、SD卡或JTAG加载Bootloader。
  • Bootloader加载:将Bootloader(如U-Boot SPL)从启动介质拷贝到片上SRAM。
  • 安全验证:如果使能安全启动,验证Bootloader的数字签名。
提示:Boot ROM代码不可修改,因此任何启动缺陷只能通过芯片勘误表或外部Bootloader补丁解决。设计时需确保Bootloader大小不超过片上SRAM容量(通常为256KB~512KB)。

3.3 Bootloader加载

Bootloader是启动流程的第二阶段,通常分为SPL(Secondary Program Loader)和U-Boot proper两级。Agilex HPS支持多种Bootloader方案:

Bootloader类型 存储位置 主要功能 典型大小
U-Boot SPL QSPI / MMC / NAND 初始化DDR、加载U-Boot proper 64KB ~ 128KB
U-Boot proper DDR 外设驱动、网络启动、FPGA配置、OS引导 256KB ~ 1MB
UEFI (EDK II) QSPI / MMC 标准固件接口、ACPI、安全启动 512KB ~ 2MB

Bootloader加载流程如下:

  1. Boot ROM将SPL从启动介质加载到片上SRAM并跳转执行。
  2. SPL初始化DDR控制器,将U-Boot proper从存储介质拷贝到DDR。
  3. SPL验证U-Boot proper的签名(若安全启动使能),然后跳转到DDR中的U-Boot proper。
  4. U-Boot proper初始化更多外设(以太网、USB、SD/MMC等),准备加载操作系统或FPGA配置。

3.4 HPS与FPGA配置顺序

Agilex SoC支持灵活的HPS与FPGA配置顺序,由SDM根据用户配置的配置映像头(Configuration Image Header)决定。三种主要模式如下:

配置模式 描述 适用场景
先HPS后FPGA HPS先完成启动并运行Bootloader,再由HPS通过SDM配置FPGA FPGA比特流较大,需HPS管理配置流程
先FPGA后HPS FPGA先完成配置并释放复位,HPS再启动 FPGA需在HPS启动前提供硬件加速或接口
并行配置 HPS与FPGA同时配置,SDM并行处理两个比特流 要求最小化启动时间,两者无依赖关系

配置顺序的决策逻辑由SDM固件解析配置映像头中的config_order字段决定。下图展示了先HPS后FPGA模式的典型时序:

先HPS后FPGA配置时序 先HPS后FPGA配置时序 HPS Boot ROM HPS Bootloader FPGA配置 t0 t1 t2 t3 时序说明 • t0-t1: HPS执行Boot ROM,加载SPL到SRAM。 • t1-t2: HPS运行Bootloader,初始化DDR和外设。 • t2-t3: HPS通过SDM接口下发FPGA比特流,完成FPGA配置。

3.5 安全启动链

安全启动链(Secure Boot Chain)是Agilex SoC可信执行环境的基础。它从Boot ROM开始,逐级验证后续固件的签名,确保只有经过授权的代码才能在芯片上执行。

安全启动链的验证流程如下:

  1. 信任根(Root of Trust):Boot ROM作为不可修改的信任根,内部存储了芯片公钥的哈希值(SHA-256/384)。
  2. Bootloader验证:Boot ROM使用存储的公钥验证Bootloader的数字签名(RSA-4096或ECDSA P-384)。
  3. FPGA比特流验证:Bootloader或SDM验证FPGA配置比特流的签名,确保比特流未被篡改。
  4. 操作系统验证:Bootloader验证操作系统内核或引导加载程序的签名(如UEFI Secure Boot)。
注意:安全启动链的强度取决于最薄弱的环节。如果Bootloader签名验证被绕过,后续所有验证都将失效。因此,必须确保Boot ROM中的公钥哈希值在芯片出厂时正确烧录,且不可通过JTAG或调试接口修改。

下表总结了安全启动链各阶段的验证机制:

阶段 验证者 被验证对象 签名算法 密钥存储
Boot ROM 硬件(不可修改) Bootloader (SPL) RSA-4096 / ECDSA P-384 片上eFuse / OTP
Bootloader SPL / U-Boot U-Boot proper / FPGA比特流 RSA-4096 / ECDSA P-384 Bootloader镜像内嵌公钥
OS加载器 U-Boot / UEFI 操作系统内核 RSA-2048 / SHA-256 UEFI数据库 / 内核镜像签名

3.6 启动流程总结

Agilex HPS与FPGA协同的SDM启动流程是一个高度集成、安全可控的多阶段过程。关键设计要点包括:

  • Boot ROM是信任根,不可修改,负责初始化硬件并加载Bootloader。
  • Bootloader提供灵活的启动介质支持和外设初始化,是HPS与FPGA配置的桥梁。
  • 配置顺序可根据应用需求选择先HPS、先FPGA或并行模式,由SDM统一调度。
  • 安全启动链通过逐级签名验证,确保从Boot ROM到操作系统的完整性和真实性。
实践建议:在开发阶段,建议先关闭安全启动以加快调试速度;在量产阶段,务必使能安全启动并妥善管理签名密钥。使用Intel提供的SoC EDS工具链可以方便地生成签名镜像和配置启动顺序。