Hallo und herzlich willkommen. In diesem Beitrag möchte ich dir das Thema Architektur von Embedded Systems vorstellen.

Architektur?! Das hat doch was mit dem Aussehen von Gebäuden zu tun.

Diese Grundaufgaben und Prinzipien lassen sich gleichermaßen auf jede andere schöpferische Tätigkeit übertragen. So auch auf die Entwicklung von eingebetteten Systemen. Die immer komplexer werdenden Systeme verlangen für einen stabilen und riesigen Funktionsumfang einen sehr durchdachten Aufbau.

Mit der Einführung einer guten Systemarchitektur unter der übertragenen Verwendung der Methoden aus der Baukunst entstehen einige Vorteile. Ein Grundgerüst lässt sich schnell auf neue Projekte anwenden und es müssen nur wenige Anpassungen auf Anwendungsebene gemacht werden. Durch die Einteilung in Elemente lässt sich ein System einfacher verstehen. So hat ein Außenstehender eine bessere Chance, zu sehen, ob alle Anforderungen implementiert sind. Aufgaben werden in sinnvollen Blöcken zusammengefasst und lassen sich leicht austauschen oder wiederverwerten.

In Abbildung 1 habe ich dir ein Beispiel für eine übergeordnete Architektur eines Embedded Systems erstellt. Dort findet eine Aufteilung in fünf Schichten statt. Für jede dieser Schichten gibt es wiederum ein eigenes Architekturkonzept.

Abbildung 1: Embedded Systems Layers

Abbildung 1: Schichtenmodell eines Embedded Systems

Auf den Hardware-Layer möchte ich an dieser Stelle nicht tiefer eingehen. Er besteht aus den verwendeten Komponenten: Prozessor, Platine und die Anschlüsse für Peripherie. Diese Schicht wird fast immer in Zusammenarbeit mit einem Hardwareentwickler gestaltet. Der Embedded Entwickler spezifiziert eher nur die Anforderungen.

Hardware Abstraction Layer

Die Hardware-Abstraktionsschicht (HAL) sitzt zwischen der Embedded System Hardware und dem Betriebssystem. Im Allgemeinen beinhaltet die HAL den Bootloader, das Board Support Package, Gerätetreiber sowie andere Komponenten.

Der Bootloader läuft, bevor der Betriebssystem-Kernel ausgeführt wird. Er vervollständigt die Initialisierung der Hardware, stellt das Image des Speicherplatzes her und ermöglicht es somit der Hard- und Softwareumgebung, einen geeigneten Zustand für den Start des Systemkerns zu erreichen. Aus der Sicht der Endverbraucher wird der Bootloader zum Laden des Betriebssystems verwendet.

Das BSP abstrahiert den Hardwarebetrieb, wodurch das Betriebssystem unabhängig von der Hardware ist und auf verschiedenen Hardwarearchitekturen ausgeführt werden kann. Für jedes Betriebssystem muss ein eigenes BSP erstellt werden. So haben beispielsweise ein VxWorks BSP und ein Windows CE BSP ähnliche Funktionen für ein Embedded Hardware Development Board, verfügen aber über völlig unterschiedliche Architekturen und Schnittstellen. Das BSP als ein Softwaremodul ist bei Desktop-PCs eher unbekannt, da dort Hardwarearchitektur (u.a. Intel x86) kaum variiert.

Darüber hinaus ermöglichen Gerätetreiber dem Betriebssystem, die Unterschiede zwischen Hardwarekomponenten und Peripheriegeräten abzuschirmen und eine einheitliche Softwareschnittstelle für den Betrieb der Hardware bereitzustellen.

Operating System Layer

Ein Betriebssystem ist ein Softwaresystem zur einheitlichen Verwaltung von Hardware Ressourcen. Es abstrahiert viele Hardwarefunktionen und stellt sie Anwendungen in Form von Diensten zur Verfügung. Planung, Dateisynchronisation und Netzwerk sind die häufigsten Dienste, die das Betriebssystem anbietet.

In eingebetteten Systemen hat das Betriebssystem ganz eigene spezifischen Anforderungen: Stabilität, Anpassung, Modularität und Echtzeitverarbeitung.

Die gängigsten Betriebssysteme im Embedded Bereich sind Embedded Linux, Windows CE, VxWorks, Android oder Ubuntu. Embedded Linux ist ein allgemeiner Linux-Kernel, der für mobile und embedded Produkte maßgeschneidert, angepasst und modifiziert ist. Windows CE ist ein anpassbares Embedded-Betriebssystem, das Microsoft für eine Vielzahl von Embedded Systemen und Produkten auf den Markt gebracht hat. VxWorks, ein Embedded Realtime Operating System von Wind River. Mit hervorragender Echtzeitfähigkeit und zuverlässigen Funktionen wird es in den Bereichen Kommunikation, Militär, Luftfahrt, Raumfahrt und anderen Bereichen eingesetzt, die hoch entwickelte Echtzeittechnologien erfordern. VxWorks wird insbesondere in den Marssonden der NASA eingesetzt.

System Service Layer

Die Schicht für Systemdienste ist die Serviceschnittstelle, die das Betriebssystem der Anwendung zur Verfügung stellt. Über diese Schnittstelle können Anwendungen auf verschiedene vom Betriebssystem bereitgestellte Dienste zugreifen. In gewissem Maße spielt es die Rolle einer Verbindung zwischen dem Betriebssystem und den Anwendungen.

Diese Schicht beinhaltet im Allgemeinen das Dateisystem, die grafische Benutzeroberfläche, den Task-Manager und so weiter. Eine GUI-Bibliothek (z. B. X Window System) stellt der Anwendung verschiedene GUI Programmierschnittstellen zur Verfügung, die es der Anwendung ermöglichen, mit Benutzern über Anwendungsfenster, Menüs, Dialogfelder und andere grafische Formen anstelle der Kommandozeile zu interagieren.

Application Layer

Die Anwendung, in der obersten Schicht der Softwarehierarchie, implementiert die Systemfunktionalität und die Business Logic. Aus funktionaler Sicht zielen alle Ebenen der Module in der Anwendung darauf ab, Systemfunktionen auszuführen. Aus Systemsicht ist jede Anwendung ein eigener Prozess. Normalerweise laufen Anwendungen mit niedrigerer Priorität und verwenden den vom Betriebssystem bereitgestellten API System Schedule, um mit dem Betriebssystem zu interagieren.

Geschafft… Das war ein anstrengender Ausflug in die Systemarchitektur. Ich hoffe, ich konnte dir einen guten Überblick geben und zeigen, wie sinnvoll ein gutes Konzept ist.

Wie denkst du über den Einsatz von Architekturen bei der Entwicklung von Embedded Systemen? Wird das System dadurch unnötig komplex oder überwiegen die Vorteile?

Ich wünsche dir maximalen Erfolg!