1. SDM 架构概述:Agilex 安全设备管理器的核心地位
在 Intel Agilex 系列 FPGA 和 SoC 中,SDM(Secure Device Manager,安全设备管理器) 是一个专用硬件子系统,负责整个器件的初始化、配置、安全管理和生命周期控制。它独立于 FPGA 架构和 HPS(硬核处理器系统),在芯片上电后最先获得控制权,是所有启动流程的起点和决策中心。
1.1 SDM 的基本角色
SDM 在 Agilex 器件中扮演以下关键角色:
- 主配置控制器:管理 FPGA 配置数据流的加载、解压缩、解密和验证。
- 安全执行环境:提供硬件信任根(RoT),执行安全启动、密钥管理和认证。
- HPS 启动代理:在 SoC 器件中,SDM 负责将 HPS 启动代码(如 U-Boot SPL)加载到 HPS 的片上 RAM 中,并释放 HPS 复位。
- 系统监控器:监测电源状态、温度、错误事件,并执行相应的故障恢复策略。
- 固件更新引擎:支持通过 JTAG、SPI、NAND、SD/MMC 等接口更新 SDM 固件和配置映像。
关键概念: SDM 是一个 独立于 FPGA 逻辑和 HPS 处理器 的硬件状态机 + 微控制器复合体。它拥有自己的专用 ROM、RAM、时钟和 I/O 接口,即使 FPGA 阵列未配置或 HPS 处于复位状态,SDM 也能正常工作。
1.2 SDM 功能模块划分
SDM 内部由多个功能模块组成,各模块协同完成配置与安全任务。下表列出了主要模块及其职责:
| 模块名称 | 功能描述 | 与启动流程的关系 |
|---|---|---|
| 配置引擎 | 解析配置映像头部,控制数据流解压缩、解密和分发 | 决定 FPGA 配置的加载顺序和方式 |
| 安全处理器 | 执行加密算法(AES、SHA、ECDSA),管理密钥存储 | 验证映像签名,确保启动链的信任根 |
| HPS 接口单元 | 与 HPS 的调试访问端口(DAP)和系统控制单元(SCU)通信 | 控制 HPS 复位、启动地址和早期引导加载 |
| I/O 控制器 | 管理 SDM 专用 I/O(如 JTAG、SPI、NAND、SD/MMC) | 从外部存储介质读取配置数据 |
| 错误管理单元 | 收集和上报配置错误、安全违规、CRC 校验失败等事件 | 触发回退、重试或安全锁定 |
| 电源管理单元 | 监控各电源域状态,控制上电/断电序列 | 确保 FPGA 和 HPS 在正确的电源状态下启动 |
1.3 SDM 在启动流程中的核心地位
Agilex 器件的启动流程是一个由 SDM 主导的 多阶段、可配置 的过程。SDM 位于所有启动路径的顶层,其决策直接影响 FPGA 和 HPS 的启动顺序与行为。
下图展示了 SDM 在启动流程中的中心位置及其与 FPGA、HPS 和外部存储的关系:
1.4 SDM 启动流程的阶段划分
从系统上电到用户应用运行,SDM 主导的启动流程可分为以下四个主要阶段:
- 阶段 0 — 硬件初始化:SDM 从片上 ROM 启动,完成自身微控制器初始化、时钟配置、I/O 引脚复用设置,并检测启动模式(通过 MSEL 引脚)。
- 阶段 1 — 配置映像加载:SDM 根据启动模式从外部存储(SPI、NAND、SD/MMC)读取配置映像头部,解析映像元数据(包括安全签名、压缩标志、启动顺序策略)。
- 阶段 2 — 安全验证与分发:SDM 安全处理器验证映像签名和哈希,若通过则根据头部指令将 FPGA 配置数据发送到 FPGA 阵列,或将 HPS 启动代码写入 HPS 的片上 RAM。
- 阶段 3 — 系统释放:SDM 释放 FPGA 的 INIT_DONE 信号(FPGA 进入用户模式),同时释放 HPS 的复位信号(HPS 开始执行启动代码)。
设计提示: 在阶段 2 中,SDM 根据配置映像头部中的
boot_order 字段决定是“先配置 FPGA 再释放 HPS”、“先释放 HPS 再配置 FPGA”,还是“并行执行”。这一字段是后续章节中控制 HPS 与 FPGA 启动顺序的核心配置入口。
1.5 SDM 与 HPS/FPGA 的接口关系
SDM 通过专用硬件接口与 FPGA 和 HPS 通信,确保启动过程中的数据和控制信号隔离:
| 接口名称 | 连接对象 | 用途 |
|---|---|---|
| 配置数据总线 | FPGA 配置逻辑 | 传输 FPGA 比特流数据 |
| HPS_DAP | HPS 调试访问端口 | 写入 HPS 启动代码、控制复位 |
| HPS_SCU | HPS 系统控制单元 | 传递启动状态和错误信息 |
| JTAG TAP | 外部调试器 | 调试和固件更新 |
| GPIO/EMIF | 外部存储控制器 | 读取配置映像 |