【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)

一、前言

Agilex 5 SoC FPGA 集成了高性能 FPGA 结构与双集群 ARM 处理器系统(HPS,包含双核 Cortex‑A76 与双核 Cortex‑A55),为嵌入式开发者提供了兼具硬件可重构性与强大软件处理能力的异构计算平台。针对系统复位后由 FPGA 还是 HPS 主导启动流程,Altera定义了两种不同的引导模式:FPGA Configuration First和HPS Boot First。

本文将首先介绍这两种启动模式的工作方式,然后在 DE25‑Nano 开发板上完整演示其开发与验证流程。

二、Agilex 5 SoC 启动模式概述

FPGA Configuration First Mode

当选择FPGA Configuration First模式时,系统安全器件管理器(SDM)会首先完成FPGA的完整配置,随后配置HPS的SDRAM引脚,加载HPS的第一级引导程序(FSBL),最后将HPS从复位状态释放。在此模式下,FPGA逻辑阵列在HPS退出复位之前便已开始工作,即FPGA在HPS启动前已完全就绪。需要注意的是,FPGA Configuration First模式不支持HPS在运行时对FPGA进行重配置。

HPS Boot First Mode

当您选择HPSBoot First时,SDM会先配置HPS的SDRAM引脚,加载HPS的FSBL并将HPS从复位状态释放,之后由HPS在稍后的时间点再完成FPGA I/O和FPGA逻辑阵列的配置。HPS优先选项具有以下优势:最小化SDM所需的闪存容量;最小化HPS软件启动所需的时间;支持HPS在运行过程中对FPGA进行重配置。

选择 HPS Boot First 还是 FPGA Configuration First,核心在于权衡 HPS 的启动速度FPGA 的早期可用性,以及后期FPGA是否可以重配置等。这取决于你的应用场景更侧重哪个方面。

三、准备工作

硬件准备

  1. DE25-Nano开发板

  2. 5V电源适配器(随板附带)

  3. USB Type-C数据线(用于UART串口通信和JTAG编程,随板附带)

  4. MicroSD卡(建议8GB以上,随板附带)

  5. 读卡器

  6. 一台Ubuntu电脑

软件准备

  1. Altera Quartus Prime Pro Edition 25.1.1(支持Agilex 5器件)

  2. DE25-Nano GHRD工程(从友晶官网下载https://dl2.terasic.com/resources/de25-nano/DE25-Nano_revB_v.1.0.0_ResourcePackage.zip

  3. DE25-Nano Linux镜像(从友晶官网下载https://dl2.terasic.com/resources/de25-nano/de25_nano_sdcard_console_v1.1.zip

  4. 串口终端软件(如PuTTY、minicom等)

  5. Win32DiskImager工具(也可以用命令直接在Ubuntu电脑烧写SD卡)

四、模式设置

可以在 Quartus 的图形界面中进行设置,路径为:Assignments > Device > Device and Pin Options > Configuration > HPS/FPGA Configuration order:

Quartus 默认设置是FPGA Configuration First模式(即HPS/FPGA configuration order 默认设置是After INIT_DONE),如果想改成HPS Boot First模式,可在GUI界面选择HPS First或者在.qsf文件里面添加约束:

复制代码
set_global_assignment -name HPS_INITIALIZATION "HPS FIRST"

五、DE25-Nano 开发板 FPGA Configuration First 模式演示

首先固化QSPI Flash,这个固化工作可以在Windows和Ubuntu系统下操作。

Windows下固化QSPI Flash

双击DE25-Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\sof_with_hps.bat将GHRD编译生成的golden_top.sof文件转化为golden_top_hps.sof文件。

然后双击

DE25-Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\sof_to_jic.bat将golden_top_hps.sof文件转化为golden_top_hps.jic文件。

最后双击Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\output_files\program_qspi_flash\flash_program.bat文件将golden_top_hps.jic文件固化到QSPI Flash当中:

Ubuntu下固化Flash

设置Quartus的环境变量:

复制代码
export QUARTUS_ROOTDIR=/home/doreen/altera_pro/25.1.1/quartusexport PATH=$QUARTUS_ROOTDIR/bin:$PATH

在GHRD工程的目录下执行如下命令生成golden_top_hps.sof文件

复制代码
quartus_pfg -c output_files/golden_top.sof output_files/golden_top_hps.sof -o hps_path=software/u-boot/spl/u-boot-spl-dtb.hex

然后执行如下命令生成golden_top_hps.jic文件:

复制代码
quartus_pfg -c output_files/golden_top_hps.sof output_files/golden_top_hps.jic -o device=MT25QU128 -o flash_loader=A5EB013BB23B -o mode=ASX4

最后执行如下命令将golden_top_hps.jic文件下载到DE25-Nano的QSPI flash当中:

复制代码
quartus_pgm -m jtag -c 1 -o "pvi;output_files/golden_top_hps.jic"

启动开发板观察测试结果

参考【教程】Linux上用命令烧写SD卡和Windows上用Win32DiskImager工具一键烧写SD卡烧写SD卡并启动开发板。可以看到在Uart串口打印开发板Linux系统启动的过程中fpga led已经亮起,且有一个led闪烁:

本文部分图参考Altera文档:

相关推荐
物质波波波4 小时前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程7 小时前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡8 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
逻辑诗篇10 小时前
基于 XCVU13P 的 4 路 100G 光纤 PCIe 处理板 PCIE727 硬件规格全解析
fpga开发
玩嵌入式谁会脱发呀13 小时前
【FPGA】 verilog设计spi读写flash实现数据DMA搬运
fpga开发
LabVIEW开发2 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder2 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家3 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat