Das Yocto Project

Das Yocto Project

Linux in
Embedded-Projekten

Bis zur Jahrtausendwende hat sich Open-Source-Software in vielen Branchen etabliert und schnell ihre heutige Position eingenommen. Aktuell befindet sich Open-Source-Software auf den meisten Servern, die das Internet antreiben, im Einsatz. Ferner arbeitet eine Vielzahl von Datenbanken auf dem Open-Source-Betriebssystem Linux. Auch Anbieter von Cloud Services nutzen oft Open-Source-Software. Darüber hinaus verzeichnet Linux eine zunehmende Verwendung für verschiedene Embedded-Anwendungen. Allerdings ist der Markt sehr fragmentiert.
Anwender, die die für ihr Embedded-Projekt eine Linux Distribution suchen, stehen vor einem labyrinthartigen Auswahlprozess. Im Wesentlichen gibt es vier Alternativen: Die erste stellt eine PC-basierte Linux Distribution wie Fedora, Ubuntu oder Debian dar. Diese sind kostenlos bzw. als kommerzielle Versionen wie Red Hat oder Suse verfügbar. Für Embedded-Projekte erweisen sich diese Distributionen oft nicht als ideal, denn sie wurden für PC-Hardware entwickelt, enthalten vielen, für Desktop- und Server-Anwendungsfälle notwendigen Packages und bieten oft einen zu großen Bedarf an Arbeits- und Festplatten-Speicher. Außerdem unterstützen sie häufig verschiedene CPU-Architekturen und SoCs gar nicht oder nur sehr unzureichend. Eine zweite Möglichkeit heißt ‚Do-it-Yourself‘. Entwickler können Linux Kernel Sources von kernel.org, die GNU Toolchain von fsf.org und andere erforderliche Software von den Internet-Seiten der verschiedenen Linux Foundation Workgroups herunterladen, und dann selbst integrieren und testen. Diese Vorgehensweise nutzt dann, wenn Entwickler sich Fertigkeiten und Know-how aneignen möchten. Meist verschlingt diese Vorgehensweise jedoch mehr Zeit als Auftraggeber üblicherweise bei einem professionellen Projekt bieten. Eine dritte Option ist, die Linux Distribution von Halbleiter- oder Board-Herstellern zu nutzen. Allerdings haben solche Lösungen oft einen limitierten Fokus. Hinzu kommt, dass es oft Updates, Fehlerbehebungen oder Support fehlen. Dies kann dazu führen, dass Anwender auf abgekoppelten oder forked Versionen auf der Strecke bleiben. Hingegen stehen Entwicklern in der letzten Kategorie der kommerziellen Embedded Linux Distributionen sorgfältig getestet und einschließlich umfassender Wartung und Updates zur Verfügung, die Projekt-Manager meist für unerlässlich halten. Damit eignen diese sich besser für Embedded-Projekte als die drei anderen aufgeführten Varianten. Ihnen liegt ein sehr straffer Entwicklungszeitplan zugrunde, wie es oft bei Consumer-Geräten der Fall ist. Aber auch langlebige Investitionsgüter, vor allem im Industrieanlagenbereich oder bei Luftfahrt oder Medizintechnik, sind mit kommerziellen Linux-Distributionen aufgrund lang-jähriger Wartung und Updates gut beraten. Ausgehend von den Anforderungen für Wartung, Support, Updates und Security Fixes, können Projekt-Manager – zusätzlich zu Geschäftsrisiken- und Kostenbetrachtungen – eine Entscheidung treffen, welche der oben genannten Vorgehensweise sich am besten eignet.

Herausforderung Fragmentierung

Doch es geht um mehr. Falls z.B. Commercial Linux die Wahl ist, werden vielleicht nicht alle Leistungsmerkmale vom aktuellen Board Support Package (BSP) unterstützt. Oder ein Hersteller stellt ein BSP zur Verfügung, das nur eine ältere Linux Version unterstützt. So ist Linux mittlerweile Bestandteil vieler Embedded-Projekte, es stellt jedoch Entwickler aufgrund seiner Fragmentierung – Kernel-Version, Bibliotheken, Compiler, Middleware, BSPs und SDKs – vor zunehmend schwieriger werdenden Herausforderungen. Bei der Entwicklung eines skalierbaren Linux-Systems spielen die Verfügbarkeit mehrerer zusammen passender Teile von Software (Versionsabhängigkeit) und ein Set zugehöriger Tools eine Rolle. Nimmt man den üblichen Open-Source Input wie einen Kernel, User Space Packages und Patches zusammen mit spezifischen Anforderungen wie eine Filesystem-Größe und Kernel-Konfiguration und nutzt die geeignete Cross-Toolchain, können für verschiedene Hardware-Architekturen sehr unterschiedliche Ergebnisse entstehen. Die Herausforderungen sind zahlreich. So gibt es kein gemeinsames Repository für Elemente wie den Kernel oder den User Space. Auch gibt es keinen gemeinsamen Satz an Methoden für Cross-Architekture-Builds. Unterschiedliche Tools wie Toolchains, Makefiles, Compiler oder Debuggers sind ebenfalls charakteristisch. Ferner fehlen gemeinsame Build Systeme. Zudem gibt es viele Beteiligte: Projekt-Manager, Siliziumanbieter, die Chips verkaufen möchten, Board-Hersteller mit Custom oder Standard Designs wie Compact PCI oder ATCA im Programm, Consulting oder Engineering Firmen, Software-Hersteller, die Tools verkaufen, oder auch Silizium-Anbieter mit speziellen und optimierten Toolchains für spezifische Hardware im Angebot. Ein Best-Case-Szenarion erfordert, dass alle Beteiligten sich auf ihre jeweiligen Stärken konzentrieren und Beiträge für Open Source dementsprechend leisten.

Yocto Project: Aktuelle Version in einer Linux-Distribution

Diese Idee verbirgt sich hinter dem Yocto Project – die kontinuierlich aktualisierten Versionen bzw. die wesentlichen Spezifikationen, die Basisbestandteile in einer Linux-Distribution enthalten sind: Kernel, Toolchain und Build System sowie Packages. Das Yocto Project ist keine Embedded Linux Distribution. Es ist im Wesentlichen ein Programm bzw. eine Plattform, die alle Beteiligten auffordert, Beiträge zu leisten, um die gemeinsame Entwicklung mit einem gemeinsamen Set an Tools und Praktiken voranzutreiben und so Entwickler zu unterstützen, eine größere Cross-Platform-Kompatibilität und -Interoperabilität zwischen Komponenten zu erreichen. Mit der Linux Foundation, dem Industriekonsortium zur Förderung von Linux, wurde das Yocto Project 2010 als Open-Source Kollaborationsprojekt von Hardware-Herstellern, Open-Source-Herstellern und Elektronikunternehmen gegründet. Es gilt Verfahren, Werkzeuge und Methoden bereitzustellen, die Entwickler bei der Realisierung hardware-unabhängiger Embedded Linux-Systeme unterstützen. Durch die Bereitstellung eines gemeinsamen Build Systems und gemeinsam entwickelter Technologien liefert das Yocto Project Entwicklern einen wertvollen Startpunkt und hilft ihnen, doppelte Arbeiten und unnötigen Wartungsaufwand zu vermeiden. Siliziumhersteller können Treiber für ihre neuesten Chips anbieten. Board-Hersteller ergänzen dies mit Middleware für ein BSP. Kommerzielle Linux Anbieter können eine stabile Linux Distribution mit vielen Packages anbieten, die getestet sind, unterstützt und gewartet werden und auch auf verschiedenen Hardware-Architekturen laufen. Tool-Hersteller können ihre relevante Toolchain in eine bestimmte Yocto-Version integrieren.

Linux Distribution aus diversen Quellen, Projekten und Toolchains

Das Yocto Project besteht aus zwei Projekten einschließlich OpenEmbedded Core mit einem Basis Layer von Recipes, Classes und zugehörigen Dateien. Der zweite Teil ist das Common Build System, basierend auf Bitbake und Poky. Dies sind Open-Source Build Tools und Eckpfeiler des Yocto Projects. Bild 1 zeigt den Workflow für die Realisierung einer Linux Distribution aus verschiedenen Quellen, Projekten und Toolchains einschließlich des Yocto Project Kernels und Bibliotheken. Metadaten mit Informationen über Source Files einschließlich Location Adresse (z.B. via http oder ftp) und Maschinen-Konfigurationsdaten bilden die Grundlage, die das BSP entsprechend der Treiber für Schnittstellen, I/O-Ports und Speicher-Anforderungen konfigurieren. Auch Policy Configurations, die das Verständnis von Patches und Updates ermöglicht, gehören dazu. Ebenfalls verfügbar sind Upstreams. Damit kann ein Up-to-Date Packet oder Patch, falls es nicht verfügbar ist, zurück geschickt und im System aktualisiert werden. Die Compile Run Operation liefert eine Auswahl an binären Package Output Formaten – Debian, RPM oder IPK. Anschließend erfolgen Testoperationen, bevor ein Root File System Image erzeugt wird, das via NFS oder ftp an ein Embedded Device oder in Flash oder ROM oder auf Festplatte gespeichert wird. Ferner bieten Yocto Project Layer einen Mechanismus zur Einbindung von zusätzlichem Inhalt. Dies hilft bei der Organisation von Funktionalität in separate Packages. BSPs z.B. werden normalerweise als Layer zur Verfügung gestellt.

Keine Bindung an einen Hersteller

Das Common-Build System des Yocto Projects in Verbindung mit gemeinsam entwickelten Technologien bietet die branchenweit besten Tools und Methodiken zur Entwicklung individueller und doch kompatibler Embedded Linux Systeme. Zum Yocto Project kompatible Distributionen erzielen eine bessere Interoperabilität. Teile davon können kombiniert oder ersetzt werden und arbeiten zusammen. Das Yocto Project spart somit Zeit und Ressourcen, die man andernfalls mit grundlegenden Arbeiten wie Portierung, Duplizierung sowie Re-Implementierung und Wartung verschwenden würde. Damit bleibt den Entwicklern mehr Zeit zur Realisierung wichtiger Produkt-Alleinstellungsmerkmale. Zusammengenommen bedeutet dies eine verbesserte Cross-Platform Kompatibilität und Komponenten-Interoperabilität, eine erhöhte Portierbarkeit von Software und Middleware sowie gesenkte Kosten für Wartung und bessere Wiederverwendbarkeit bzw. Reuse und Zusammenarbeit zwischen kommerziellen und Open-Source-Communities. Ein wesentlicher Vorteil für Projekt-Manager ist, dass es keine Bindung an einen bestimmten Hersteller gibt, wenn sie die kostenlos verfügbare Yocto Project-Infrastruktur nutzen oder mit Herstellern arbeiten, die diese einsetzen. Das Yocto Project erfreut sich wachsender Erfolge in der Embedded Welt und etabliert sich in vielen verschiedenen vertikalen Märkten. Der Bereich Networking gilt als Wegbereiter, unmittelbar gefolgt vom Consumer-Bereich. Auch in der Industrie-Automatisierung, in den Bereichen Medizintechnik, Luftfahrt und Verteidigung sowie zunehmend in In-Vehicle Infotainment-Systemen arbeitet man im Rahmen des Yocto Projects.

Gemeinsames Build System mit Layern und Core-Technologie

Es gibt viele Vorteile bei der Nutzung eines Commercial Linux Anbieters wie Wind River. Der Hauptvorteil ist Zeit. Denn es braucht viel Zeit, sich Wissen über die Code Basis anzueignen. Auch Aufgaben wie das Fehlerfinden, -beheben und Einpflegen von Änderungen erfordern Zeit. Diese Aufgaben werden bereits vom Anbieter erledigt. Wind River leistet beispielsweise aktive Beiträge zu Fixes und Weiterentwicklungen. Zusammenfassend lässt sich sagen, dass das Yocto Project einen wesentlich effizienteren Embedded-Linux-Entwicklungsprozess ermöglicht und Entwickler vermeiden können, bei jedem Projekt von vorne anfangen zu müssen. Indem es ein gemeinsames Build System mit Layern und Core-Technologie zur Verfügung stellt, hilft das Yocto Project bei der neuen Definition und Vereinheitlichung eines stark fragmentierten Marktes. Software- und Hardware-Hersteller, die die Yocto Project Umgebung unterstützen, helfen ihren Linux-Kunden, Cross-Platform-Kompatibilität und -Komponenten-Interoperabilität zu realisieren, um eine höhere Wiederverwendbarkeit zu erreichen und Risiken sowie die Gesamtkosten zu senken.

Wind River GmbH
www.europe.windriver.com

Das könnte Sie auch Interessieren