Skip to main content
Home

Search

×
Info Icon

Some of our content has been moved to altera.com and we are working on migrating the remaining content and experiences. Lets us help you find what you’re looking for.

Find what you're looking for through Altera Platform

Community Forums Partner Network Training

Find Resources on Intel's platforms

Software Downloads Design Examples Documentation Product Support PCB Resources Find KDB

Having a hard time finding something? Contact us

  • Products

    Products

    View All Products
    FPGAs, SoCs, CPLDs
    High-Performance
    Agilex 9 Agilex 7 Stratix 10
    Mid-Range
    Agilex 5 Arria 10 Arria V
    Power and Cost-Optimized
    Agilex 3 MAX 10 MAX V Cyclone 10 Cyclone V Cyclone IV
    Development Software & Tools
    AI Development Tools
    FPGA AI Suite
    FPGA Design & Simulation Tools
    Quartus Prime Design Software Power and Thermal Calculator Questa* – Altera FPGA Edition Advanced Link Analyzer Open FPGA Stack (OFS) Transceiver Toolkit
    Embedded Design Tools & Software
    Nios V Ashling RISCFree IDE Visual Designer Studio Intel Simics Simulator for Altera FPGAs ARM SoC EDS
    IP Development Tools
    DSP Builder Altera FPGA Add-on for oneAPI Base Toolkit P4 Suite for FPGAs
    Development Kits
    High-Performance
    Agilex 9 Agilex 7 Stratix 10
    Mid-Range
    Agilex 5 Arria 10 Arria V
    Power and Cost-Optimized
    Agilex 3 MAX 10 MAX V Cyclone 10 Cyclone V Cyclone IV
    Intellectual Property
    Interfaces
    PCI Express Compute Express Link (CXL) Ethernet Audio / Video Communication High Speed Serial Networking / Security
    Memory Controllers
    DMA Flash SDRAM SRAM
    Digital Signal Processing & AI
    AI Video & Image Processing Floating Point Error Correction Modulation Filters / Transforms
    Soft Embedded Processors
    Nios V RISC V
    Transceivers & Basic Functions
    Clocks, PLLs & Resets Transceivers Simulation, Debug & Verification
  • Solutions

    Solutions

    Industries
    AI Broadcast & Pro AV Consumer Electronics Financial Services
    Industrial Medical Military, Aerospace & Government Security
    Test & Measurement Transportation Wireless Wireline
  • Design

    Design

    View All Design
    Download & License Center
    FPGA Development Tools
    Quartus Prime Pro Quartus Prime Standard Quartus Prime Lite
    Embedded Tools
    Arm* Development Studio SoC FPGA Embedded Development Suite
    Add-On Development Tools
    DSP Builder Questa*-FPGA ModelSim-FPGA SimicsSimulator for Altera FPGA Self Service License Center Licensing Support Center
    Design Hubs & Training
    Design Hubs
    Agilex 7 Agilex 5 Agilex 3 View all Design Hubs
    Developer Centers
    Stratix 10 Arria 10 Cyclone 10 GX Cyclone 10 LP MAX 10 View all Developer Centers
    Training
    Training Overview My Learning eLearning Catalog Instructor-Led Training Catalog All Altera FPGA Training Learning Plans How to Begin a Simple FPGA Design How To Videos
    Example Designs
    FPGA Developer Site
    Example Designs Zephyr Drivers Linux Drivers See All
    Design Store
    Agilex 7 Agilex 5 MAX 10 See All
    Documentation
    All FPGA Documentation
    By Product Family IP Docs Dev Software Docs Release Notes Application Notes Device Overviews Datasheets Errata/Known Issues User Guides Pin Connection Guidelines Pinouts Package Drawings
    Design Resources
    Quartus Support Center Step-by-Step Dev Guidance Examples Designs Docs & Resources by Family PCB Resources Package Drawings Pinouts Quality & Reliablity Find Boards / Dev Kits Find IP Find Partners Find Knowledge Articles
    Partners
    Find Partners Find Offerings About ASAP Join Now Sign In
  • Support

    Support

    Support
    Community Forums Knowledge Articles
    Premier Support Quality & Reliability
  • About

    About

    About
    Company Overview Newsroom
    Careers Blogs
    Events
  • Contact Us

    Contact Us

    • FPGAs, SoCs, CPLDs
      • High-Performance
        • Agilex 9
        • Agilex 7
        • Stratix 10
      • Mid-Range
        • Agilex 5
        • Arria 10
        • Arria V
      • Power and Cost-Optimized
        • Agilex 3
        • MAX 10
        • MAX V
        • Cyclone 10
        • Cyclone V
        • Cyclone IV
    • Development Software & Tools
      • AI Development Tools
        • FPGA AI Suite
      • FPGA Design & Simulation Tools
        • Quartus Prime Design Software
        • Power and Thermal Calculator
        • Questa* – Altera FPGA Edition
        • Advanced Link Analyzer
        • Open FPGA Stack (OFS)
        • Transceiver Toolkit
      • Embedded Design Tools & Software
        • Nios V
        • Ashling RISCFree IDE
        • Visual Designer Studio
        • Intel Simics Simulator for Altera FPGAs
        • ARM SoC EDS
      • IP Development Tools
        • DSP Builder
        • Altera FPGA Add-on for oneAPI Base Toolkit
        • P4 Suite for FPGAs
    • Development Kits
      • High-Performance
        • Agilex 9
        • Agilex 7
        • Stratix 10
      • Mid-Range
        • Agilex 5
        • Arria 10
        • Arria V
      • Power and Cost-Optimized
        • Agilex 3
        • MAX 10
        • MAX V
        • Cyclone 10
        • Cyclone V
        • Cyclone IV
    • Intellectual Property
      • Interfaces
        • PCI Express
        • Compute Express Link (CXL)
        • Ethernet
        • Audio / Video
        • Communication
        • High Speed
        • Serial
        • Networking / Security
      • Memory Controllers
        • DMA
        • Flash
        • SDRAM
        • SRAM
      • Digital Signal Processing & AI
        • AI
        • Video & Image Processing
        • Floating Point
        • Error Correction
        • Modulation
        • Filters / Transforms
      • Soft Embedded Processors
        • Nios V
        • RISC V
      • Transceivers & Basic Functions
        • Clocks, PLLs & Resets
        • Transceivers
        • Simulation, Debug & Verification
    View All Products
    • Industries
        • AI
        • Broadcast & Pro AV
        • Consumer Electronics
        • Financial Services
        • Industrial
        • Medical
        • Military, Aerospace & Government
        • Security
        • Test & Measurement
        • Transportation
        • Wireless
        • Wireline
    • Download & License Center
      • FPGA Development Tools
        • Quartus Prime Pro
        • Quartus Prime Standard
        • Quartus Prime Lite
      • Embedded Tools
        • Arm* Development Studio
        • SoC FPGA Embedded Development Suite
      • Add-On Development Tools
        • DSP Builder
        • Questa*-FPGA
        • ModelSim-FPGA
        • SimicsSimulator for Altera FPGA
        • Self Service License Center
        • Licensing Support Center
    • Design Hubs & Training
      • Design Hubs
        • Agilex 7
        • Agilex 5
        • Agilex 3
        • View all Design Hubs
      • Developer Centers
        • Stratix 10
        • Arria 10
        • Cyclone 10 GX
        • Cyclone 10 LP
        • MAX 10
        • View all Developer Centers
      • Training
        • Training Overview
        • My Learning
        • eLearning Catalog
        • Instructor-Led Training Catalog
        • All Altera FPGA Training
        • Learning Plans
        • How to Begin a Simple FPGA Design
        • How To Videos
    • Example Designs
      • FPGA Developer Site
        • Example Designs
        • Zephyr Drivers
        • Linux Drivers
        • See All
      • Design Store
        • Agilex 7
        • Agilex 5
        • MAX 10
        • See All
    • Documentation
      • All FPGA Documentation
        • By Product Family
        • IP Docs
        • Dev Software Docs
        • Release Notes
        • Application Notes
        • Device Overviews
        • Datasheets
        • Errata/Known Issues
        • User Guides
        • Pin Connection Guidelines
        • Pinouts
        • Package Drawings
    • Design Resources
        • Quartus Support Center
        • Step-by-Step Dev Guidance
        • Examples Designs
        • Docs & Resources by Family
        • PCB Resources
        • Package Drawings
        • Pinouts
        • Quality & Reliablity
        • Find Boards / Dev Kits
        • Find IP
        • Find Partners
        • Find Knowledge Articles
    • Partners
        • Find Partners
        • Find Offerings
        • About ASAP
        • Join Now
        • Sign In
    View All Design
    • Support
        • Community Forums
        • Knowledge Articles
        • Premier Support
        • Quality & Reliability
    • About
        • Company Overview
        • Newsroom
        • Careers
        • Blogs
        • Events
  • Contact Us

Breadcrumb

...
Design Resources
Embedded Software Developer Center
SoC FPGA Bootloader Developer Center
Hero Banner image

SoC FPGA Bootloader Developer Center

SoC FPGA Bootloader Developer Center provides the available SoC bootloaders with main characteristics, how to get started, and additional resources.

1. What is a Bootloader 2. Hardware Handoff 3. Available Bootloaders 4. Resources Related Links
left arrow
right arrow

SoC FPGAs use a bootloader to load and run the end user application on the hard processor system (HPS). The end user application may be a simple bare-metal application or a complex operating system like the Linux* operating system.

This page describes what a bootloader is, lists the available boot loaders and their main characteristics, describes how to get started with the bootloaders, and lists resources for Agilex™ 7, and Agilex™ 5, Stratix® 10 SoC, Arria® 10 SoC, Cyclone® 10 GX SoC, Cyclone® 10 LP SoC, Arria® V SoC, Cyclone® V SoC devices.

Get additional support for Agilex™ 7 Software Development, and Agilex™ 5 Software Development, step-by-step guided journeys for standard development flows surfacing the key critical resources and documentation.

For other devices, search the Device and Product Support Collections.

1. What is a Bootloader

Bootloader Definition

When an SoC device boots up, a piece of software called the BootROM is first run. For several reasons, the BootROM has the following limited functionality:

  • It needs to fit in the on-chip ROM so it has to be small
  • It is very expensive to change so it has to be very robust, which implies less features
  • It does not know how the system was configured so it cannot bring up everything

The end user application on the other hand is typically large and requires the system to be configured as desired by the end user before it can run.

The bootloader's job is to bridge the gap between the BootROM and the end user application.

Single Stage Bootloader

Typical Bootloader Tasks

  • Configuring the pin multiplexing and pin settings, such as slew rate, voltage, and pull-up/pull-down
  • Configuring the clocks in the clock tree
  • Bringing up and calibrating the SDRAM
  • Initializing the flash memory
  • Configuring the FPGA fabric
  • Loading the end application from the flash memory
  • Passing control to the end application

Besides the features listed above, bootloaders also offer the following advanced features that can enable more complex deployment and more convenient development:

  • Network access that brings in the end user application from the cloud.
  • Debugging tools that enable more convenient diagnosis of issues.
  • Command-line interface for interactive commands.
  • Application running a framework that can enable simple end user applications to be loaded and run to completion by the bootloader. After the application completes, the control is passed back to the bootloader.

Expand Close
design board image

Bootloaders for SDM-Based Devices

For Agilex™ 7 SoCs and Agilex™ 5 SoCs, and Stratix® 10 SoCs a two-stage bootloader is typically used. The first small bootloader stage is part of the FPGA configuration bitstream and is loaded by the secure device manager (SDM) into the HPS on-chip RAM, while the second larger bootloader stage needs to be stored in a location that is accessible by the HPS.

Expand Close
design board image

Multi-Stage Bootloaders

Sometimes the bootloader process can be split into multiple stages, typically two.

For Cyclone® V SoCs, the BootROM can only load a boot loader of up to 64 KB in size because the SDRAM is not yet brought up at that stage. Similarly for Arria® 10 SoCs the BootROM can only load a bootloader of up to 256 KB in size. Because of these size limitations, advanced features such as networking or complex filesystem access cannot be accomplished. If such features are desired, the first stage of the bootloader brings up the SDRAM and then loads a second stage with more functionality. A two-stage bootloader is the default option for Cyclone V SoCs, Arria® V SoCs, and Arria® 10 SoCs.

Expand Close
design board image

2. Hardware Handoff

Handoff Overview

All SoC FPGA projects start with a hardware project where various system settings listed below are configured by the user that will impact the HPS.

  • Pin multiplexing
  • Pin settings
  • SDRAM settings
  • Clock settings

It is the bootloader's job to apply these settings and the process of the bootloader receiving these settings is called the hardware-to-software handoff.

Depending on the exact bootloader and SoC device family, the handoff can take various below forms.
 

  • For Cyclone V and Arria V SoCs, the handoff is a combination of XML files, binary files, and source code files, which are converted to source code and then compiled into the bootloader
  • For Arria 10 SoCs, the handoff is contained in a single XML file that is converted to a device tree file and used by the bootloader
  • For Agilex 7 SoCs, and Agilex 5 SoCs, and Stratix 10 SoCs the handoff information is part of the FPGA configuration bitstream

The primary method of entering or changing the handoff information is through editing them in the Quartus® Platform Designer.

In addition to the handoff information, the bootloaders also have various settings that can be selected by the user through the following methods.

  • Editing the bootloader source code
  • Editing the bootloader device tree when a device tree is used

Agilex™ 7, and Agilex™ 5, Stratix® 10 SoC Handoff

  • For Agilex 7, and Agilex 5, Stratix 10 SoC the handoff information is part of the FPGA configuration bitstream.

Expand Close
design board image

Arria® 10 SoC Handoff

  • For Arria 10 SoCs, the handoff is contained in a single XML file that is converted to a device tree file and used by the bootloader

Expand Close
design board image

Cyclone® V SoC and Arria® V SoC Handoff

  • For Cyclone V and Arria V SoCs, the handoff is a combination of XML files, binary files, and source code files, which are converted to source code and then compiled into the bootloader

Expand Close
design board image

3. Available Bootloaders

Overview of Available Bootloaders

Available bootloaders, types of licenses, supported SoCs, and availability of two-stage support.

Device

Bootloader

License Type

Description

Agilex™ 7

Agilex™ 5

Stratix® 10

ATFBSD

The ARM Trusted Firmware (ATF) is a reference implementation of secure world software for ARMv8-a, implementing various ARM interface standards, such as Trusted Board Boot Requirements (TBBR) and Secure Monitor Call (SMC).

The ATF is developed collaboratively under a BSD license, which allows convenient development and deployment.

The source code for SoC FPGA port of ATF can be accessed at https://github.com/altera-opensource/arm-trusted-firmware.

Agilex™ 7

Agilex™ 5

Stratix® 10

Arria® 10

Arria® V

Cyclone® V

U-Boot

GPL

U-Boot is a bootloader that is widely used by the industry and offers numerous capabilities:

  • Optional first stage called "SPL" for systems with limited on-chip RAM (for example, Cyclone V SoC and Arria V SoC)
  • Networking capability
  • Flash memory support
  • Command-line interface
  • Scripting
  • U-Boot custom applications

U-Boot is developed under a general-public licence (GPL) so any contributions that are made to a product that is being delivered to the public must also be made public.

The U-Boot source code is available at the U-Boot SoC FPGA page on the GitHub website.

The main generic U-Boot home page is located at the Das U-Boot -- the Universal Boot Loader web page.

4. Resources

Resource TypeAgilex™ 7Agilex™ 5Stratix® 10 SoCArria® 10 SoC and Cyclone® V SoC
Design ExamplesF-Series SoC Development Kit

E-Series Premium Devkit

E-Series Modular Devkit

Building BootloaderBuilding Bootloader
User GuideHPS Boot User GuideHPS Boot User GuideHPS Boot User Guide 
Source Code

Altera SoC FPGA U-Boot on GitHub

ARM Trusted Firmware on GitHub

Official Denx U-Boot Source Code

Altera SoC FPGA U-Boot on GitHub

ARM Trusted Firmware on GitHub

Official Denx U-Boot Source Code

 

 

Official Denx U-Boot Source Code

 

 

Official Denx U-Boot Source Code

Related Links
  • Embedded Software Developer Center
  • Altera® FPGA Support Resources
  • Altera® FPGA Developer Site
  • Altera® FPGA Development Tools
footerbackground
site-footer-logo
Products
  • FPGA, SoCs, CPLD’s
  • Development Software & Tools
  • Development Kits
  • Intellectual Property
Design
  • Download & License Center
  • Design Hub
  • Documentation
  • Training
  • Design Examples
  • Design Resources
  • Partner Network
Support
  • Community Forum
  • Premier Support
  • Knowledge Articles
  • Quality & Reliability
About
  • Company Overview
  • Newsroom
  • Careers
© Altera Corporation Terms of Use Privacy Policy Cookies Trademarks PSIRT