SoC-Bootloader
Intel® SoC-FPGAs verwenden einen Bootloader, um die Endbenutzeranwendung auf dem Hardprozessorsystem (HPS) zu laden und auszuführen. Die Endbenutzeranwendung kann eine einfache Bare-Metal-Anwendung oder ein komplexes Betriebssystem wie das Linux*-Betriebssystem sein.
Auf dieser Seite wird beschrieben, was ein Bootloader ist, die verfügbaren Bootloader und ihre Hauptmerkmale aufgelistet, die ersten Schritte mit den Bootloadern beschrieben und zusätzliche Ressourcen aufgelistet.
1. Was ist ein Bootloader
Bootloader-Definition
Wenn ein SoC-Gerät hochfährt, wird zuerst eine Software namens BootROM ausgeführt. Aus mehreren Gründen verfügt das BootROM über die folgende eingeschränkte Funktionalität:
- Es muss in das On-Chip-ROM passen, also muss es klein sein
- Es ist sehr teuer zu wechseln, daher muss es sehr robust sein, was weniger Funktionen impliziert
- Es weiß nicht, wie das System konfiguriert wurde, so dass es nicht alles aufrufen kann
Die Endbenutzeranwendung hingegen ist in der Regel groß und erfordert, dass das System wie vom Endbenutzer gewünscht konfiguriert wird, bevor es ausgeführt werden kann.
Die Aufgabe des Bootloaders besteht darin, die Lücke zwischen dem BootROM und der Endbenutzeranwendung zu schließen.
Typische Bootloader-Aufgaben sind:
- Konfigurieren der Pin-Multiplexing- und Pin-Einstellungen, z. B. Schwenkrate, Spannung und Pull-up/Pulldown
- Konfigurieren der Uhren im Uhrenbaum
- Aufrufen und Kalibrieren des SDRAM
- Initialisieren des Flash-Speichers
- Laden der Endanwendung aus dem Flash-Speicher
- Übergeben der Steuerung an die Endanwendung
Zusätzlich zu den oben aufgeführten Funktionen bieten Bootloader auch die folgenden erweiterten Funktionen, die eine komplexere Bereitstellung und eine bequemere Entwicklung ermöglichen können:
- Netzwerkzugriff, der die Endbenutzeranwendung aus der Cloud einbringt.
- Debugging-Tools, die eine bequemere Diagnose von Problemen ermöglichen.
- Befehlszeilenschnittstelle für interaktive Befehle.
- Anwendung, die ein Framework ausführt, mit dem einfache Endbenutzeranwendungen vom Bootloader geladen und bis zur Fertigstellung ausgeführt werden können. Nach Abschluss der Anwendung wird das Steuerelement an den Bootloader zurückgegeben.
Mehrstufige Bootloader
Manchmal kann der Bootloader-Prozess in mehrere Phasen unterteilt werden, typischerweise zwei.
Bei Cyclone® V SoCs kann das BootROM nur einen Bootloader mit einer Größe von bis zu 64 KB laden, da der SDRAM zu diesem Zeitpunkt noch nicht aufgerufen wird. Aufgrund der Größenbeschränkung können erweiterte Funktionen wie Netzwerk- oder komplexer Dateisystemzugriff nicht erreicht werden. Wenn solche Funktionen gewünscht werden, ruft die erste Stufe des Bootloaders den SDRAM auf und lädt dann eine zweite Stufe mit mehr Funktionalität. Ein zweistufiger Bootloader ist die Standardoption für Cyclone V SoCs und Arria® V SoCs.
Intel® Arria® 10 SoCs haben eine größere RAM-Größe. Mit 256 KB On-Chip-RAM kann die erste Stufe des Bootloaders mehr Funktionalität bieten als Cyclone V- und Arria V-SoCs. Aus diesem Grund ist in der Regel nur eine Stufe erforderlich. Für noch komplexere Fälle, wie den Zugriff auf verschiedene Arten von Flash, komplexe Dateisysteme und Netzwerke, steht es dem Benutzer jedoch frei, eine zusätzliche Bootloader-Stufe zu verwenden.
Für Intel® Stratix® 10 SoCs wird typischerweise ein zweistufiger Bootloader verwendet. Die erste kleine Bootloader-Stufe ist Teil des FPGA-Konfigurations-Streams und wird von einem Secure Device Manager (SDM) in den HPS-On-Chip-RAM geladen, während die zweite größere Bootloader-Stufe überall dort gespeichert werden kann, worauf das HPS Zugriff hat.
2. Hardware-Übergabe
Übersicht über die Übergabe
Alle Intel SoC FPGA-Projekte beginnen mit einem Hardwareprojekt, bei dem verschiedene Systemeinstellungen, die sich auf das HPS auswirken, vom Benutzer eingegeben werden. Dazu gehören:
- Pin-Multiplexing
- Pin-Einstellungen
- SDRAM-Einstellungen
- Takteinstellungen
Es ist die Aufgabe des Bootloaders, diese Einstellungen anzuwenden, und der Prozess, bei dem der Bootloader diese Einstellungen empfängt, wird als Hardware-zu-Software-Übergabe bezeichnet.
Abhängig von der genauen Bootloader- und SoC-Gerätefamilie kann die Übergabe verschiedene Formen annehmen. Typischerweise:
- Für Cyclone V- und Arria V-SoCs ist die Übergabe eine Kombination aus XML-Dateien, Binärdateien und Quellcodedateien, die in Quellcode konvertiert und dann in den Preloader kompiliert werden.
- Bei Intel Arria 10 SoCs ist die Übergabe in einer einzigen XML-Datei enthalten, die in eine Gerätestrukturdatei konvertiert und vom Bootloader verwendet wird.
- Bei Intel Stratix 10 SoCs sind die Übergabeinformationen Teil des FPGA-Konfigurationsbitstreams
Die primäre Methode zum Eingeben oder Ändern der Übergabeinformationen besteht darin, sie im Qsys zu bearbeiten.
Zusätzlich zu den Übergabeinformationen verfügen die Bootloader auch über verschiedene Einstellungen, die vom Benutzer mit den folgenden Methoden ausgewählt werden können:
- Einstellungen im BSP-Editor ändern
- Bearbeiten des Bootloader-Quellcodes
- Bearbeiten der Bootloader-Gerätestruktur, wenn eine Gerätestruktur verwendet wird
Cyclone V Soc und Arria V SoC Übergabe

Intel Arria 10 SoC Übergabe

Intel Stratix 10 SoC Übergabe

3. Verfügbare Bootloader
Übersicht über verfügbare Bootloader
In der folgenden Tabelle sind die verfügbaren Bootloader, Lizenztypen, unterstützten SoCs und die Verfügbarkeit der zweistufigen Unterstützung aufgeführt:
Bootloader |
Lizenztyp |
Zyklon V SoC |
Arria V SoC |
Intel Arria 10 SoC |
Intel Stratix 10 SoC |
Zweistufiger Support |
---|---|---|---|---|---|---|
U-Boot |
GPL |
Ja |
Ja |
Ja |
Ja |
Ja |
MPL |
BSD |
Ja |
Ja |
Ja |
- |
- |
UEFI |
BSD |
- |
- |
Ja |
Ja |
Ja |
ATF |
BSD |
- |
- |
- |
Ja |
- |
U-Boot
U-Boot ist ein Bootloader, der in der Industrie weit verbreitet ist und zahlreiche Funktionen bietet:
- Optionale erste Stufe namens "SPL" für Systeme mit begrenztem On-Chip-RAM (z. B. Cyclone V SoC und Arria V SoC)
- Netzwerkfähigkeit
- Flash-Speicher-Unterstützung
- Befehlszeilenschnittstelle
- Skripterstellung
- Benutzerdefinierte U-Boot-Anwendungen
U-Boot wird unter einer Allgemein-Public-Lizenz (GPL) entwickelt, so dass alle Beiträge, die zu einem Produkt geleistet werden, das an die Öffentlichkeit geliefert wird, ebenfalls veröffentlicht werden müssen.
Der U-Boot-Quellcode ist auf der U-Boot SoC FPGA-Seite auf der GitHub-Website verfügbar.
Für den Intel Arria 10 SoC, Arria V SoC und Cyclone V SoC ist der U-Boot-Quellcode in der Intel SoC FPGA Embedded Development Suite (SoC EDS) enthalten, was einen einfachen und bequemen Entwicklungsprozess ermöglicht.
Beachten Sie, dass die Unterstützung für Cyclone V- und Arria V-SoCs in den offiziellen U-Boot-Git-Baum auf der GitHub-Website integriert wurde. Es wird daran gearbeitet, auch Mainline-Unterstützung für Intel Arria 10 SoCs zu erhalten.
Die allgemeine U-Boot-Hauptseite befindet sich auf der Webseite Das U-Boot - dem Universal Boot Loader.
MPL
Der Minimal Preloader (MPL) ist ein Bootloader, der mit den Intel SoC FPGA Bare-Metal Hardware Abstraction Libraries (HWLIBs) entwickelt wurde. Es ist ein einstufiger Bootloader, der für minimalen Platzbedarf ausgelegt ist.
Die MPL ist für folgende Geräte verfügbar:
- Zyklon V SoC
- Arria V SoC
- Intel Arria 10 SoC
Die MPL wird mit einer Berkeley Software Distribution (BSD) Lizenz angeboten, die eine bequemere Entwicklung und Bereitstellung ermöglicht.
Die MPL wird als Teil des SoC EDS ausgeliefert und ist ein Projektarchiv in der <SoC EDS Installationsordner>/embedded/examples/software/Intel® FPGA-SoCFPGA-HardwareLib-MPL.tar.gz Datei. Das Archiv enthält eine Datei mit dem Namen README.txt, die detaillierte MPL-Beschreibungen und Nutzungsinformationen enthält.
UEFI
Das Unified Extensible Firmware Interface (UEFI) ist eine standardisierte Firmware-Spezifikation, die die Plattforminitialisierung und den Firmware-Bootstrap vereinfacht.
Der UEFI-Bootloader ist für die folgenden Geräte verfügbar:
- Intel Arria 10 SoC
- Intel Stratix 10 SoC
Da das UEFI sehr gut spezifiziert ist und von Hunderten von Technologieunternehmen verwendet wird, kann ein Großteil des Codes wiederverwendet werden, was schnellere Entwicklungszyklen ermöglicht.
Das UEFI, wie es auf Intel SoC FPGAs implementiert ist, besteht aus zwei verschiedenen Phasen:
- Pre-Efi-Initialisierungsphase (PEI). In dieser Phase wird die Plattform konfiguriert und entweder die Endbenutzeranwendung oder DXE geladen.
- Treiber eXecution Environment (DXE). Diese Phase lädt zusätzliche UEFI-Treiber und ermöglicht erweiterte Funktionen wie Netzwerk und Befehlszeilenschnittstelle.
Der UEFI-Bootloader bietet auch die Möglichkeit, spezielle Anwendungen auszuführen, die auf die DXE-Umgebung abzielen. Solche Anwendungen können dann ausgeführt werden, wenn die Exit-Kontrolle an die DXE zurückkehrt.
UEFI wird mit einer BSD-Lizenz angeboten, die eine bequemere Entwicklung und Bereitstellung ermöglicht.
Der UEFI-Quellcode ist auf der UEFI SoC FPGA-Seite auf der GitHub-Website verfügbar.
Für Intel Arria 10 SoCs wird das UEFI auch mit SoC EDS geliefert, das den gleichen Entwicklungsablauf wie U-Boot ermöglicht.
ATF
Die ARM Trusted Firmware (ATF) ist eine Referenzimplementierung von Secure World Software für ARMv8-a, die verschiedene ARM-Schnittstellenstandards wie Trusted Board Boot Requirements (TBBR) und Secure Monitor Call implementiert.
Die ATF wird kollaborativ unter einer BSD-Lizenz entwickelt, die eine komfortable Entwicklung und Bereitstellung ermöglicht.
Der ATF hat eine geringe Stellfläche und ist als First Stage Bootloader (FSBL) konzipiert. Es wird mit UEFI verwendet, um die PXE dann DXE zu laden, aber es kann auch zum Beispiel verwendet werden, um eine einfache Bare-Metal-Anwendung zu laden.
Der Quellcode für den Intel SoC FPGA Port von ATF kann unter https://github.com/Intel FPGA-opensource/arm-trusted-firmwareabgerufen werden.
4. Erste Schritte
U-Boot Erste Schritte
Für die ersten Schritte mit U-Boot stehen Ihnen die folgenden Ressourcen zur Verfügung:
- Erzeugen und Kompilieren von Cyclone V Vorladern
- Arria 10 U-Boot generieren und kompilieren
MPL Erste Schritte
Die MPL wird als Teil des SoC EDS ausgeliefert und ist ein Projektarchiv in der <SoC EDS Installationsordner>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz Datei. Das Archiv enthält eine Datei mit dem Namen README.txt mit detaillierten Nutzungsinformationen für Intel Arria 10 SoCs, Arria V SoCs und Cyclone V SoCs.
Erste Schritte mit UEFI
Für die ersten Schritte mit UEFI stehen Ihnen die folgenden Ressourcen zur Verfügung:
- Intel Arria 10 SoC UEFI Erste Schritte
- Intel Arria 10 SoC UEFI Bootloader Benutzerhandbuch
- Intel Stratix 10 SoC UEFI Bootloader Benutzerhandbuch
5. Ressourcen
Benutzerhandbücher
Die folgenden Benutzerhandbücher sind verfügbar:
Quellcode
Quellcode kann von den folgenden Websites bezogen werden:
- Intel SoC FPGA U-Boot auf GitHub
- Offizieller Denx U-Boot Quellcode
- Intel SoC FPGA UEFI auf GitHub
- ARM Trusted Firmware auf GitHub
- SoC EDS für Cyclone V, Arrial V und Arria 10 U-Boot Quellcode und Arria 10 UEFI Quellcode. Der Quellcode wird durch Ausführen des Tools bsp-editor generiert. Weitere Informationen finden Sie im SoC EDS-Benutzerhandbuch,Kapitel "Boot Tools User Guide".
- SoC EDS für S10 SoC U-Boot Quellcode in <SoC EDS Installationsordner>/embedded/host_tools/Intel FPGA/bootloaders/stratix10/u-boot/uboot-socfpga.tar.gz Datei.
- SoC EDS for MPL-Quellcode, der sich in der Datei <SoC EDS Installation Folder>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz befindet.
Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.