Der Einstieg in Yocto erfordert etwas Arbeit. Grundlegende Konfigurationen und die notwendigen Werkzeuge wie Compiler und Linker sind Teil des Yocto-Pakets beziehungsweise werden im Rahmen der ersten Nutzung nachgeladen. Vor allem die enthaltene Dokumentation sowie Vorlagen erleichtern den Start immens. Hersteller wie Garz & Fricke geben dem Kunden darüber hinaus praxisrelevante Beispiele und Schritt-für-Schritt-Anleitungen an die Hand.
Die Herangehensweise und Nutzung von Yocto durch System- und Anwendungsentwickler unterscheidet sich (Bild 3). Für beide gilt: Sie können eine Vielzahl an Sprachen und Frameworks nutzen.
Yocto bietet die entsprechende Basis, um die Softwarequellen von Grund auf zu übersetzen. Systementwickler können das „pure“ Yocto von der Website des Software-Projekts laden sowie zusätzliche Komponenten passend zur eingesetzten Hardware, oder sie können auf eine bereits angepasste Yocto-Umgebung des Chipherstellers zugreifen. Anwendungsentwickler greifen dagegen auf vorbereitete beziehungsweise angepasste Versionen der Gerätehersteller zu, die von deren Systementwicklern erstellt wurde.
Konfigurationen werden in Yocto in sogenannten Rezepten abgelegt. Diese Rezepte lassen sich sichern und wieder herstellen und können so, auch nach vielen Jahren, reproduziert werden. Die Rezepte enthalten Konfigurationen, die steuern, wie die Software-Komponenten gebaut werden. So liefert zum Beispiel Garz & Fricke mit jedem Board ein „Board Support Package“ mit, das dem Entwickler alle Rezepte zur Verfügung stellt. So kann der Kunde weitere Software-Bibliotheken sowie eigene Anwendungen direkt in den Build-Prozess einbinden oder mit nur wenigen Anpassungen den Kernel neu konfigurieren und kompilieren.
Hier kommt ein großer Vorteil von Yocto gegenüber herkömmlichen GNU/Linux-Distributionen zum Tragen. Die Änderungen des System-Entwicklers bleiben nachvollziehbar. Er kann das Software-Projekt zu einem definierten Stand einfrieren. Auch Jahre später kann ein solches Projekt wieder aufgenommen und weiterentwickelt werden. Zum Beispiel dann, wenn Sicherheitslücken geschlossen werden sollen.
Mit einer üblichen Distribution kann es in solchen Fällen vorkommen, dass sich Bibliotheken und Werkzeuge bereits dermaßen weiterentwickelt haben, dass es unmöglich ist, die, aus der fortgeschrittenen Sicht, uralte Software zu bearbeiten, geschweige denn zu übersetzen. Im Bereich der Embedded-Systeme, die wie Verkaufsautomaten oder Kassensysteme deutlich längere Lebenszyklen als ein Desktop-System haben, ein absolutes No Go.
Yocto konserviert alle Rezepte sowie den Entwicklungsweg zum fertigen Binary Image derart, dass wenn die „Konserve“ wieder ausgepackt wird, sich das gewünschte Binary mit nur einem Befehl erneut erzeugen lässt.
Als der perfekte Partner für die Gestaltung und Programmierung der grafischen Oberfläche hat sich für Garz & Fricke sowie Kunden und Partner das Framework Qt gezeigt. Dabei passt sehr gut, dass Qt zu den Beteiligten des Yocto-Projekts gehört.
Die Arbeit mit Qt auf Basis von Yocto beginnt meist mit dem „Qt Creator“, einem Tool zur Programmierung von grafischen Benutzeroberflächen (GUI) mit C++. Seit Qt5 kann QML teils sogar in HTML programmiert werden.
Im Qt Creator stehen drei Wege der Programmierung offen. Der Entwickler kann direkt den Quellcode schreiben oder aber er nutzt einen sogenannten WYSIWYG-Editor. Bei Qt ist das der UI Designer. Hier ordnet der Entwickler grafische und andere Elemente an und sieht, was er bekommt: Eine in mehreren Ebenen geschachtelte Oberfläche mit darunter liegender Programm-Logik (Bild 4).
Als dritte Möglichkeit der GUI-Erstellung erlaubt der UI Designer, Vorlagen aus anderen Anwendungen wie dem Bildbearbeitungsprogramm Photoshop zu importieren und zur GUI weiterzuentwickeln. Viele Entwickler kombinieren die drei Wege. Mit dem eigentlichen Betriebssystem kommt der GUI-Entwickler nicht zwingend in Berührung.
Mit dieser deklarativen Programmierung in QML lassen sich die Oberflächen intuitiv beschreiben. Dabei wird Skalierung unterstützt, was die Entwicklung flexibler macht, weil nicht mehr jedes Element bereits von Anfang an aufs Pixel genau festgelegt werden muss. Zudem können Grafiken und Videos in die grafische Benutzeroberfläche eingebettet werden. Hinzu kommt die OpenGL-Unterstützung, sodass bei passendem Board und Grafikchip die Anzeige der GUI, Effekte und Anima¬tionen sowie Videos von einer Hardware-Beschleunigung profitieren.
Der Qt Creator unterstützt den Entwickler mit weitreichenden Möglichkeiten zur Fehlersuche und zur Optimierung. So lassen sich unter anderem Tests bereits in der Entwicklung integrieren. Außerdem erlaubt die Entwicklungsumgebung, den Programmablauf beliebig oder an definierten Punkten zu stoppen. Für eine möglichst gute Darstellungsleistung hilft der Creator dem Entwickler mit Analysewerkzeugen, schwergewichtige Elemente oder unnötige Wiederholungen zu identifizieren.
Wie Qt die Arbeit der Entwickler vereinfacht, zeigt ein weiteres Beispiel aus der Praxis. Für einen Automaten, den Garz & Fricke mit Displays samt Ansteuerung ausstatten sollte, waren ursprünglich zwei Bildschirmen geplant. Trotz eines funktionierenden Prototypen entschied man sich, auf eines der Displays zu verzichten.
Statt die Software- und GUI-Entwicklung neu starten zu müssen, konnten die Entwickler die Konzeptänderung hin zu einem Screen innerhalb kürzester Zeit im bestehenden Softwareprojekt umsetzen. Dabei hatten die Änderungen an spezifischen Ausgangsgrafiken noch den größten Anteil. Die erforderlichen Anpassungen an Layout, Bildschirmführung und Bedienlogik konnten dank des guten Programmiermodells in Qt und QML rasch erfolgen.
Mit der Kombination aus Qt, das Entwickler aktiv in ihrer Arbeit unterstützt, und Yocto, das ebenso flexibel wie nachvollziehbar nutzbar ist, ergeben sich für Hersteller von Embedded Systems weitreichende Möglichkeiten für moderne, leistungsfähige und zukunftssichere Systeme. Mit dieser Basis lassen sich industrielle Anforderungen nachvollziehbar umsetzen.
Lizenzfrage |
---|
Qt nutzt eine duale Lizenzierung. Grundsätzlich ist das gesamte Framework Open Source und unterliegt der LGPLv3 (GNU Lesser General Public License, Version 3). Damit unterliegen Qt-Nutzer gewissen Pflichten. So kann Qt nicht statisch in das System-Binary einkompiliert, sondern nur dynamisch verlinkt werden. Soll es statisch inte¬griert werden, muss auch der gesamte Source Code des Binarys offengelegt werden. Außerdem muss dem Abnehmer ermöglicht werden, Veränderungen an den Softwarekomponenten durchzuführen, die der (L)GPLv3 unterliegen. In einigen Fällen soll das Anwendern aber nicht möglich sein, um zum Beispiel die Funktionsfähigkeit des Produkts zu gewährleisten oder Betriebsgeheimnisse zu wahren. In diesem Fall kann das entwickelnde Unternehmen zu einer kommerziellen Qt-Lizenz greifen, die es dann von diesen und anderen Pflichten befreit. |
Christoph Kutzera
ist Sales Engineer und Leiter der IT beim Hamburger Mikroelektronik-Spezialisten Garz & Fricke. Das Unternehmen entwickelt Lösungen in den Bereichen „Vending und Telemetrie“ sowie „Embedded Systems“. Christoph Kutzera ist außerdem Autor des 2009 veröffentlichten Buchs „Softwaretests und Embedded Systeme: Praktische Einführung von automatischen Komponenten-, Integrations- und Regressionstests“.
kutzera@garz-fricke.com