9.2 KiB
Grundlagen
Eingebettete Systeme
Traditionelle Ansichten über Computer beschreiben sie oft als eigenständige Geräte wie Desktops oder Laptops. Im Gegensatz dazu skizzierte Mark Weiser in seinem einflussreichen Paper "The Computer of the 21st Century" 1999 eine Vision des "Ubiquitous Computing". [@weiserComputer21stCentury1999] Diese Vision beschreibt eine Welt, in der nahtlos integrierte Geräte in unserem Leben "verschwinden". Eingebettete Systeme verkörpern heute diese Philosophie. Sie sind keine Allzweckcomputer, sondern spezialisierte Computer, die in Geräten und Systemen eingebettet sind. Sie sind in der Regel auf eine spezielle Aufgabe oder Funktion zugeschnitten und sind oft in Geräten des täglichen Lebens zu finden.
Beispiele für eingebettete Systeme finden sich in allen Lebensbereichen:
- Automobilindustrie: Infotainment System
- Industrie: Automatisierungssysteme, Steuerung von Maschinen
- Medizintechnik: Medizinische Geräte, Diagnosegeräte
- Haushaltsgeräte: Waschmaschinen, Kühlschränke
- Consumer Electronics: Smartphones, Smartwatches
Eingebettete Systeme sind oft auf Echtzeitfähigkeit, Energieeffizienz und Zuverlässigkeit ausgelegt. Sie sind in der Regel nicht so leistungsfähig wie Desktop- oder Server-Computer, aber sie sind in der Lage, spezialisierte Aufgaben zu erfüllen.
Auch Experten fällt eine klare Definition von eingebetteten Systemen in der heutigen Zeit nicht leicht, wie auch Jack Ganssle, ein Experte für eingebettete Systeme mit über 30 Jahre Berufserfahrung, in einem Blog Beitrag schreibt. [@ganssleWhatEmbedded2008] So konnte man laut Ganssle früher Systeme, die mit einem Mikrocontroller oder Mikroprozessor ausgestattet sind und in einem Gerät eingebettet sind, klar als eingebettete Systeme bezeichnen. Doch heutzutage werden oft auch Systeme, die mit einem vollwertigen Betriebssystem ausgestattet sind, als eingebettete Systeme bezeichnet. Dazu gehört das Linux Betriebssystem, welches in vielen eingebetteten Systemen zum Einsatz kommt und auch Windows ist laut Ganssle in eingebetteten Systemen anzutreffen. Als weiteres Beispiel dazu nennt er das Handy, welches, als es nur zum telefonieren genutzt wurde, klar als eingebettetes System bezeichnet werden konnte, doch heutzutage ist es ein vollwertiger Computer, der auch als solcher für eine Vielzahl von anderen Funktionen genutzt werden kann.
In weiterer Literatur zu eingebetteten Systemen finden sich die folgenden Definitionen:
"An embedded system is a microprocessor based system that is built to control a function or a range of functions." [@heathEmbeddedSystemsDesign2002]
"Embedded systems are information processing systems embedded into enclosing products." [@marwedelEmbeddedSystemDesign2021]
Auch aus diesen Definitionen geht hervor, dass die Definition von eingebetteten Systemen nicht eindeutig ist. Da es sowohl eine Funktion oder eine Reihe von Funktionen steuern kann, als auch speziell ein System ist, das in ein Produkt eingebettet ist.
Ein eingebettetes System ist also meistens ein Computersystem, welches spezialisiert ist auf eine bestimmte Funktion oder Aufgabe. In der heutigen Zeit heißt das, dass es sich dabei oft um Systeme handelt, welche eigentlich vollwertige Computer sind und daher viele Funktionen ausführen könnten, doch der Hersteller oder Entwickler das System auf gezielte Funktionen beschränkt. So würde ein Bankautomat mit eingebetteten Linux nur auf die speziellen Aufgaben beschränkt werden, welche ein Bankautomat zu erfüllen hat, obwohl er eigentlich ein vollwertiger Computer sein könnte und viele weitere Funktionen ausführen könnte. Besonders bei eingebetteten Systemen mit Touchscreens könnte eine schier unendliche Anzahl von Funktionen auf dem Display angezeigt und angesteuert werden. Daher kommt die Definition eines eingebetteten Systems auch auf die Definition des Systems vom Hersteller oder Entwickler an.
Linux
Linux ist die Bezeichnung für ein freies und quelloffenes Betriebssystem, das auf dem Linux-Kernel und dem GNU-Betriebssystem basiert. Hinter der Bezeichnung GNU steht das GNU-Projekt, das 1983 von Richard Stallman ins Leben gerufen wurde. Das GNU-Projekt hat das Ziel, ein vollständig freies Betriebssystem zu entwickeln, das auf freier Software basiert. Im allgemeinen Sprachgebrauch wird Linux oft als Bezeichnung für das gesamte Betriebssystem genutzt, obwohl es sich eigentlich um das Betriebssystem GNU/Linux handelt. Richard Stallman, der Gründer des GNU-Projekts und der Free Software Foundation, erläutert in einem Blog-Beitrag, dass es wichtig wäre, GNU zu erwähnen, da es viele der Kernkomponenten des Betriebssystems zusammen mit dem Linux-Kernel bildet und dass die Bezeichnung GNU/Linux diesen wichtigen Beitrag anerkennt. Zudem würde es dabei helfen, die Idee des GNU-Projekts und der Free Software Foundation zu verbreiten [@richardstallmanWhyGNULinux].
In der Arbeit wird die Bezeichnung "Linux" für das Betriebssystem verwendet, da es sich um die allgemein gebräuchliche Bezeichnung handelt und die Bezeichnung "GNU/Linux" in der Literatur und im allgemeinen Sprachgebrauch wenig verbreitet ist. Besonders im eingebetteten Bereich wird es allgemein als "Eingebettetes Linux" bezeichnet und fast nie als "Eingebettetes GNU/Linux".
Linux gehört zu den weltweit am weitesten verbreiteten Betriebssystemen und zählt zur Gruppe von "unixoide" oder unix-ähnlichen Betriebssystemen, da es Konzepte des 1969 von Bell Laboratories entwickelten Betriebssystems Unix aufgreift. Nutzer von Linux verwendet oft eine sogenannte "Distribution" von Linux wie Ubuntu. Eine Linux-Distribution, auch als Distro bezeichnet, ist ein vollständiges Betriebssystem, das auf dem Linux-Kernel aufbaut. Der Kernel ist das Herzstück des Betriebssystems. Zusätzlich zum Kernel gibt es weitere wichtige Bestandteile einer Distribution, wie Systembibliotheken, Dienstprogramme und Softwareanwendungen. Die Auswahl dieser wird vom Ersteller der Distro getroffen. Distros gibt es in vielen Varianten, jede mit ihren eigenen Zielen, Zielgruppen und Softwareauswahl. Das bedeutet, dass für viele verschiedene Anwendungsfälle eine passende Linux Distro erstellt werden kann. [@dikkyryanpratamaWhatLinuxDistribution]
Eingebettetes Linux
Unter eingebetteten Linux versteht man die Nutzung des Linux-Betriebssystems im Umfeld eingebetteter Systeme. Der einzige wesentliche Unterschied zu dem normalen Linux-Betriebssystem ist dabei, dass das System auf die speziellen Anforderungen eingebetteter Systeme zugeschnitten ist und vor allem sparsamer mit den Ressourcen umgeht. Es hält jedoch nichts davon ab, jede Art von Linux-Distribution auf einem eingebetteten System zu installieren und als "eingebettetes Linux" zu betreiben. Um jedoch das volle Potenzial eines eingebetteten Systems auszuschöpfen, ist es ratsam, eine speziell für eingebettete Systeme entwickelte Linux-Distribution zu verwenden. Yocto ist ein Projekt mit dem eine solche spezielle Distribution für eingebettete Systeme erstellt werden kann.
Das Yocto Projekt
Yocto ist ein Open-Source-Projekt der Linux Foundation, das es ermöglicht, maßgeschneiderte Linux-Distributionen für eingebettete Systeme zu erstellen. Es bietet hierzu eine Sammlung von Tools, Vorlagen und Methoden, die vor allem auf den Prinzipien der quellbasierten Linux-Distribution Gentoo basieren. Eine quellbasierte Distribution ist eine Linux-Distribution, die aus den Quellcodes der Software zusammengestellt wird. Das bedeutet, dass die Software auf dem Zielgerät aus dem Quellcode kompiliert wird und nicht vorkompilierte Binärdateien installiert werden. Dies ermöglicht eine hohe Flexibilität und Anpassbarkeit der Distribution und Software. Yocto erweitert dieses Prinzip speziell auf eingebettete Systeme. Es ist keine fertige Distribution, sondern ein Framework, mit dem eigene Distributionen speziell für eingebettete Systeme erstellt werden können [@linuxfoundationYoctoProject162024]. In der Arbeit wird das Yocto Projekt für die Erstellung einer speziellen Linux-Distribution für die Nutzung von Flutter auf eingebetteten Systemen verwendet. In Kapitel \ref{yoctoChapter} wird die Erstellung einer solchen Distribution mit dem Yocto Projekt beschrieben.