Linux* Entwicklercenter

SoC-FPGA und Nios® II-Prozessor

Linux ist das am häufigsten verwendete Open-Source-Betriebssystem (OS). Linux ist Unix nachempfunden und bietet integrierte Treiber, die eine Vielzahl von Geräten unterstützen, einschließlich Geräten, die auf Intel® SoC-FPGA-Boards zu finden sind.

Intel bietet einen SoC-FPGA-Linux-Kernel, der auf dem Linux-Kernel von kernel.org zusammen mit anderen Ergänzungen wie Board-Support-Paketen und Treibern basiert.

Intel ist ein Kernmitglied der Linux Foundation und trägt zu vielen Linux-Open-Source-Projekten bei. Intel ist ein starker Teilnehmer und Unterstützer der Linux-Community. Die Intel Linux-Entwicklungswebsite RocketBoards.orgbietet Hilfe zu den ersten Schritten, Designbeispiele, Dokumentation und Community-Foren, um Ideen auszutauschen und zusammenzuarbeiten.

Verwenden Sie die folgenden Links, um zu erfahren, wie Sie Linux auf Intel SoC-FPGAs verwenden. Für Erstbenutzer wird empfohlen, den Ressourcen linear zu folgen.

1. Voraussetzungen

Voraussetzung: werden Sie RocketBoards.org Mitglied

Besuchen Sie RocketBoards.org und klicken Sie auf die Schaltfläche Registrieren. RocketBoards.org bietet Zugriff auf:

  • Umfassende SoC FPGA Linux Informationen:
  • Updates zu den neuesten Linux-Versionen
  • Schritt-für-Schritt-Anleitungen für die ersten Schritte
  • Intel SoC FPGA Golden System Referenzdesigns (GSRD)
  • Beispielprojekte, Anwendungen und Designs von Intel und der SoC-Community
  • Community-Unterstützung
  • Zugang zu Forendiskussionen und Kooperationen von Intel und der SoC-Community
  • Aktive Mitgliederbeteiligung bei der Beantwortung von SoC-FPGA- und Linux-Fragen

Überlegungen zum Entwurf

Warum Embedded Linux verwenden?

Für eingebettete Systeme wie Smartphones, Tablets, PDAs, Set-Top-Boxen und persönliche Mediaplayer ist ein eingebettetes Linux-Betriebssystem eine natürliche Wahl, da es viele der Funktionen erfüllt, nach denen Designer in einem Betriebssystem suchen.

Kosten

  • Diese von der Community unterstützte Open-Source-Software ist kostenlos. Sie haben die Möglichkeit, Ihr eigenes Linux-System zu erstellen, indem Sie mit einem lizenzfreien Linux-Betriebssystem-Kernel beginnen. Verfügbare Frameworks und Anwendungen werden innerhalb der Embedded Linux Community angeboten, um die komplette Systemlösung zu erstellen.

Leistung

  • Embedded Linux bietet eine bessere Echtzeitleistung als Standard-Linux, da es für die Arbeit auf einer Embedded-Plattform angepasst und für die Stromversorgung optimiert ist.

Größe

  • Der eingebettete Linux-Kernel ist einfacher und kleiner als der des Standard-Linux-Betriebssystems.

Unterstützen

  • Zahlreiche Unternehmen tragen mit kontinuierlichen Kernel-Kompatibilitäts-Updates und fortschrittlichen Tools zum Open-Source-Embedded-Linux bei.
  • Embedded Linux-Supportwebsites wie RocketBoards.orgbieten neuen und fortgeschrittenen Benutzern Anleitungen für die ersten Schritte, Designbeispiele und Community-Foren.
  • Entwickler, die eine kommerzielle Embedded-Linux-Lösung benötigen, können verfügbare Linux-Distributionen von WindRiver, MonteVista und Timesys verwenden.
  • Entwickler finden zahlreiche gerätespezifische Treiber wie USB und Ethernet.

Anpassung

  • Entwickler können die Angstrom Distribution an ihre spezifische Anwendung anpassen. Die neuesten Linux-Kernel stehen immer unter kernel.orgzum Download bereit.

Benutzerfreundlichkeit

  • Linux-Betriebssystemtreiber bieten eine High-Level-Geräteabstraktion mit minimalem Aufwand. Sie können Linux-Treiber erstellen, um den Zugriff auf den Benutzerbereich für benutzerdefinierte Benutzerperipheriegeräte in der FPGA-Fabric bereitzustellen.

Sicherheit

  • Embedded Linux bietet einen hochstabilen und getesteten Kernel zur Verwendung mit sicherheitskritischen Anwendungen.
  • Open-Source-Sicherheitsgruppen bieten Präsentationen, Literatur und Sicherheitszertifizierungen für Embedded-Linux-Anwendungen.

Tragbarkeit

  • Viele benutzerdefinierte Mikroprozessoren verfügen über eingebettete Linux-Kernel-Unterstützung.

Innovation

  • Kollaborative Entwicklung unterstützt die schnelle Linux-Evolution.
  • Linux-Communities bieten ein schnelleres Medium für die Inkubation und das Testen neuer Funktionen.
  • Das Fehlen vertraglicher Einschränkungen ermöglicht es Entwicklern, neue Anwendungen, Märkte und Plattformen für das Linux-Betriebssystem zu schaffen.

Embedded Linux funktioniert besonders gut mit Intel SoC FPGAs, weil:

  • Linux bietet Funktionen, die die Vorteile des Intel SoC-Hartprozessorsystems symmetrische Multiprozessor-Hardwarekonfiguration voll ausschöpfen
  • Entwicklungsanbieter wie WindRiver, MontaVista und Timesys bieten Embedded-Linux-Lösungen von Intel für eine schnelle Markteinführung
  • Der Linux-Kernel für Intel SoC-FPGAs folgt normalen ARM* Linux-Prozessen zum Erstellen und Ausführen.

Überlegungen zu Linux

Nachdem Sie sich für die Verwendung eines Linux-Systems entschieden haben, müssen Sie bestimmte Aspekte Ihres Designs berücksichtigen:

  • Entscheiden Sie, ob Sie Ihr eigenes Linux-System bauen oder ein kommerzielles Angebot nutzen möchten
  • Wenn Sie sich entscheiden, keine eigene Linux-Distribution zu erstellen, können Sie ein kommerzielles Angebot von WindRiver, Monta Vista und Timesys oder einem anderen Linux-Anwendungsanbieter verwenden.
  • Wenn Sie Ihr Design anpassen möchten, müssen Sie bestimmen, welche Linux-Kernelversion von kernel.org heruntergeladen werden soll. Ein kundenspezifisches Design erfordert mehr Softwareentwicklung, bietet aber eine kostengünstigere Lösung.
  • Bestimmen Sie, welcher Kernel verwendet werden soll. Diese Entscheidung sollte auf Ihren Anwendungsanforderungen basieren. Die beiden Versionen werden als "stabil" und "Entwicklung" kategorisiert. Besuchen Sie kernel.org, um verschiedene verfügbare Kernel-Optionen zu sehen.
  • Legen Sie Ihre Build-Strategie fest. Die derzeit unterstützten Buildstrategien sind:
  • Angstrom Verteilung
  • Yocto Projekt
  • Legen Sie fest, ob Sie vorhandene Gerätetreiber verwenden oder eigene erstellen möchten. Sie finden eine Liste der verfügbaren Intel SoC FPGA Gerätetreiber auf RocketBoards.org.
  • Wählen Sie aus, wie Multiprocessing implementiert werden soll. Das Intel SoC Hardprozessorsystem ist eine klassische symmetrische Multiprocessing (SMP) Hardwarekonfiguration. Sie können asymmetrisches Multiprocessing (AMP) implementieren, indem Sie Methoden wie SMP mit Kernaffinität oder Kernreservierung verwenden. Weitere Informationen finden Sie im Technical Reference Manual (TRM).
  • Stellen Sie fest, ob Sie eine Anpassung einiger Komponenten des Linux-Buildprozesses benötigen. Wenn ja, müssen Sie mit Folgendem vertraut sein:
  • Linux-Bootvorgang
  • Werkzeuge, die im Board-Bring-up-Prozess verwendet werden
  • U-Boot-Anpassung
  • Linux-Root-Dateisystem und Möglichkeiten, es anzupassen

Nios II Prozessor auf Linux-System

Bitte besuchen Sie die Nios II Linux User Manual Webseite für Linux Kernel Build und Boot Anweisungen.

Voraussetzung: Grundlegendes Intel SoC FPGA Boot Flow verstehen

Die obigen Diagramme enthalten drei grundlegende Phasen:

Bühne

Beschreibung

Boot-ROM

Bringt den Prozessor aus dem Reset, führt eine minimale Konfiguration durch und lädt den U-Boot in den On-Chip-RAM

U-Boot

Konfiguriert die I/Os, FPGA, Phase-Locked Loops (PLLs) und Takter; initialisiert DDRAM und lädt den Linux-Kernel

Linux

Verwaltet Prozesse, Speicher, Netzwerkstapel und Gerätetreiber und führt die Endanwendung aus

Die wichtigsten Schritte in diesen Phasen sind:

  • Erstellen Sie mit dem Plattform-Designer einen Hardwareentwurf. Das Design umfasst:
  • HPS-Konfiguration von Taktraten, Pins, DDR und Schnittstellen.
  • FPGA-Fabric-Konfiguration von FPGA Intellectual Property (IP), Pins, Speichercontrollern und PLLs.
  • Kompilieren Sie das Hardware-Design mit den Intel Quartus® Prime Software-Tools. Folgende Dateien werden erstellt:
  • SRAM-Objektdatei (SOF): Enthält die Daten, die das FPGA-Fabric konfigurieren
  • Übergabedatei: Enthält Informationen, die vom SSBL-Generator (Second Stage BootLoader) zum Erstellen des HPS-Bootloaders verwendet werden
  • SOPCINFO-Datei (System-on-a-Programmable-Chip Information): Hardware-Systeminformationen, die den Gerätebaum mit FPGA-Soft-IP-Adressen erstellen.
  • Verwenden Sie das Intel Quartus Prime Software-Tool, um die SOF-Datei in eine rohe Binärdatei (RBF) zu konvertieren, die zum Programmieren des FPGAs verwendet wird.
  • Konfigurieren Sie das Bootloader-Generator-Tool im BSP-Editor (Board Support Package) der Intel SoC FPGA Embedded Development Suite (SoC EDS), um die Übergabedatei zum Generieren des Bootloaders (U-Boot) zu verwenden.
  • Wählen und konfigurieren Sie Ihre Boot-Quelle. Sie können zwischen FPGA, SD/MMC, QSPI oder NAND wählen.
  • Booten Sie den Linux-Kernel. Optional können Sie Hardware- oder Soft-IP-Treiber schreiben.

Voraussetzung: Machen Sie sich mit dem Intel SoC Embedded Development System (SoC EDS) vertraut

Ein grundlegendes Verständnis der SoC EDS-Tools und -Komponenten finden Sie im Intel SoC FPGA Embedded Development Suite-Benutzerhandbuch. Obwohl nicht alle Abschnitte des Dokuments den Bootloader und die Linux-Entwicklung beschreiben, empfiehlt Intel dringend, mindestens die folgenden Abschnitte zu lesen:

SoC EDS Sektion

Beschreibung

Einleitung

Bietet einen allgemeinen Überblick über Features und den Hardware-Software-Entwicklungsablauf

Installation

Beschreibt die Installation des SoC-FPGA-EDS und des mitgelieferten ARM* Development Studio 5* (DS-5*)

Zulassung

Bietet Lizenzierungsoptionen für das SoC-FPGA-EDS und die Installation der Lizenz

Eingebettete Befehlsshell

Beschreibt, wie die Shell gestartet wird, die auf die übrigen SoC-FPGA-EDS-Tools zugreift.

alt-boot-Disk-util

Beschreibt das Dienstprogramm, das den Preloader und den Bootloader auf einer physischen SD-Karte aktualisiert.

bsp-editor

Beschreibt die grafische Benutzeroberfläche (GUI), mit der Sie das Board Support Package (BSP) generieren können: Bootloader und Linux-Gerätebaum

Linux-Compiler

Fasst die im SoC EDS enthaltenen Compiler zusammen

Grundlegendes Lernen: Was ist Linux?

Als Betriebssystem sitzt Linux unter all der anderen Software. Es empfängt Anforderungen von diesen Programmen und leitet diese Anforderungen an die Hardware des Computers weiter.

Wenn Sie die fünf Hauptsubsysteme des Linux-Kernels verstehen, können Sie die folgenden Funktionen effizient nutzen:

  • Prozess-Scheduler
  • Interprozesskommunikation (IPC)
  • Speicherverwaltung
  • Dateisystem
  • Netzwerk-Subsystem:

Grundlegendes Lernen: Dokumentation und Ressourcen

Technisches Referenzhandbuch

Die technischen Referenzhandbücher enthalten eine detaillierte Beschreibung der Hardware, einschließlich des Verhaltens, der Basisadressen, der Interrupt-Zuordnung und -Steuerung sowie der Statusregister für alle Peripheriegeräte. Diese Ressource ist beim Debuggen komplexer Bare-Metal-Szenarien von Nutzen.

Zusätzliche Dokumentressourcen

Grundlegendes Lernen: Schulungsmaterial

  • Besuchen Sie die Rocketboards.org Training-Website, um die neuesten Schulungsressourcen, Workshop-Materialien, einen von Lehrern geführten Katalog und einen Online-Schulungskatalog zu erhalten.

2. Los geht's

Zur RocketBoards.org

  • RocketBoards.org ist der Ausgangspunkt für alle GSRD (Golden System Reference Design) Binärdateien und Projektbeispiele für Intel SoC FPGA Development Kits.
  • Klicken Sie auf der Startseite auf die Schaltfläche START, oder wählen Sie in der Dropdown-Liste unter der Registerkarte Dokumentation die Option Erste Schritte aus.

Wählen Sie ein Board aus

Um die Funktionen, Spezifikationen, Dokumentation und Designunterstützung für ein bestimmtes Board zu finden, wählen Sie BOARD aus dem Navigationsmenü auf der Homepage.

Beachten Sie, dass die Intel SoC FPGA Development Kits Anleitungen für die ersten Schritte und zahlreiche Designbeispiele bieten.

Auswählen einer Werkzeugversion

Wählen Sie eine Intel® Quartus® Prime-Softwareversion aus, die Sie mit Ihrem Design verwenden möchten.

Tipps:

  • Für den Zugriff auf die neuesten Design-Tool-Updates und Sicherheitspatches verwenden Sie die neueste Intel Quartus Prime Software-Version.
  • Wenn Sie auf eine bestimmte Linux-Version abzielen, stellen Sie sicher, dass Sie die richtige Tool-Version auswählen, die mit der Linux-Version kompatibel ist.

Auswählen einer Aufgabe

Je nach ausgewähltem Development Board und ausgewählter Toolversion variieren die aufgaben, die unter dem Pulldown-Menü Task auswählen verfügbar sind. Die meisten Aufgaben, die Sie ausführen können, werden von den Entwicklungsboards gemeinsam genutzt.

Einige häufig verfügbare Aufgaben, die Sie auswählen können, sind:

  • Linux von der SD-Karte booten
  • Kompilieren des Hardwaredesigns
  • Generieren von U-Boot und Device Tree
  • Generieren der Linux-Gerätestruktur
  • Linux kompilieren
  • Generieren und Aktualisieren der SD-Karte
  • Booten von QSPI Flash
  • Booten von NAND Flash

Installieren des SoC-EDS

Laden Sie die Intel SoC FPGA Embedded Development Suite (SoC EDS) aus dem Intel FPGA Design Software Download Center herunter und befolgen Sie diese Anweisungen, um das SoC EDS zu installieren.

Das SoC EDS enthält wesentliche Werkzeuge, die für die gesamte SoC-FPGA-Entwicklung benötigt werden, wie z.B. die Generierung von U-Boot und einen Linux-Gerätebaum. Das SoC EDS bietet das goldene Hardware Reference Design (GHRD).

Weitere Informationen finden Sie auf der Seite Intel SoC FPGA Embedded Development Suite Overview.

Nutzen Sie Build-Tools

Das Intel® SoC EDS bietet die folgenden Tools und Dienstprogramme, die zum Konfigurieren, Kompilieren und Erstellen von Binärdateien erforderlich sind:

  • Der Linaro Linux Compiler wird mit dem SoC EDS ausgeliefert
  • Das Device Tree Generator-Tool wird verwendet, um Gerätebäume für SoC-Systeme zu erstellen, die FPGA-Designs enthalten, die mit dem Platform Designer erstellt wurden
  • SoC EDS SD Card Boot Utility ist ein Tool zum Aktualisieren der Boot-Software auf einer SD-Karte

3. Erstellen Sie Ihr eigenes Projekt

Grundlegende Projektschritte

An dieser Stelle haben Sie die Intel Quartus Prime Software und das Intel SoC EDS Golden System Reference Design (GSRD) heruntergeladen und installiert. Sie haben auch das goldene Hardware-Referenzdesign (GHRD) von der GSRD erhalten. Um Ihr Linux-Projekt abzuschließen, müssen Sie die folgenden allgemeinen Schritte ausführen:

  1. Fügen Sie dem Entwurf mithilfe des Plattform-Designers Ihre benutzerdefinierte Hardwarekomponente hinzu.
  2. Verwenden Sie die Intel Quartus Prime Software, um Ihr Design zu kompilieren.
  3. Verwenden Sie die SoC EDS- und GSRD-Quellwerkzeuge, um den Preloader oder U-Boot zu erstellen.
  4. Erstellen Sie Uboot, Linux und das Root-Dateisystem getrennt vom Git-Baum oder verwenden Sie die Angstrom-Distribution.
  5. Fügen Sie der Linux-Kernelquelle alle benutzerdefinierten Treiber hinzu und nehmen Sie die erforderlichen Ergänzungen zur Kernelkonfiguration vor.
  6. Erstellen Sie eine Linux-Anwendung.
  7. Wählen und programmieren Sie eine Boot-Quelle für Ihr Gerät.
  8. Führen Sie die Anwendung auf Ihrem Gerät aus.

Beispielprojekt

Gehen Sie zum Projektbeispiel für Soft IP zu Linux. Dieses Beispiel:

  • Verwendet das Goldene Systemreferenzdesign (GSRD) als Basis, zu der ein benutzerdefinierter hochauflösender Timer hinzugefügt wird
  • Erstellt alle erforderlichen Binärdateien, um das Intel Arria 10 SoC-Gerät zu booten
  • Erstellt einen Linux-Treiber und eine Userspace-Anwendung, die mit der Hardware interagiert
  • Enthält eine Referenz zum Starten Ihres Geräts und zum Erstellen von Linux-Treibern für Kundenkomponenten

Einige Details, die Sie berücksichtigen sollten, wenn Sie Ihr eigenes Design starten:

  • Es ist wichtig zu identifizieren, welches Development Kit und welche Tool-Version Sie verwenden möchten. Es ist im Allgemeinen am besten, mit der neuesten Version zu beginnen. Wenn Sie mit einer bestimmten Linux-Version arbeiten müssen, stellen Sie sicher, dass die ausgewählte Tool-Version kompatibel ist.
  • Jedes Development Kit und jede Toolversion verfügt über ein eigenes Referenzdesign. Das GSRD bietet eine Reihe wesentlicher Hardware- und Softwaresystemkomponenten, die Sie als Grundlage für die Erstellung Ihres benutzerdefinierten Designs verwenden können.

4. Beispiele

SoC FPGA Linux Code Repositories auf GitHub

Aufbewahrungsort

Beschreibung

linux-socfpga.git/

SoC FPGA Linux Entwicklungs-Repository

  • Spiegelungen kernel.org Linux-Repository-Versionen
  • Downstream-Verzweigungen für SoC-FPGA-spezifische

Patches und Updates

meta-Intel fpga .git/

Repository für SoC FPGA Yocto Rezepte

  • Ausgangspunkt für individuelle Yocto-Rezepte

angstrom-socfpga.git/

Setup-Skripte für SoC-FPGA Angstrom
Verteilung

uboot-socfpga.git/

SoC FPGA U-Boot Entwicklungs-Repository

sopc2dts.git/

Device Tree Generator (sopc2dts) Repository

linux-refdesigns.git/

Software-Quellcode für Linux-Referenzdesigns

Schritte zum Erstellen von Linux-Boot-Binärdateien

Die folgenden Links enthalten Details zum manuellen Erstellen und Generieren von Binärdateien, die im Linux-Bootvorgang verwendet werden.

Ressource

SoC-Gerät

GSRD-Version

Erstellen und Aktualisieren der SD-Karte

Intel Arria 10

17.0

Flash-Programmierung: QSPI, NAND und SDMMC

Intel Arria 10

16.1

Programmierung von FPGAs

Zyklon® V / Arria V

17.0

Generieren des U-Boot-Skripts

Zyklon V

Generieren und Kompilieren des Preloaders

Zyklon V / Arria V

Alle

Generieren von U-Boot und der Gerätestruktur

Intel Arria 10

17.0

Preloader und U-Boot Anpassung

Zyklon V / Arria V

13.1

Erstellen von initramfs-Kernels (Simple Root Filesystem)

Intel Arria 10 /
Zyklon V / Arria V

Alle

Gerätestruktur-Generator (Linux)

Intel Arria 10

17.0

Grundlegendes zur Linux-Gerätestruktur

Intel Arria 10 /
Zyklon V / Arria V

Alle

Kompilieren von Linux (Erstellen des Kernels und RFS mit Angstrom oder aus GIT)

Intel Arria 10 /
Zyklon V / Arria V

Alle

Yocto Benutzerhandbuch

Arria V

14.0

Angstrom Root Dateisystem HowTo

Intel Arria 10 /
Zyklon V / Arria V

Alle

Erstellen von Yocto RFS mit Meta-Intel FPGA

Intel Arria 10 /
Zyklon V / Arria V

Alle

Weitere Beispiele

Ressource

SoC-Gerät

GSRD-Version

Datamover-Entwurfsbeispiel

Zyklon® V

14.0

Partielle Rekonfiguration

Intel® Arria® 10

16.1

PCIe* Root-Port mit MSI

Intel Arria 10 / Zyklon V / Arria V

17.0

SGMII-Designbeispiel

Zyklon V

14.0

Vorhandene Gerätetreiber

Unterstützung von SoC Hard IP-Treibern

Das Intel® FPGA-SoC-Hartprozessorsystem integriert viele IP-Kerne von Drittanbietern von:

  • ARM
  • Synopsys* DesignWare
  • Kadenz

Da diese IP-Kerne von Drittanbietern in der Regel weit verbreitet sind und von der Community unterstützt werden, sind die für sie verfügbaren Treiber im Allgemeinen gut getestet und stabil.

RocketBoards.org führt eine Liste der verfügbaren Treiber für Intel SoC FPGA-Peripheriegeräte.

5. Zusätzliche Ressourcen

Rocketboards.org

Rocketboards.org ist eine Intel SoC FPGA Linux-Ressourcenseite. Es handelt sich um eine Website für die Zusammenarbeit, auf der Gerätespezifische Anwendungshinweise gefunden werden können, in denen beschrieben wird, wie verschiedene Komponenten erstellt werden, die für den Linux-Start erforderlich sind.

Rocketboards Forum

Linux für Intel SoC FPGAs wird aus dem Open-Source-Linux-Kernel von kernel.org entwickelt. Unterstützung für Intel SoC FPGA-spezifische Teile des Linux-Kernels (Treiber und BSP) ist über die Intel FPGA Community verfügbar

Rocketboards Forum ist eine Community-Website, die die Zusammenarbeit zwischen verschiedenen Benutzern von Intel FPGA-Produkten ermöglicht. Verwenden Sie die Suchmaschine, um relevantes Material zu finden. Sie werden auch ermutigt, zu aktualisieren und beizutragen.

Wie bei vielen Open-Source-Projekten empfehlen wir unseren Kunden, die Open-Source-Mailinglisten für Linux auch in Bereichen zu verwenden, die nicht spezifisch für Intel SoC-FPGAs sind.

Mein Intel

Verwenden Sie Ihr My Intel Konto, um eine Serviceanfrage für Unterstützung einzureichen, sich für eine Schulung zu registrieren oder auf andere Ressourcen zuzugreifen. Eine Registrierung ist erforderlich, bevor Sie auf diese Dienste zugreifen können.

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.