一、前言
上节介绍了 Stratix 10 SOC 的 Boot 机制,提出了 Boot 方式的选择方法、系统架构设计建议及软件开发调试所需文件依赖。
GHRD (Golden Hardware Reference Design) 工程自定义设计的开发调试通过 JTAG 加载实现,需要软件生成 JTAG 加载所需的文件。之前通过 Quartus 工具综合 + 实现已生成 sof 文件,这里还需要 HPS FSBL 文件,然后将 sof 文件和 HPS FSBL 文件打包成 HPS SOF 文件,用于 JTAG 加载启动。

由上图可知,需要通过 HPS Bootloader 源码编译生成 HPS FSBL 文件。这与之前的 FPGA 器件通过 Quartus 工具的 BSP Generator 生成 FSBL 的方式不同,优势在于:之前的生成 FSBL 方式需要依托于 EDA 工具高度定制,每板需要一个镜像;而 Stratix 10 和 Agilex 器件使用开源的 U-Boot 源码,一个镜像可以适配多个板。
接下来展示 HPS FSBL 的编译过程,编译过程中会遇到一些问题,一起来解决。
二、准备
1. EDA 工具
Quartus Prime Pro 25.1(或其他版本,建议 25.1 以上)
2. Linux 操作系统
建议 Ubuntu 22.04
3. Windows 操作系统
建议 Windows 11 安装 WSL,具体搭建方式请参考相关文档。
三、U-Boot 编译
1. U-Boot Build 流程
具体请参考 RocketBoards 官方文档,大致流程如下:

2. 下载 U-Boot 源码
GitHub 链接:GitHub - altera-fpga/u-boot-socfpga 建议使用 Latest stable branch(无 RC 标签)。
3. 设置交叉编译工具链
wget https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz
tar xf gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz
rm -f gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz
export PATH=`pwd`/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin:$PATH
注意此时 aarch64-none-linux-gnu 安装在 linux 根目录下。
4. 配置环境变量
解压后切换到 U-Boot 源码路径,并设置编译工具链环境变量:
/mnt/g/Stratix10_uboot/u-boot-socfpga-socfpga_v2025.07/
PATH=/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin:
CROSS_COMPILE=aarch64-none-linux-gnu-

