AN 763: Intel® Arria® 10 SoC Device Design Guidelines

ID 683192
Date 5/17/2022
Document Table of Contents
Give Feedback

5.1.7. Choosing Boot Loader Software

The Intel® Arria® 10 boot flow is depicted in the figure below:

Figure 20. Arria 10 Boot Flow

The boot loader software is one of the most important components of your software development platforms. The job of the Bootloader is to initialize the system and then load and pass control to the next boot image which is either an OS or a baremetal application.

The boot loader software is designed to run out of available HPS on-chip memory and provides essential initial hardware settings to configure the HPS as well as software features to control the flash and peripheral components of the HPS and utilities to enable early debugging and troubleshooting.

For instance, the U-boot boot-loader software configures the ECC registers in the HPS. The DDR SDRAM ECC configuration settings in the Arria 10 External Memory Interfaces for HPS IP component are translated into the bit stream peripheral raw binary file (.rbf). The boot loader software extracts the ECC SDRAM configuration settings from the bit stream and sets up the ECC registers in the HPS.

A typical HPS system has hundreds of registers that must be set for a given configuration of the MPU System Complex, the network-on-chip interconnect component, the SDRAM memory, flash boot source and peripheral interfaces. The settings used for boot or initialization purposes are encapsulated in the following places:
  • Raw Binary File (RBF) Files(s) - containing register settings for SDRAM also shared I/O and FPGA pin configuration.
  • Bootloader Device Tree Structure (DTS) - containing user settings and some default settings for clock tree, I/O muxing and dedicated pin configuration (slew rate, pull up, pull down and some NoC settings)
  • U-Boot source code - for rest of the settings
Note: The Bootloader Device Tree Structure is different from the Linux Device Tree Structure and the two should not be confused.
Intel provides two types of boot loader options:
  • U-Boot Boot Loader: Inherits a number of features available from the open source community and is popular with Linux OS users and is governed by GPL licensing. Available as a part of SoC EDS and used by GSRD for Linux.
  • UEFI Boot Loader: Feature rich and popular with RTOS users and are governed by an open-source BSD style license. It is available at the Intel® Arria® 10 UEFI Bootloader Wiki.

GUIDELINE: To select the right boot loader for your software development platform, familiarize yourself with the GPL and open-source BSD licenses and consider which licensing terms best suit your requirements.

GUIDELINE: It is recommended to use the latest version of the boot loader software.

GUIDELINE: Given the amount of various initialization settings that are required, it is not recommended to write a bootloader from scratch. The provided bootloader options contain optimum and default configuration settings for various parts of the HPS.

The following figure represents the U-Boot Boot Loader flow which is similar for UEFI:

Figure 21. Bootloader Build Flow