Suchen

Embedded Linux: kompletter Eigenbau, oder mit eingebautem Support?

| Autor / Redakteur: Davide Ricci * / Sebastian Gerstl

Heutzutage kommt es öfter vor, dass bei der Planung eines neuen Embedded-Projekts Linux als Betriebssystem in Betracht kommt. Aber auch erfahrene Embedded-Entwickler müssen sich hier erst mit einigen neuen Gedanken anfreunden. Was, wenn man etwa Yocto möchte – aber den Aufwand scheut?

Firmen zum Thema

Wer sich selbst als versierter Embedded-Entwickler zum ersten Mal auf Linux-Reise begibt, muss sich auf einige neue Erfahrungen einstellen – vor allem im Umgang mit dem Open-Source-Gedanken.
Wer sich selbst als versierter Embedded-Entwickler zum ersten Mal auf Linux-Reise begibt, muss sich auf einige neue Erfahrungen einstellen – vor allem im Umgang mit dem Open-Source-Gedanken.
(Bild: gemeinfrei / CC0 )

Linux ist eindeutig eine beliebte Lösung. Tatsächlich heißt es, dass Linux auf jedem Supercomputer des Top500-Projekts eingesetzt wird. Wegen seiner Anbindung an Android ist es auch eines der am weitesten verbreiteten Allzweck-Betriebssysteme. Seine Offenheit bedeutet, dass jeder Linux für den Einsatz auf einer bestimmten Hardware-Plattform konfigurieren kann, was es auch für Embedded-Anwendungen populär gemacht hat.

Während der Grad der Akzeptanz in den einzelnen Branchen variiert, ist die Nutzung von Linux in allen Branchen ein genereller Trend. In Rechenzentren ist die Einführung fast vollständig abgeschlossen und man konzentriert sich nun auf die Effizienzsteigerung von Linux-basierten Systemen. Im medizinischen Markt nimmt die Akzeptanz nach einigen Fehlstarts wieder zu.

Im Automobil- und Transportbereich ist Linux im Infotainmentbereich gut etabliert, und breitet sich schnell auf andere Märkte aus. Und natürlich nimmt der Consumer-Bereich Linux sehr stark an, und zwar zunehmend in ressourcenbeschränkten Geräten wie IoT und Wearables.

Auch bei der Entwicklung von sicherheitskritischen Systemen gibt es Möglichkeiten, Open Source zu nutzen. Diese Systeme müssen Zertifizierungsprozesse für die von ihnen implementierte Software durchlaufen, und zwar jedes Mal, wenn neue Software hinzugefügt wird. Obwohl Linux nicht für jede Anwendung, insbesondere für diese Art von Systemen, geeignet ist, kann es sehr hilfreich sein, es als Ausgangspunkt zu verwenden, um einen Prototypen schnell zu erstellen und erste Ideen auszuarbeiten.

Die Offenheit von Linux bringt Entwickler oft an Weggabelungen, die sie effektiv dazu zwingen, eine wichtige Entscheidung in einem sehr frühen Stadium des Projekts zu treffen. Sie können sich für eine Partnerschaft mit einem Softwareunternehmen entscheiden, das eine Enterprise-Linux-Distribution anbietet, oft mit eigener Hardwareplattform, die sie unterstützen können. Oder sie können mit einem flexiblen Distributions-Builder wie dem Yocto-Projekt beginnen, ihre eigene Hardware-Plattform entwickeln und den gesamten Prozess selbst verwalten. Der erste Gedanke eines Ingenieurs kann durchaus sein, sich für Letzteres zu entscheiden; schließlich bleiben so Wahlmöglichkeiten erhalten. Andere sehen vielleicht den Nutzen in der Wahl eines voll unterstützten Design-Flows, insbesondere wenn die Softwareentwicklung außerhalb der Kernstärken des Entwicklungsteams liegt. Beide haben Vorzüge und, wie wir feststellen werden, haben beide Konsequenzen.

Du weißt nicht, was du nicht weißt

Eine dieser Konsequenzen sind die Kosten. Open-Source-Software ist natürlich ohne jegliche Vorabkosten verfügbar, und das kann ein überzeugender Grund sein, sie zu nutzen. Aber Teams werden feststellen, dass die meisten Projekte, und eingebettete Projekte im Besonderen, zusätzliche Kosten für Wartung und Support benötigen.

Es ist selbst für erfahrene Teams sehr schwierig, die Kosten für die Wartung und den Support eines Systems, das auf einer nicht selbst entwickelten Technologie basiert, genau zu budgetieren. Das ist eine der Realitäten bei der Verwendung jeder Open-Source-Technologie, egal ob es sich dabei um Open-Source-Software oder, wie heute ebenfalls üblich, um Open-Source-Hardware handelt. Noch wichtiger ist, dass für unerfahrene Entwicklungsteams die Auswirkungen der Wartung und Unterstützung von Open-Source-Technologie für ihr eigenes Produkt möglicherweise nicht einmal im technischen Anforderungsdokument erwähnt werden, zumindest nicht beim ersten Linux-Projekt.

Der Grund für diesen versteckten Aufpreis ist schlicht, dass ein Open-Source-Projekt immer in Entwicklung ist, eine Innovationsmaschine, die nie aufhört. Mit vielen Millionen Zeilen Open-Source-Code müssen die Entwicklungsteams entscheiden, wann und ob sie diesen Entwicklungspfad verfolgen oder ob sie ihre eigene Version der Distribution einfrieren, abzweigen und pflegen wollen. Um die Patches (typischerweise Sicherheitspatches), die zur Verfügung gestellt werden, nutzen zu können, müssen sie möglicherweise dem Projekt folgen.

Die Wahl eines herstellerunterstützten Linux für Unternehmen kann die Auswirkungen mildern, jedoch ist sie mit einer gewissen Bindung an diesen Hersteller verbunden: Während es immer noch möglich ist, das zugrunde liegende Betriebssystem anzupassen, kann dies allerdings den gewährten Support des Herstellers gefährden.

Embedded-Linux-Woche: Programm und Anmeldung Auf der Embedded-Linux-Woche in Würzburg können Sie Ihr Wissen weiter vertiefen. Prämierte Referenten geben dort Seminare für Einsteiger, Fortgeschrittene und Experten zu verschiedenen Themen der Embedded Linux-Programmierung. Mehr Informationen zu Kursen und Anmeldung finden Sie auf www.linux4embedded.de.

Das Yocto-Projekt – Linux im Eigenbau, schnell und einfach?

Portabel und dennoch kompatibel zu bleiben ist ein wichtiger Aspekt von Open-Source-Linux. Das Yocto-Projekt ist ein Linux-Distributions-Builder für eingebettete Systeme, der von Natur aus anpassbar und zwischen den führenden Befehlssatzarchitekturen (ISAs), die heute in eingebetteten Geräten verwendet werden, portierbar ist.

Es wird mit Kernel, wesentlicher Middleware und Tools geliefert. Die Zielarchitektur kann bei der Erstellung ausgewählt werden, so dass die gleiche Distribution vom Entwicklungsteam auf jede unterstützte ISA portiert werden kann; die Entscheidung muss erst im weiteren Verlauf des Entwicklungsprozesses getroffen werden. Dadurch können andere Aspekte des Designs die Wahl des am besten geeigneten Prozessors beeinflussen, anstatt von Beginn an gebunden zu sein an das im unterstützten Paket zur Verfügung gestellte Gerät.

Genau wie Linux im Allgemeinen ist das Yocto-Projekt extrem populär geworden und bildet die Basis einer Software-Plattform für Embedded-Geräte. Sie umfasst den Kernel selbst und die minimale Menge an Middleware, die zur Unterstützung des Anwendungscodes notwendig ist. Durch eben dieses so genannte Mikro-OS oder Minimal-OS zeichnet sich das Yocto-Projekt heute aus. Die Fähigkeit von Linux, Container zu unterstützen, um andere Middleware abzuschotten, ist ebenfalls ein wichtiger Aspekt, der aber schnell zu einer Fragmentierung des darunter liegenden Betriebssystems führen kann.

Der Einstieg in das Yocto Projekt ist extrem einfach. Das Projekt wird von GitHub geklont, indem der neueste Branch heruntergeladen wird. Dann kann mit Hilfe von BitBake, dem Build-System des Yocto-Projekts, ein Image erstellt werden. Typischerweise wird dies beim ersten Mal ein Image für ein Intel-Target sein. Dies dauert vielleicht einen halben Tag und Ihre Erfahrung wird positiv sein. Das wird für Entwickler ermutigend sein und den Ausschlag geben, sich für die Nutzung des Yocto Project zu entscheiden.

Basierend auf diesen ersten Erfahrungen können Aufgaben verteilt und ein Team zusammengestellt werden. Der Schätzung nach bedarf es einer Person für den OS-Build, zweier Entwickler für die Benutzeroberfläche, eines Entwicklers für die Connectivity-Middleware, eines weiteren für die Datenanalyse-Algorithmen und zweier für das Testen und die Benutzerfreundlichkeit.

Anhand dieses Projektteams wird klar, dass der Großteil des Aufwands auf das konzentriert ist, was das Produkt auszeichnet, während das, was es nicht unterscheidet - das Betriebssystem - die wenigsten Ressourcen bindet. Für viele Hersteller mag dies der verlockendste Grund sein, Open-Source-Software einzusetzen.

Die längerfristige Realität

Dieses Szenario beschreibt perfekt das, was das Yocto-Projekt bieten soll, einen schnellen Weg zur Produktentwicklung. Was aus dieser ersten Erfahrung nicht klar ist, ist das, was das Yocto-Projekt nicht bieten soll, und das ist die Minderung des Risikos der langfristigen Stabilität. Schließlich ist das Yocto Project, wie alle Open Source Projekte, ein Innovationsmotor, der nie aufhört.

Betrachtet man nur die reinen Supportkosten, basierend auf einem durchschnittlichen weltweiten Entwicklergehalt von ca. 100.000 Dollar, beträgt die Wartung des Produkts für fünf Jahre mit dem Äquivalent eines Vollzeit-Entwicklers 500.000 Dollar. Die Kosten für die Entwicklung auf der Basis von sieben Personen für acht Monate betragen weitere 500.000 Dollar, so dass das Gesamtprojekt von Entwicklung und Wartung 1 Million Dollar kostet. Die Wartungskosten entsprechen 50% der Projektkosten, und dies ist eine sehr optimistische Schätzung, die sich in den meisten Fällen als zu niedrig erweist. Die Erfahrung zeigt, dass bei Linux-Projekten im Embedded- und IoT-Bereich die Wartungskosten über einen Zeitraum von fünf Jahren das 5-fache der ursprünglichen Entwicklungskosten betragen. Tatsächlich ist es mit zig Millionen Codezeilen im Yocto-Projekt und vielen Entwicklern, die daran arbeiten, unvermeidlich, dass Fehler im Code gemacht und behoben werden, was es zu einer sich ständig ändernden Plattform macht.

Das bedeutet, dass die Kosten für die Wartung die Kosten für die Entwicklung schnell übersteigen können; das Budget, das für die Differenzierung des Produkts vorgesehen ist, wird durch die Unterstützung der Open-Source-Software verbraucht, was einige der Ingenieure, die an der Benutzeroberfläche und der Konnektivität arbeiten, dazu zwingen kann, zum Betriebssystem-Support überzugehen.

Wenn der Kernel modifiziert wurde, was bei einem eingebetteten System oft der Fall ist, können die Patches, die zur Behebung von generischen Problemen herausgegeben werden, die Probleme mit einem verzweigten Kernel beheben oder auch nicht. Dies verstärkt das Supportproblem und trägt zu den steigenden Kosten für Entwicklung und Support bei. Wenn das Produkt für seinen Endmarkt zertifiziert werden muss, kann eine Änderung des Kernels oder eines Teils der Software diese Zertifizierung ungültig machen, was es noch schwieriger macht, die Patches weiter zu verwenden.

Ein weiterer wichtiger Punkt, den es zu beachten gilt, ist die gesetzliche Verpflichtung, Lizenzen für jede ausgelieferte Software zu liefern. Dies würde auf das Entwicklerteam oder den Teamleiter fallen und für jegliche Middleware gelten. In einem gut unterstützten Projekt wie Linux gibt es eine riesige Bibliothek von Middleware-Lösungen zur Auswahl, aber nicht alle sind für internationale Märkte geeignet und können Handelsembargos unterliegen.

Die Kosten für den Support eskalieren schnell, und zwar noch bevor das Produkt ausgeliefert wurde. Laufender Support wird nicht unbedingt einfacher, so dass die Kosten für Wartung und Support für jeden Hersteller, der die inhouse Lösung wählt, wirklich unbekannt sind. Es gibt kommerzielle Linux-Implementierungen für Unternehmen, um dies abzumildern, aber sie sind an den Hersteller gebunden und nicht flexibel genug. Was also wäre ein besserer Weg?

Ein kommerzielles Yocto-Angebot

Bei eingebetteten Anwendungen kann die Wahl einer unterstützten Linux-Distribution für Unternehmen mit einer Herstellerbindung einhergehen. Wenn die Distribution auf eine Enterprise-Umgebung ausgerichtet ist, ist es wahrscheinlich, dass alle Änderungen an der Distribution - die normalerweise für eingebettete Projekte wünschenswert sind, um die unnötige Middleware zu entfernen - das Supportpaket wahrscheinlich ungültig machen. Ebenso kann die Wahl einer Distribution, die auf ein Referenzdesign portiert wurde, sehr wohl Ihr Projekt an denselben Prozessor fesseln, was eine freie Auswahl auf Hardwareebene einschränkt.

Aus guten Gründen ist das Yocto Projekt eine beliebte Wahl für die Embedded Entwicklung geworden. Aber wie bereits erwähnt, bietet die Entscheidung für Open Source zwar viele technische Vorteile, aber jede Produktentwicklung bringt andere Verpflichtungen mit sich, die weit über die Plattform hinausgehen. Für Hersteller, die auf den industriellen und medizinischen Sektor ausgerichtet sind, müssen Produkte mindestens fünf bis zehn Jahre nach der Auslieferung unterstützt werden. Diese Unterstützung muss sowohl die Hardware – die Kontinuität der Versorgung des Prozessors ist wichtig – als auch die Software abdecken, was die Möglichkeit, den Kernel patchen zu können, ebenso wichtig macht.

Wind River ist ein Gründungsmitglied des Yocto-Projekts. Ein Wind River Linux Yocto-Projekt-kompatibles Produkt ist technisch nicht von dem Yocto-Projekt zu unterscheiden und bietet dennoch volle Unterstützung, die zu jedem Zeitpunkt des Designprozesses angewendet werden kann. Änderungen am Kernel machen diese Unterstützung nicht ungültig, und es besteht nie die Notwendigkeit eines Upgrades, da durch den Erwerb einer Wind River Linux-Subscription eine Version Ihrer spezifischen Distribution erhalten bleibt und es effektiv keine Bindung an einen Hersteller gibt. In diesen Punkten unterscheiden sich kommerzielle Linux-Distributionen wirklich. Darüber hinaus wird jedes Wind River Linux-Build mit einem eigenen Openchain Compliance Envelope geliefert, wodurch die Regulierung der Distribution wesentlich einfacher wird.

Die Reise der Pinguin-Entwickler

Die „Reise“ des Entwicklers beim ersten Einsatz von Open Source Software beginnt oft mit einer positiven Erfahrung. Die Realitäten der Produktentwicklung verschwinden jedoch nicht bei der Wahl einer Open-Source-Plattform. Wie hier besprochen, können die Herausforderungen sogar zunehmen und zumindest für den Erstentwickler ein gewisser Schock sein. Die Wahl eines robusten kommerziellen Linux-Partners wie Wind River kann den Unterschied zwischen einer guten und einer schlechten Erfahrung als Entwickler ausmachen, zwischen einem Projekt, das scheitert und einem, das gut läuft.

* Davide Ricci ist Director des EMEA Open Source Business bei Wind River.

(ID:46316455)