HARD 下载与固化
1484 字约 5 分钟
2026-11-02
本页说明如何通过 HARD Options → Program 将已构建完成的硬件镜像写入开发板。工程创建、IP 配置、综合、实现与生成比特流的完整步骤请参考 工程创建构建。
1. SRAM 下载与 FLASH 固化的区别
| 操作入口 | 写入目标 | 断电后是否保留 | 适用场景 |
|---|---|---|---|
| Program → SRAM | FPGA 片内易失性配置存储器 | 否(断电即丢失) | 调试刚生成的比特流,快速验证板上逻辑功能。 |
| Program → FLASH | 板载非易失性 SPI / BPI Flash | 是(按板卡启动模式上电自启) | 设计定型后固化镜像,使开发板重新上电后自动加载运行。 |
2. 下载前通用检查
- 确认产物匹配:已完成当前设计的综合与 BitStream 生成,且
device、顶层模块和引脚约束与目标开发板一致。 - 连接硬件:接通开发板电源并连接 JTAG 下载器,确认系统驱动和厂商硬件服务可正常识别目标。
- 远程环境(Remote SSH):板卡物理连接与硬件服务需位于远程执行主机,或已配置可访问的远程
hw_server。 - 多设备环境:当主机同时连接多块开发板或多个 JTAG 目标时,请先确认目标连接范围,避免按芯片系列前缀匹配到非预期的同型号板卡。
3. Xilinx:下载至 SRAM 与固化至 FLASH
以下视频演示执行 HARD Options → Program → SRAM 下载比特流并回读硬件状态,以及在 .vscode/property.json 中配置 flash 字段与 Program → FLASH 固化流程:
下载至 SRAM
- 确认
.vscode/property.json中toolChain: "xilinx"、device为真实芯片型号,且已在settings.json中配置 Vivado 路径。 - 核对工程根目录下的
<prjName.PL>.bit为最近一次构建生成的比特流文件。 - 点击 HARD Options → Program → SRAM。
- 在 Output → Digital-IDE Hardware 中确认输出
hardware/program: completed及状态寄存器回读(DONE=1、INIT_B=1、CRC_ERROR=0),随后验证开发板实际功能(完整流程演示见 Xilinx 全流程演示)。
固化至 FLASH
- 配置板载 Flash 参数:在
.vscode/property.json中添加flash字段(描述板载配置存储器型号,需属于 Vivadoget_cfgmem_parts支持列表并与开发板原理图一致):{ "flash": { "part": "w25q128fv-spi-x1_x2_x4", "interface": "SPIx4", "sizeMB": 16, "format": "mcs", "verify": true } }sizeMB单位为兆字节(MBytes),例如 128 Mbit Flash 应填16(完整字段说明见 工程配置详解)。- 型号名随器件系列不同:上例
w25q128fv-spi-x1_x2_x4适用于 Artix-7 等纯 PL 器件的 SPI 配置 Flash;Zynq-7000 使用 QSPI 型号,例如 xc7z010 对应w25q128fv-qspi-x4-single。可在 Vivado Tcl 中执行get_cfgmem_parts -of_objects [get_parts <device>]列出当前器件支持的型号。
- 先通过 SRAM 验证设计:在执行耗时的 Flash 擦写前,建议先用 Program → SRAM 确认当前
.bit功能正常。 - 执行固化:保存
property.json,点击 HARD Options → Program → FLASH。后端会自动从当前.bit生成.mcs/.bin镜像并执行擦除、编程与校验,完成后弹出Hardware programFlash completed提示。 - 上电验证:将开发板启动模式拨码开关设为 Flash 启动,重新上电验证自启动是否正常。
Zynq 不能只固化 PL
Zynq-7000 / ZynqMP 上电后由 PS 先启动,再由 FSBL 加载 PL 比特流,因此不能像纯 PL 器件那样只把 .bit 写入 QSPI。需要先在 SOFT Options 构建对应处理器的 FSBL(Zynq-7000 使用 Zynq FSBL,ZynqMP 使用 Zynq MP FSBL),用 Vivado/Vitis 的 bootgen 将 FSBL 与 .bit(及应用 ELF)打包为 BOOT.bin,写入 QSPI,并把启动模式设为 QSPI。
4. Efinix:下载与固化
Efinix 工程的烧录支持取决于所配置的执行模式(详见 Efinix 工程创建与构建):
| 执行模式 | 下载与固化操作方式 |
|---|---|
| 原版 Efinity 模式 | 插件仅负责 Launch / Refresh 生成工程与接口文件;综合、实现及硬件烧录请继续在原版 Efinity Programmer 中执行。 |
| 自包含 Package 模式 | 支持 Titanium 系列器件通过 DIDE 高速 JTAG 直接在插件内执行 Program → SRAM 与 Program → FLASH。 |
Package 模式烧录步骤(Titanium)
- 确认原版安装路径已清空、
digital-ide.prj.efinix.package.path配置有效,且已在prj/efinity/outflow/下生成当前设计的<工程名>.bit与<工程名>.hex。 - 连接受支持的 DIDE 高速 JTAG 下载器,点击 HARD Options → Program → SRAM 下载
<工程名>.bit进行板级验证。 - 需固化时点击 HARD Options → Program → FLASH:插件会根据实测 JTAG IDCODE 自动选择 package 内的官方 loader,将
<工程名>.hex写入并校验 SPI Active Flash,随后自动恢复 SRAM 配置。 - 重新上电开发板,确认镜像按预期自启动(注意:Efinix 流程无需填写 Xilinx 专用的
flash.part配置)。
5. 常见问题排查
| 现象 | 检查与处理方法 |
|---|---|
| 提示未找到硬件目标或 JTAG 设备 | 检查开发板供电、JTAG 线缆、USB 驱动、hw_server 状态,以及 Remote SSH 下下载器是否插在远程主机端。 |
提示找不到 .bit 或 .hex 文件 | 确认已执行完整的 Build / BitStream 阶段,检查文件名是否与 prjName.PL 一致。 |
| 下载显示成功但板上无预期现象 | 检查顶层模块名、时钟/复位极性、引脚位置与电平约束是否与当前开发板原理图匹配。 |
| SRAM 下载正常,但 Flash 固化后断电不自启 | 检查 Output 日志确认 Flash 烧写已完整跑完(而非仅生成了 MCS 文件),并核对开发板启动模式拨码开关(BOOT MODE)是否切至 SPI Flash。 |