AN 860: Using Intel® Arria® 10 SoC FPGA Early I/O Release

ID 683437
Date 10/22/2020

3.4. Configuring U-Boot to use Split RBF Files

This section assumes that you are familiar with the U-boot build flow as defined by Intel® Arria® 10 SoC FPGA user documentation. For reference, Intel recommends you review the information provided in the Getting Started section of the support website and the Intel SoC FPGA Embedded Development Suite (EDS) User Guide. Links are provided at the end of this section.

After compiling a Intel® Quartus® Prime project that contains an Intel® Arria® 10 SoC FPGA HPS component, the generated meta data in the hps_isw_handoff/hps.xml file contains entries used by the Intel SoC EDS bsp-editor tool. The entry that indicates the Early I/O Release feature has been enabled is listed below.

<config name='chosen.early-release-fpga-config' value='1' />

The bsp-editor tool uses this entry determine if the U-boot device tree should enable the Early I/O Release feature.

If the value attribute is ‘0’, then the bsp-editor tool generates a U-boot devicetree.dts file containing the following chosen block. U-boot loads the listed cff-file as a combined (peripheral + core) .rbf file.

chosen {cff-file = "socfpga.rbf";/* Bootloader setting: uboot.rbf_filename */};

If the value attribute is ‘1’, then the bsp-editor tool adds the highlighted field to the chosen block as shown below. This block is generated when the Intel® Quartus® Prime project is compiled with the Early I/O Release feature enabled.

chosen {cff-file = "socfpga.rbf"; /* Bootloader setting: uboot.rbf_filename */};

The addition of the early-release-fpga-config field modifies the boot behavior of U-boot. U-boot loads the listed cff-file at startup as a peripheral .rbf instead of a combined .rbf. U-boot will print the following message on startup to indicate a successful peripheral .rbf file load.

FPGA: writing socfpga.rbf ...
FPGA: Early Release Succeeded.

The core .rbf file must be loaded later. The core .rbf file can be loaded using U-boot or postponed until the operating system has booted. If using U-boot to load the core .rbf, the fpga loadfs (or similar) command must be added to the bootcmd variable, entered at the U-boot command line, or executed via a U-boot script. The following is an example U-boot environment variable setup to load a core .rbf as part of the bootcmd mechanism.

bootcmd=run core_rbf_prog; run mmcload; run mmcboot
core_rbf_prog=fpga loadfs 0 mmc 0:1 ${rbfcoreimage} core

Did you find the information on this page useful?

Characters remaining:

Feedback Message