Was ist ein embedded system bzw. eingebettetes System?

Embedded systems und deren Entwicklung und Programmierung

Ein embedded System ist Teil eines viel größeren Systems, das in der Regel eine wesentliche Funktion für den Betrieb des größeren Geräts oder Maschinenteils übernimmt. Eingebettete Systeme finden sich in fast allen Bereichen des modernen Lebens. Weiße Ware wie Waschmaschinen sowie Uhren, Autos und innere Komponenten der IT-Infrastruktur verwenden embedded Systems.

Es ist schwer, sich der Macht der eingebetteten Systeme zu entziehen. Sie haben in der Regel eine Aufgabe oder Funktion, für die sie speziell entwickelt wurden, wie das Einschalten oder das Senden einer Nachricht an ein anderes System, wenn etwas passiert. Embedded Systems unterscheiden sich von anderen Komponenten dadurch, dass sie vollständig integriert sind und in den meisten Fällen nicht getrennt werden können oder unabhängig von dem größeren System arbeiten, für das sie entwickelt wurden.

Eingebettete Systeme arbeiten in der Regel auch mit einem einzigen, oder wenigen Mikroprozessorern. Somit verfügen sie nicht über eine große Menge an Leistung und die Software des gesamten Systems ist auf den Betrieb der Hardware beschränkt. Embedded Systems arbeiten in der Regel ohne eigene Betriebssysteme (zumindest die kleineren Varianten). Diese Varianten können nicht mit einem eigenen Betriebssystem arbeiten und benötigen daher die Unterstützung des Geräts, in dem sie integriert sind, um zu arbeiten.
Embedded Systems mit eigenem Betriebssystem besitzen in der Regel extrem abgespeckte Varianten unixoider Betriebssysteme oder komplette Eigenentwicklungen.

Welche Eigenschaften haben embedded Systems?

Obwohl eingebettete Systeme im Allgemeinen nur für die Ausführung einer einzigen Funktion konzipiert sind und oft nur dazu dienen, diese Funktion immer wieder zu wiederholen, können einige embedded Systems zur Steuerung und Überwachung des gesamten Systems entwickelt werden. Aber auch das ist eine Funktion mit wenig Abwechslung – sie werden sehr selten mehr leisten müssen und sind deshalb zuverlässiger als die Verwendung einer variablen Komponente.

Eingebettete Systeme spielen eine äußerst wichtige Rolle in zahlreichen Geräten. Da sie eingebettet sind, sind sie nicht austauschbar. Das zeigt ihre Bedeutung. Wären sie für den Betrieb des Gesamtsystems nicht unerlässlich, wären sie stattdessen modular aufgebaut und könnten für neue Funktionen oder Prozesse ein- und ausgelagert werden.
Weitere Merkmale eines Embedded Systems sind, dass sie vollständig reaktiv sind und über Sensoren oder Aktoren kommunizieren. Wenn sie nicht die richtige Antwort in Echtzeit liefern, wird die Antwort als falsch angesehen und das Gesamtsystem wird nicht funktionieren.

Geringer Stromverbrauch und Kostenvorteil

Da eingebettete Systeme in der Regel nur eine Funktion haben, können sie mit sehr geringem Stromverbrauch arbeiten und im Vergleich zu anderen Komponenten auf kleinstem Raum untergebracht werden. Sie sind auch sehr preiswert, was sie zu einer sehr effizienten Art der Steuerung von Geräten macht.

Embedded System sind wartungsarm

Embedded Systems sind zudem sehr wartungsarm und benötigen nur selten Hardware- oder Softwareänderungen. Dies macht sie sehr nützlich für die Integration in Geräte, die nicht vom Endbenutzer gewartet werden müssen.
Da sie nur eine Aufgabe erfüllen müssen, immer und immer wieder, sind eingebettete Systeme ideal für den Einsatz in Geräten, die nicht aktualisiert werden müssen, um effektiv zu arbeiten.

Obwohl eingebettete Systeme häufig verwendet werden, haben sie sicherlich ihre Grenzen. Zum Beispiel sind sie schwer aufzurüsten. Sowohl Hard- als auch Software sind für einen dauerhaften Betrieb ohne Updates ausgelegt.
Das kann auch zu Nachteilen führen, da u.U. erst später auffallende Sicherheitslücken in der Rege sehr schwer zu patchen sind.

Um eingebettete Systeme zu ersetzen, muss das Host-Gerät dekonstruiert, neu programmiert und anschließend wieder zusammengesetzt werden, damit es korrekt funktioniert. Oft ist es kostengünstiger, das gesamte Gerät auszutauschen, als diese intensive Wartung zu bezahlen.

robuste Struktur trotz fehlender Updatemöglichkeiten?

Das bedeutet auch, dass es schwierig ist, Probleme zu lösen, wenn etwas schief geht und eingebettete Systeme vor Ort nur schwer umprogrammiert werden können. Da eingebettete Systeme jedoch in der Regel neben anderen integriert sind, können die Komponenten zusammenarbeiten, um Probleme in diesen Bereichen zu überwinden und insgesamt eine viel robustere Struktur zu schaffen.

Wie kann man Embedded Systems programmieren? (Tools, Entwicklungsumgebungen)

Das Entwerfen und Implementieren von Embedded-Programmen ist anders und anspruchsvoller als das Schreiben von typischen Workstation- oder PC-Programmen. Embedded Code muss nicht nur reichhaltige Funktionalität bieten, er muss auch oft mit der erforderlichen Geschwindigkeit laufen, um das Timing einzuhalten, in den zulässigen Speicherplatz zu passen und die Anforderungen an den Stromverbrauch zu erfüllen.

Code zu entwerfen, der gleichzeitig mehrere Designbeschränkungen erfüllt, ist eine große Herausforderung. Glücklicherweise gibt es Techniken und Werkzeuge, die verwendet werden können, um durch den Designprozess zu helfen.

Embedded Systems z.B. mit Assembler programmiert werden. Vermehrt kommen mittlerweile auch Hochsprachen, insbesondere C, zum Einsatz. Hochsprachen wurden einst als zu ineffizient für eingebettete Mikrocontroller gemieden, aber bessere Compiler, compilerfreundlichere Architekturen und schnellere Prozessoren und Speicher haben Programme auf Basis der Entwicklung in Hochsprachen ermöglicht und verbreitet.

Einige Abschnitte eines Programms müssen möglicherweise weiterhin in Assemblersprache geschrieben werden, wenn der Compiler nicht genügend gute Ergebnisse liefert. Aber selbst bei der Programmierung in Assemblersprache ist es oft hilfreich, über die Funktionalität des Programms in höherer Form nachzudenken. Viele der Analyse- und Optimierungstechniken sind auch auf Programme anwendbar, die in Assembler geschrieben sind.

Wie wird ein Eingebettetes System entworfen?

Beim Entwurf eines Embedded Systems wird zunächst ein Designmuster erstellt. Dies ist eine verallgemeinerte Beschreibung einer Möglichkeit, eine bestimmte Klasse von Problemen zu lösen. Als einfaches Beispiel könnte C-Code für eine Implementierung einer verknüpften Liste geschrieben werden. Dieser Code würde die in der Liste verfügbaren Datenelemente, Aktionen bei Fehlern usw. konkretisieren.

Ein Entwurfsmuster, das den Listenmechanismus beschreibt, würde die wesentlichen Komponenten und Verhaltensweisen der Liste erfassen, ohne unnötige Details hinzuzufügen. Ein Entwurfsmuster kann in der Unified Modeling Language (UML) beschrieben werden. Das ist in der Regel ein Kollaborationsdiagramm, das zeigt, wie Klassen zusammenarbeiten, um eine bestimmte Funktion auszuführen.

Die Details können leicht in dieses Designmuster eingefügt werden. Ein Entwurfsmuster kann so parametrisiert werden, dass es an die Bedürfnisse einer bestimmten Anwendung angepasst werden kann. Eine vollständigere Beschreibung des Musters könnte Folgendes beinhalten:

  • Zustandsdiagramme zur Beschreibung von Verhalten und
  • Sequenzdiagramme, um zu zeigen, wie Klassen interagieren.

Designmuster sind in erster Linie dazu gedacht, die Herausforderungen im mittleren Designbereich zu lösen. Ein Entwurfsmuster kann nur eine einzige Klasse enthalten, aber es beschreibt normalerweise mehrere Klassen, jedoch selten mehr als einige Dutzend. Ein Entwurfsmuster wird wahrscheinlich nicht die komplette Architektur eines Systems liefern, aber es kann die Architekturen für viele Subsysteme in einem Entwurf skizzieren. Durch das Zusammenfügen und Spezialisieren vorhandener Entwurfsmuster kann schnell ein großer Teil der Systemarchitektur erstellt werden.

Konstruktionsmuster sollen ähnlich wie bei Ingenieuren anderer Disziplinen eingesetzt werden. Ein Designer kann Kataloge von Designmustern konsultieren, um Muster zu finden, die zu einem bestimmten Designproblem zu passen scheinen. Der Designer kann dann die für die Anwendung geeigneten Parameter auswählen und sehen, was dies für die Umsetzung des Entwurfsmusters bedeutet. Der Designer kann dann das Designmuster auswählen, das am besten zum Design passt, es parametrisieren und instanziieren – so entstehen embedded Systems.

Rückmeldungen