Überwindung der Linux-Entwicklungshürden in ressourcenbeschränkten Systemen

Von Brandon Lewis

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

Die Open-Source-Technologie bietet den Entwicklern elektronischer Systeme einen Weg zu niedrigeren Kosten, kürzeren Markteinführungszeiten und längeren Produktlebenszyklen, indem sie proprietäre Hindernisse beseitigt und die Zusammenarbeit fördert. Open-Source-Möglichkeiten erstrecken sich heute über den gesamten Systemstapel, von Betriebssystemen bis hin zu Hardware für Einplatinencomputer und Halbleiter-IP.

Hohe Rechenanforderungen, Sicherheitsrisiken und deterministische Latenz sind jedoch nach wie vor Herausforderungen für die Ausführung von Linux auf ressourcenbeschränkten Geräten, wie z. B. industriellen IoT- und Robotiksystemen.

Dieser Artikel gibt einen kurzen Überblick über die Herausforderungen, die sich Entwicklern beim Einsatz von Linux in ressourcenbeschränkten Systemen stellen. Dann wird der von BeagleBoard.org eingeführte Einplatinencomputer BeagleV-Fire in Kombination mit Linux vorgestellt und beschrieben, wie er die zukünftige Designflexibilität maximieren kann. Dazu gehört auch eine Demonstration der Verwendung der Open-Source-Board-Support-Pakete (BSPs) von Microchip Technology zur Erstellung einer ersten Linux-Konfiguration.

Die Herausforderungen der Open-Source-Entwicklung bei eingebetteten Systemen

Der Einsatz von Open-Source-Technologien in der Embedded-Entwicklung ist weit verbreitet. Sowohl das Hardware-Design als auch die Software-Integration werden durch sofort einsatzbereite Komponenten beschleunigt, die von einem breiten Ökosystem von Herstellern und einzelnen Ingenieuren produziert werden. Vor allem die Flexibilität von Linux hat es zu einer führenden Softwarelösung für Systeme gemacht, die Netzwerke, High-Level-Anwendungs-Frameworks und die Integration künstlicher Intelligenz (KI) erfordern.

Der Einsatz von Linux auf Geräten mit eingeschränkten Ressourcen führt jedoch zu zusätzlichen Überlegungen:

  • Speicheranforderungen: Herkömmliche Mikrocontroller-Einheiten (MCUs) haben Schwierigkeiten, die Speicheranforderungen selbst minimaler Linux-Distributionen zu erfüllen. Wenn Entwickler Hintergrunddienste zur Unterstützung von Anwendungen, Subsystemen und User-Space-Frameworks (USF) hinzufügen, verbrauchen diese Subsysteme mehr Ressourcen, wodurch umfangreiche Software-Stacks unpraktikabel werden.
  • Latenz: Hochpräzise Anwendungen wie Robotik und industrielle Automatisierung erfordern ein vorhersehbares Timing für die Systemkoordination und Betriebssicherheit. Während die PREEMPT_RT-Funktion des Linux-Kernels den Determinismus verbessert, bieten dedizierte Echtzeitbetriebssysteme (RTOS) geringere Latenzzeiten und einen geringeren Overhead für ressourcenbeschränkte Hardware.
  • Sicherheit: Eingebettete Systeme, die in öffentlichen Umgebungen eingesetzt werden, sind dem Risiko eines unbefugten Zugriffs ausgesetzt, so dass Standard-Sicherheitsmaßnahmen wie sicheres Booten, Manipulationssicherheit und Hardware-basiertes „Root of Trust“ (RoT) entscheidend sind. Darüber hinaus schreiben Vorschriften wie der „EU Cyber Resilience Act“ (CRA) vor, dass Produkte mit digitalen Elementen von Haus aus sicher sein müssen.
  • Leistung: Edge-Geräte werden oft in abgelegenen Umgebungen mit begrenzten Energieressourcen betrieben. Eine höhere Energieeffizienz kann die Batterielebensdauer verlängern oder den Betrieb mit Umgebungsenergiequellen ermöglichen. Ebenso kann eine höhere Energieeffizienz das Wärmemanagement vereinfachen und die Leistung pro Watt steigern, was die moderne Edge-Verarbeitung unterstützt.
  • Lebenszyklus-Management: Der CRA schreibt vor, dass digitale Geräte mindestens fünf Jahre lang unterstützt werden müssen. Viele industrielle Anwendungen erfordern allerdings eine Produktverfügbarkeit von 10 bis 15 Jahren. Um eine konsistente Unterstützung des Linux-Kernels zu gewährleisten, müssen die Entwickler daher die Aufrüstbarkeit und die Verfügbarkeit der Hardware berücksichtigen.

Um diese Herausforderungen zu meistern, können Entwickler auf zusätzliche Ressourcen aus dem Open-Source- und Embedded-Linux-Ökosystem zurückgreifen und die optimierten Hardware-Software-Kombinationen von Linux für sich schnell entwickelnde Edge-Anwendungen nutzen.

Linux-Implementierung mit offenen Einplatinencomputern und RISC-V

Universelle Linux-Distributionen bieten zwar einen schnellen Weg zur Anwendungsreife, enthalten aber oft Pakete und Dienste, die für das jeweilige Projekt nicht erforderlich sind. Im Gegensatz dazu ermöglicht das Yocto-Projekt, das von OpenEmbedded unterstützt wird, Entwicklern die Erstellung von maßgeschneiderten Linux-Images für spezifische Anwendungsfälle. Auf diese Weise werden unnötige Funktionen eliminiert, so dass leichtgewichtige Distributionen auf ressourcenbeschränkter Hardware ausgeführt werden können, während moderne Funktionen wie KI-gesteuerte computerbasierte Bildverarbeitung oder vorausschauende Wartung über Standardtools erhalten bleiben.

Darüber hinaus bietet das Yocto-Projekt Entwicklern folgende Möglichkeiten:

  • Reproduzierbare Builds für langfristige Wartung
  • Benutzerdefinierte Kernel-Konfiguration zur Verbesserung von Performance, Sicherheit und Reaktionsfähigkeit
  • Board-spezifische Layer-Integration zur Gewährleistung der Hardware-Software-Kompatibilität und Reduzierung der Entwicklungszeit

Die einfache Integration in OTA-Update-Mechanismen (Over-the-Air) wie SWUpdate, RAUC und Mender hilft Entwicklern außerdem, die Performance und Sicherheit von Geräten über lange Produktlebenszyklen hinweg regelmäßig zu verbessern. Infolgedessen ist das Yocto-Projekt jetzt Standard für eingebettete Linux-Systeme.

Auch Open-Source-Einplatinencomputer werden seit langem eingesetzt, um die Entwicklung von Linux-Anwendungen zu beschleunigen, da sie eine gebrauchsfertige Referenzplattform bieten, die Verarbeitungs-, Speicher- und I/O-Ressourcen in einem eigenständigen Formfaktor vereint. Mit offenen Einplatinencomputern können Entwickler schnell einen Prototyp eines Systems erstellen, ihren Software-Stack validieren und dann mit minimaler Nacharbeit auf kundenspezifische Hardware umsteigen.

Die offene Standard-Befehlssatzarchitektur (ISA) von RISC-V geht noch einen Schritt weiter und ermöglicht es Systementwicklern, kundenspezifische Verarbeitungsplattformen ohne teure Lizenzgebühren zu erstellen. Bei RISC-V können die Entwickler wählen, welche Teile des Befehlssatzes sie einbeziehen wollen, und diese sogar erweitern, um ihre spezifischen Anwendungsfälle zu erfüllen. Da die ursprünglichen Entwürfe unter einer BSD-Lizenz (Berkeley Software Distribution) erstellt wurden, können abgeleitete Werke entweder offen und frei oder geschlossen und proprietär sein.

Für Entwickler und Architekten reduzieren das Yocto-Projekt, offene Einplatinencomputer und RISC-V die Abhängigkeit von Roadmaps einzelner Hersteller und erhöhen die langfristige Designflexibilität. Darüber hinaus unterstreichen die wachsende Upstream-Unterstützung für RISC-V in Linux und die Platin-Mitgliedschaft von RISC-V im Yocto-Projekt das Interesse der Embedded Linux-Gemeinschaft.

Ein leistungsstarker RISC-V-Einplatinencomputer für die kompakte Linux-Integration

Der Open-Source-Einplatinencomputer BeagleV-Fire von BeagleBoard.org (Abbildung 1) bietet eine kompakte, I/O-reiche Plattform, um diesen Herausforderungen zu begegnen. Mit dem FPGA-SoC (System-on-Chip) PolarFire von Microchip bietet er einen energieeffizienten Betrieb, Hardware-Sicherheitsfunktionen und einen kohärenten RISC-V-CPU-Cluster, der Linux-Anwendungen mit Echtzeit-Workloads unterstützt. Entwickler können den Einplatinencomputer für Prototypen von Robotik-Steuerungen, Industrie-Gateways, Edge-KI-Beschleunigern und kundenspezifischen I/O-Plattformen verwenden, die auf Embedded-Linux basieren.

Abbildung: BeagleV-Fire von BeagleBoard.orgAbbildung 1: Das BeagleV-Fire von BeagleBoard.org ist eine kompakte Einplatinencomputer-Plattform für die Integration von Open-Source-Technologien in eingebettete Geräte. (Bildquelle: BeagleBoard.org)

Die kompakte Plattform misst 86,38 mm × 54,61 mm × 18,8 mm und basiert auf dem energieeffizienten PolarFire-SoC MPFS025T-FCVG484E. Er verfügt über eine kohärente Multi-Core-Architektur mit vier RV64GC-Anwendungskernen zur Ausführung von Linux und einem RV64IMAC-Monitorkern zur Verwaltung von Low-Level-Funktionen.

Um die Performance zu maximieren und die Datengenauigkeit zwischen den Kernen zu gewährleisten, bietet der PolarFire-SoC einen gemeinsamen L2-Cache, ein kohärentes Speichersubsystem und einen integrierten DDR-Speichercontroller zur Unterstützung von 2 Gigabyte (GByte) On-Board-LPDDR4-Speicher. Komplexe Anwendungen werden durch den 16 GByte großen eMMC-Speicher und den 128 Megabit (Mbit) großen SPI-Flash des BeagleV-Fire zusätzlich unterstützt.

Neben dem RISC-V-Prozessor-Subsystem integriert der PolarFire-SoC eine FPGA-Struktur (Abbildung 2), die es Entwicklern ermöglicht, deterministische Verarbeitungspfade für Echtzeitanwendungen mit geringer Latenz zu erstellen und kundenspezifische Hardwarebeschleunigung für KI-Pipelines zu implementieren. Als Teil des Gesamtsystems beherbergt diese Struktur 23.000 Logikelemente und eigene zusätzliche Ressourcen, so dass sie unabhängig von den Hauptverarbeitungskernen arbeiten kann.

Diagramm der PolarFire-SoC-Familie von Microchip (zum Vergrößern anklicken)Abbildung 2: Die PolarFire-SoC-Familie von Microchip kombiniert mehrere RISC-V-Verarbeitungskerne mit einer vielseitigen FPGA-Struktur für deterministische Workloads. (Bildquelle: Microchip Technology)

Mit mehreren sicheren Boot-Optionen ermöglichen die integrierten Hardware-Sicherheitsfunktionen des PolarFire-SoC den Entwicklern die Implementierung eines umfassenden Sicherheitsmodells und machen ihn zu einer nützlichen Plattform für die Erfüllung moderner Cybersicherheitsanforderungen. Diese Funktionen umfassen:

  • Unveränderliches Hardware-Root-of-Trust über eine physikalisch nicht klonierbare Funktion (PUF)
  • Sichere Schlüsselspeicherung mit einmalig programmierbarem (OTP) oder sicherem nichtflüchtigem Speicher unter Verwendung von „Unique Device Secrets“ (UDS) und Hardware-gestützter Schlüsselzugriffskontrolle
  • Ein Manipulationssicherungsmodul

Darüber hinaus bietet der BeagleV-Fire mehrere integrierte physikalische Ports für den Aufbau eines anwendungsbereiten Systems, in dem eigene Linux-Distributionen verifiziert und getestet werden können (Abbildung 3). Dazu gehören ein RJ45-Gigabit-Ethernet-Anschluss, ein USB-Typ-C-Anschluss für Stromversorgung und Vernetzung, ein M.2-Key-E-Sockel, zwei 46-polige BeagleBone-kompatible Cape-Steckleisten für eine größere Ökosystem-Erweiterung und ein Camera Serial Interface (CSI) für die direkte Integration. Für das Debugging steht ein JTAG-TAG-CONNECT-Footprint zur Verfügung, und der BeagleV-Fire unterstützt auch SYZYGY-kompatible Erweiterungen für FPGA-orientierte Peripherie.

Bild des BeagleV-Fire von BeagleBoard.org mit beschrifteten PortsAbbildung 3: Trotz seiner geringen Größe bietet das BeagleV-Fire von BeagleBoard.org mehrere physikalische Anschlüsse für die unmittelbare Anbindung von Anwendungen. (Bildquelle: BeagleBoard.org)

So erstellen Sie eine erste Linux-Konfiguration auf dem Einplatinencomputer BeagleV-Fire

Um eine leichtgewichtige Linux-Distribution für den BeagleV-Fire zu erstellen, müssen Entwickler zunächst eine geeignete Yocto-Project BSP-Schicht erhalten. Dadurch werden die U-Boot-Konfiguration, die Standard-Linux-Kernel-Konfiguration, Gerätebäume zur Unterstützung des Boards und Definitionen für die Peripherieunterstützung bereitgestellt. Ein GitHub-Repository unterstützt alle PolarFire-SoC-Evaluierungskit-BSPs, einschließlich des BeagleV-Fire.

Nach der Installation aller erforderlichen Yocto-Projekt-Abhängigkeiten bilden die folgenden Schichten die Grundlage für den Build und müssen geklont werden:

  • bitbake
  • meta-openembedded-core
  • meta-yocto (für die Poky-Referenzdistribution)
  • meta-mchp-common
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community
  • Zusätzliche Schichten, die für das Projekt erforderlich sind

Danach kann ein minimales Image mit dem Ziel MACHINE = "beaglev-fire" und einer kas-Konfigurationsdatei erstellt werden. Listing 1 zeigt eine Beispielkonfiguration:

Kopieren
header:
  version: 19
 
repos:
  openembedded-core:
    url: git://git.openembedded.org/openembedded-core.git
    # yocto-5.0.15
    commit: 6988157ad983978ffd6b12bcefedd4deaffdbbd1
    layers:
      meta:
 
  bitbake:
    url: git://git.openembedded.org/bitbake.git
    # yocto-5.0.15
    commit: 8dcf084522b9c66a6639b5f117f554fde9b6b45a
    layers:
      bitbake: disabled
 
  meta-yocto:
    url: git://git.yoctoproject.org/git/meta-yocto.git
    # yocto-5.0.15
    commit: 9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
    layers:
      meta-poky:
      meta-yocto-bsp:
 
  meta-mchp:
    url: https://github.com/linux4microchip/meta-mchp.git
    branch: scarthgap
    path: layers/third-party/meta-mchp
    layers:
      meta-mchp-common:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:
 
machine: beaglev-fire
 
 
local_conf_header:
  Users: |
    EXTRA_IMAGE_FEATURES = "allow-empty-password empty-root-password \
allow-root-login"

Listing 1: Hier sehen Sie eine Beispielkonfigurationsdatei, die alle zum Booten des BeagleV-Fire erforderlichen Artefakte in einer einfachen Shell erstellt. (Quelle des Listings: Microchip Technology)

Wenn Sie „kas build core-image-minimal“ ausführen, werden alle Build-Artefakte erstellt, die zum Booten des BeagleV-Fire in eine einfache Shell erforderlich sind, einschließlich der U-Boot-Binärdateien und eines FIT-Images, das den Linux-Kernel und Module, den Gerätebaum und das Root-Dateisystem enthält.

Nachdem ein minimales Linux-Image für den BeagleV-Fire mit Hilfe des Yocto-Projekts erstellt wurde, ist es dann möglich, den Standardverfahren zu folgen, um ein benutzerdefiniertes Image zu erstellen und das Build genau an die Anforderungen des Projekts anzupassen. In der Robotik und in Industriesystemen wird Linux beispielsweise häufig zusammen mit einem traditionelleren RTOS wie FreeRTOS oder Zephyr eingesetzt, um neben zeitkritischen Vorgängen auch eine erweiterte Verarbeitung zu ermöglichen. Diese Funktionalität wird durch den PolarFire-SoC von BeagleV-Fire gut unterstützt, der so konfiguriert werden kann, dass mehrere Betriebssysteme oder Bare-Metal-Anwendungen gleichzeitig ausgeführt werden können.

Angesichts der Tatsache, dass viele eingebettete Geräte eine Lebensdauer von 10 Jahren oder mehr benötigen, ermöglicht die Kombination aus offenem RISC-V ISA, Linux und Yocto-basierter Reproduzierbarkeit, dass sich PolarFire-SoC-basierte Plattformen durch regelmäßige lokale oder OTA-Updates an neue Sicherheitsbedrohungen und neue Anwendungsanforderungen anpassen können. Auf diese Weise bietet der Einplatinencomputer BeagleV-Fire einen ausgezeichneten Ausgangspunkt für die Einführung von Open Source und erhöht die Flexibilität und Langlebigkeit von intelligenten Edge-Systemen.

Fazit

Begrenzte Rechenleistung, deterministische Latenzanforderungen, Sicherheitsrisiken und lange Lebenszyklen können legitime Herausforderungen darstellen, wenn Linux in ressourcenbeschränkten eingebetteten Systemen eingesetzt wird. Der Einplatinencomputer BeagleV-Fire von BeagleBoard.org bietet eine hybride Architektur, die RISC-V-Linux-Fähigkeit mit FPGA-basierter deterministischer Logik und Hardware-Sicherheitsfunktionen kombiniert, um diese Herausforderungen zu bewältigen. In Verbindung mit dem Yocto-Projekt und den Open-Source-BSP-Schichten von Microchip können Entwickler diese Plattform nutzen, um maßgeschneiderte, rückverfolgbare Linux-Distributionen zu erstellen, die für langlebige Robotik-, IIoT- und Edge-Computing-Anwendungen optimiert sind.

DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Image of Brandon Lewis

Brandon Lewis

Brandon Lewis has been a technical writer and editor for over 15 years, serving as editor-in-chief at various electronics engineering trade publications. Brandon’s areas of focus include microcontrollers, multicore embedded processors, embedded Linux and real-time operating systems, industrial communications protocols, single-board computers and computer on modules, and other aspects of real-time computing. He is an accomplished podcaster, YouTuber, event moderator, conference chair, and product reviewer.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey