Login
Newsletter
Werbung

Do, 16. November 2017, 15:00

Warum Yocto eine gute Wahl für eingebettete und IoT-Projekte ist

Unterstützung durch Unternehmen und die Gemeinschaft

Auf der Webseite des Yocto-Projekts wird über das Ökosystem rund um Yocto Folgendes gesagt: »Nichts ist für ein Open-Source-Projekt so wichtig wie das Ökosystem von Einzelpersonen und Organisationen in seiner Umgebung.« Dies ist leicht einer der Hauptvorteile von Yocto. Der Wert der Gemeinschaft kann nicht genug betont werden; Support-Foren und Expertise sind leicht verfügbar, ebenso wie eine aktive Entwicklergemeinschaft, die Yocto vorantreibt. Als Open-Source-Projekt kann man es selbst an die Bedürfnisse anpassen oder jemanden finden, der es erledigt.

Yocto ist auch in der Branche weit verbreitet. Neben Halbleiteranbietern gibt es eine Reihe von Anbietern, die kommerziell unterstützte Yocto-Software und -Dienste anbieten. Die Seite der Yocto-Projektteilnehmer zeigt die Vielfalt der Branchenakteure, die Yocto einsetzen. Darüber hinaus tragen Brancheninitiativen wie die GENIVI Alliance und Automotive Grade Linux dazu bei, Yocto in der Automobilindustrie zu etablieren.

Werkzeuge und SDK

Wie bereits erwähnt, kann es sehr aufwändig sein, eine brauchbare Cross-Toolchain zu erhalten. Das Yocto-Projekt enthält Rezepte zum Aufbau einer voll funktionsfähigen Toolchain als Teil des Projektaufbaus. Diese Toolchain, die von der Yocto-Gemeinschaft auf einer Vielzahl von Architekturen und Plattformen getestet wurde, wird in den meisten Fällen ausreichen. Bei Bedarf kann diese Toolchain einfach mit Standard-Yocto-Rezeptmechanismen angepasst werden. Wenn der Ziel-Chip Funktionen besitzt, die nicht in der Standard-Toolchain aktiviert sind (z.B. benutzerdefinierte Anweisungen oder Optimierungen), ist die Angabe plattformspezifischer Optimierungsparameter eine einfache Ergänzung in der Plattform-Schicht. Wenn man eine vorgefertigte Toolchain benötigt, die von einem Drittanbieter bereitgestellt wird, sind in Yocto Mechanismen integriert, die dies ermöglichen. Unterstützung für mehrere Anbieter von kommerziellen Toolchains ist im Standard-Yocto-Quellcode verfügbar und kann mit relativ geringem Aufwand auf weitere Anbieter erweitert werden.

Yocto kann auch die benötigten Tools und Bibliotheken in einem SDK bündeln, das an Anwendungsentwickler geliefert werden kann. Dies ist einfacher, als dass solche Entwickler vollständige Yocto-Systembuilds ausführen müssen, und ermöglicht einen optimierten Entwicklungs-Workflow. Zugleich ist sichergestellt, dass die Entwickler über die richtigen Versionen aller Komponenten verfügen, die sie benötigen.

Nachteile von Yocto

Die Lernkurve mit Yocto ist recht steil. Die Terminologie allein kann entmutigend sein (z.B. was ist der Unterschied zwischen Yocto, Poky und OpenEmbedded?). Die Anzahl der Optionen zur Konfiguration des Ziels kann es schwierig machen, die beste Auswahl zu treffen. Ein einfaches System ist schnell zum Laufen zu bringen, indem man einem der Tutorials folgt, die mit einer einfachen Websuche verfügbar sind. Um jedoch zu verstehen, welche Änderungen für ein spezielles Design vorgenommen werden müssen, kann ein nicht trivialer Aufwand an Recherche und Untersuchung erforderlich sein. Sicherlich gibt es gute Gründe für die Komplexität und wir sind der Meinung, dass die oben genannten Vorteile die Mühe wert sind. Sobald man die ersten Schritte abgeschlossen hat, wird alles weitere viel schneller vonstatten gehen.

Für Entwickler, die an traditionelle Desktop- und Server-Software-Entwicklung gewöhnt sind, kann der Yocto-Workflow verwirrend sein. In einer Desktop-Entwicklungsumgebung stellt der Host-Betriebssystemanbieter im Allgemeinen einen Mechanismus zum Installieren neuer Pakete bereit. In Ubuntu zum Beispiel können neue Pakete einfach mit dem Befehl apt-get installiert werden. Die Pakete sind in vorkompilierten Binärdateien von Servern verfügbar, auf die über eine Internetverbindung zugegriffen werden kann. In Yocto muss man die Konfiguration ändern und neu erstellen, um zusätzliche Pakete hinzuzufügen. Es gibt keine im Internet gehosteten Paketbibliotheken, die generell verfügbar sind.

Das Arbeiten in einer Cross-Build-Umgebung kann sich ungewohnt anfühlen und erfordert, dass Entwickler sowohl das Host- als auch das Zielsystem verstehen. Man kann Code entwickeln, kompilieren (oder einfach in einer Skriptumgebung ausführen ) und schnell im Zielsystem testen, da dies schneller ist, als ein Bitbake- Build zu erstellen und ein neues Image auf dem Ziel bereitzustellen. Yocto unterstützt zwar auch die Entwicklungs direkt auf dem Zielsystem. Sobald der erforderliche Code jedoch entwickelt und debuggt wurde, ist ein zusätzlicher Schritt erforderlich, um diese Änderungen wieder in die Yocto-Build-Umgebung zu integrieren. Ein Mittelweg besteht darin, die Änderungen in der Yocto-Umgebung vorzunehmen, aber nur die aktualisierten Pakete bereitzustellen. Das Yocto-Build-System erzeugt Pakete in einem Standardformat (rpm, deb, ipk oder tar), das in ein laufendes System mit Dienstprogrammen auf dem Ziel wie rpm oder ipk installiert werden kann. Das ist in der frühen Entwicklungsphase nützlich, später sollte man aber darauf achten, dass die Unterschiede zwischen Test- und Produktionsabbildern minimiert oder ganz beseitigt werden.

Schließlich können die Build-Zeiten für einen vollständigen Yocto-Build erheblich sein. Das ist im Allgemeinen aufgrund der großen Anzahl von Paketen, die für ein voll funktionsfähiges Linux-System erstellt werden müssen, unvermeidbar. Es kann jedoch durch den gemeinsamen Statusmechanismus von Yocto erheblich gemildert werden.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung