171 lines
9.2 KiB
Markdown
171 lines
9.2 KiB
Markdown
<!--
|
||
Challenges with Direct Statistics
|
||
|
||
No Centralized Reporting:
|
||
Unlike mobile OS usage (Android vs. iOS), there's no unified app store
|
||
or market survey specifically for embedded Linux UIs. Projects range
|
||
from hobbyist work to closed-source industrial systems, making data
|
||
collection highly fragmented.
|
||
|
||
Embedded Development Diversity:
|
||
The range of devices running embedded Linux is immense, varying greatly
|
||
in purpose and visibility. This creates a large sample space that’s
|
||
hard to track systematically.
|
||
|
||
Subjectivity in Definition:
|
||
What constitutes "most used" gets tricky. Is it by volume of devices
|
||
regardless of scale, or by developer preferences in recent projects?
|
||
-->
|
||
|
||
# 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.
|
||
|
||
<!-- Ein weiterer Name für eingebettete Systeme is "Cyber-Physical Systems" (CPS).
|
||
|
||
Mit der zunehmenden Verbreitung von eingebetteten Systemen in einer
|
||
Vielzahl von Geräten und der steigenden Netzwerkkonnektivität verschmelzen
|
||
rechnerische und physikalische Prozesse immer enger miteinander. Im Jahr
|
||
2006 prägte Helen Gill von der National Science Foundation den Begriff
|
||
"Cyber-Physical Systems" (CPS), um diesen Paradigmenwechsel zu beschreiben. -->
|
||
|
||
## 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.
|