1. Introduction
2. FPGA Configuration First Mode
3. HPS Boot First Mode
4. Creating the Configuration Files
5. Golden System Reference Design and Design Examples
6. Configuring the FPGA Fabric from HPS Software
7. Debugging the Agilex™ 7 SoC FPGA Boot Flow
8. SoC FPGA Boot User Guide Archives
9. Document Revision History for the Agilex™ 7 SoC FPGA Boot User Guide
A. Boot Scratch Registers
4.1. Overview
4.2. Quartus® Prime Hardware Project Compilation
4.3. Bootloader Software Compilation
4.4. Programming File Generator
4.5. Configuration over JTAG
4.6. Configuration from QSPI
4.7. Configuration over AVST
4.8. Configuration via Protocol
4.9. Remote System Update
4.10. Partial Reconfiguration
4.11. Preserving SDRAM Content across HPS Resets for Agilex™ 7 M-Series Devices
A.1. BOOT_SCRATCH_COLD0
A.2. BOOT_SCRATCH_COLD1
A.3. BOOT_SCRATCH_COLD2
A.4. BOOT_SCRATCH_COLD3
A.5. BOOT_SCRATCH_COLD4, BOOT_SCRATCH_COLD5
A.6. BOOT_SCRATCH_COLD6, BOOT_SCRATCH_COLD7
A.7. BOOT_SCRATCH_COLD8
A.8. BOOT_SCRATCH_COLD9
A.9. BOOT_SCRATCH_COLD0, BOOT_SCRATCH_COLD1, BOOT_SCRATCH_COLD8, BOOT_SCRATCH_COLD9
6.2. Configuring the FPGA Fabric from Linux
Note: This feature is supported with Linux* kernel v4.9 LTSI and onwards. Refer to RocketBoards.org and the Intel® public git repository for the latest information regarding this feature.
The Linux* kernel for Agilex™ 7 SoC FPGA allows you to enable the programming of FPGA from within the OS.
If you want to test the FPGA reconfiguration at kernel level, make the following changes to the kernel source code:
- In the file arch/arm64/boot/dts/intel/Makefile, add a second .dtb file. For example:
dtb-$(CONFIG_ARCH_AGILEX) += socfpga_agilex_socdk.dtb dtb-$(CONFIG_ARCH_AGILEX) += overlay.dtb
- Create the new overlay.dts file and add the overlay information of the RBF file into the file as shown below:
/dts-v1/; /plugin/; / { fragment@0 { target-path = "/soc/base_fpga_region"; #address-cells = <1>; #size-cells = <1>; __overlay__ { #address-cells = <1>; #size-cells = <1>; firmware-name = "overlay.rbf"; config-complete-timeout-us = <30000000>; }; }; };
When you build the Linux* kernel for this feature, the build generates two *.dtb files.
Device Tree File | Description |
socfpga_agilex_socdk.dtb | The default *.dtb file used with the kernel image to boot the system. |
overlay.dtb | The *.dtb file used to trigger FPGA configuration in OS. |
In your compilation output folder, rename the FPGA configuration file (*.rbf) to the following name: overlay.rbf. Then, copy both the FPGA configuration file (*.rbf) and the overlay.dtb file to the following location in your Root File System:
$ mkdir <your_ROOTFS>/lib/firmware $ cp overlay.dtb <your_ROOTFS>/lib/firmware/ $ cp overlay.rbf <your_ROOTFS>/lib/firmware/
The changes above allow you to program the FPGA in Linux* by applying an overlay on the system. After you boot to Linux* and log in with root privilege, use the following command to begin FPGA configuration:
# mkdir /sys/kernel/config/device-tree/overlays/0 # echo overlay.dtb > /sys/kernel/config/device-tree/overlays/0/path/
If you want to re-apply the overlay, you have to first remove the existing overlay, and then re-run the previous steps:
# rmdir /sys/kernel/config/device-tree/overlays/0 # mkdir /sys/kernel/config/device-tree/overlays/0 # echo overlay.dtb >/sys/kernel/config/device-tree/overlays/0/path