【教程】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文档:

相关推荐
ALINX技术博客1 小时前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner3 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子4 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi