Was ist ein eingebettetes System – Definition und Erklärung
Ein eingebettetes System ist eine Kombination aus Computer-Hardware und Software, die für eine bestimmte Funktion oder bestimmte Funktionen innerhalb eines größeren Systems entwickelt wurde. Die Systeme können sowohl programmierbar als auch mit fester Funktionalität sein. Mögliche Einsatzorte für ein eingebettetes System sind Industriemaschinen, Unterhaltungselektronik, Geräte der Landwirtschaft und der Prozessindustrie, Kraftfahrzeuge, medizinische Geräte, Kameras, Haushaltsgeräte, Flugzeuge, Verkaufsautomaten und Spielzeug sowie mobile Endgeräte.
Bei eingebetteten Systemen handelt es sich um Computersysteme mit variablen Gerätetypen und Anwendungsmöglichkeiten. Diese können von einer fehlenden Benutzeroberfläche (UI) – zum Beispiel bei Geräten, bei denen das System für die Ausführung einer einzigen Aufgabe konzipiert ist – bis hin zu komplexen grafischen Benutzeroberflächen (GUIs), zum Beispiel bei mobilen Geräten, reichen. Benutzerschnittstellen können Tasten, LEDs und Touchscreen-Sensorik umfassen. Einige Systeme verwenden auch externe Benutzerschnittstellen.
Eigenschaften eingebetteter Systeme
Ein eingebettetes System hat als hauptmerkmal, dass es aufgabenspezifisch ist. Das bedeutet, er erfüllt eine einzelne Aufgabe innerhalb eines größeren Systems. Beispielsweise ist ein Mobiltelefon kein eingebettetes System, sondern eine Kombination von eingebetteten Systemen, die es ihm zusammen ermöglichen, eine Vielzahl von Aufgaben für allgemeine Zwecke zu erfüllen. Die darin eingebetteten Systeme führen spezialisierte Funktionen aus. Zum Beispiel führt die GUI die einzigartige Funktion aus, dem Benutzer eine Schnittstelle mit dem Gerät zu ermöglichen. Kurz gesagt, es handelt sich um programmierbare Computer, die jedoch für spezifische und nicht für allgemeine Zwecke entwickelt wurden.
Zusätzlich kann ein eingebettetes System die folgenden Merkmale aufweisen:
- Eingebettete Systeme bestehen aus Hardware, Software und Firmware.
- Sie sind in ein größeres System eingebettet um eine bestimmte Funktion zu erfüllen, da sie für spezialisierte Aufgaben innerhalb des Systems und nicht für verschiedene Aufgaben gebaut sind.
- Eingebettete Systeme basieren entweder auf einem Mikroprozessor oder Mikrocontroller – beides sind integrierte Schaltungen, die dem System Rechenleistung verleihen.
- Ein eingebettetes System wird oft zur Erfassung und Echtzeitverarbeitung in Internet of Things (IoT)-Geräten verwendet – Geräte, die mit dem Internet verbunden sind und keine Bedienung durch einen Benutzer erfordern
- Eingebettete Systeme variieren in ihrer Komplexität und in ihrer Funktion, was sich auf die Art der von ihnen verwendeten Software, Firmware und Hardware auswirkt die ihre Funktion oft unter Zeitdruck ausüben müssen, damit das größere System ordnungsgemäß funktioniert.
Eingebettete Systeme variieren in ihrer Komplexität, bestehen aber im Allgemeinen aus drei Hauptelementen:
- Hardware. Die Hardware von eingebetteten Systemen basiert auf Mikroprozessoren und Mikrocontrollern. Mikroprozessoren sind den Mikrocontrollern sehr ähnlich und beziehen sich im Allgemeinen auf eine CPU, die mit anderen grundlegenden Rechenkomponenten wie Speicherchips und digitalen Signalprozessoren (DSP) integriert ist. Bei Mikrocontrollern sind diese Komponenten in einem Chip integriert.
- Software. Software für eingebettete Systeme kann von unterschiedlicher Komplexität sein. Auf Mikrocontrollern in Industriequalität und eingebetteten IoT-Systemen läuft jedoch im Allgemeinen sehr einfache Software, die wenig Speicherplatz benötigt.
- Firmware. Eingebettete Firmware wird normalerweise in einem komplexeren eingebetteten System verwendet, um die Software mit der Hardware zu verbinden. Firmware ist die Software, die direkt mit der Hardware verbunden ist. Ein einfacheres System kann nur Software direkt im Chip haben, aber kompliziertere Systeme benötigen Firmware bei komplexeren Software-Anwendungen und Betriebssystemen.
Hardware für eingebettete Systeme
Die Hardware integrierter Systeme kann Mikroprozessor- oder Mikrocontroller-basiert sein. In beiden Fällen ist eine integrierte Schaltung das Herzstück des Produkts, die im Allgemeinen für die Durchführung von Echtzeitberechnungen ausgelegt ist. Mikroprozessoren sind visuell nicht von Mikrocontrollern zu unterscheiden. Der Mikroprozessor implementiert jedoch nur eine zentrale Verarbeitungseinheit (CPU) und erfordert daher die Ergänzung durch andere Komponenten wie z.B. Speicherchips. Umgekehrt sind Mikrocontroller als in sich geschlossene Systeme konzipiert.
Zu den Mikrocontrollern gehören nicht nur eine CPU, sondern auch Speicher und Peripheriegeräte wie Flash-Speicher, RAM oder serielle Kommunikationsschnittstellen. Da Mikrocontroller dazu neigen, vollständige Systeme (wenn auch mit relativ geringer Computerleistung) zu implementieren, werden sie häufig für komplexere Aufgaben eingesetzt. Beispielsweise werden Mikrocontroller bei der Bedienung von Fahrzeugen, Robotern, medizinischen Geräten und Haushaltsgeräten eingesetzt. Am oberen Ende der Mikrocontroller-Fähigkeiten wird häufig der Begriff System on a Chip (SoC) verwendet, obwohl es keine genaue Abgrenzung in Bezug auf RAM, Taktfrequenz, Stromverbrauch usw. gibt.
MarketsandMarkets, ein Business-to-Business (B2B)-Forschungsunternehmen, sagt voraus, dass der Markt für eingebettete Systeme bis 2025 einen Wert von 116,2 Milliarden Dollar haben wird. Zu den Chipherstellern für eingebettete Systeme gehören viele bekannte Technologieunternehmen wie Apple, IBM, Intel und Texas Instruments sowie zahlreiche andere Unternehmen, die außerhalb der Branche weniger bekannt sind. Das erwartete Wachstum ist zum Teil auf die fortgesetzten Investitionen in die künstliche Intelligenz (KI), die mobile Datenverarbeitung und den Bedarf an Chips zurückzuführen, die für diese hochwertige Verarbeitung ausgelegt sind.
Software für eingebettete Systeme
Ein typischer Industrie-Mikrocontroller ist im Vergleich zu einem typischen Unternehmens-Desktop-Computer einfach aufgebaut und hängt im Allgemeinen von einer einfacheren, weniger speicherintensiven Programmumgebung ab. Die einfachsten Geräte laufen auf blankem Metall und werden direkt mit der Maschinencode-Sprache der Chip-CPU programmiert.
Häufig verwenden eingebettete Systeme Betriebssysteme oder Sprachplattformen, die auf den Einsatz in eingebetteten Systemen zugeschnitten sind, insbesondere wenn Echtzeit-Betriebsumgebungen bedient werden müssen. Auf höheren Ebenen der Chipfähigkeit, wie sie in SoCs zu finden sind, haben die Entwickler zunehmend entschieden, dass die Systeme im Allgemeinen schnell genug und die Aufgaben tolerant gegenüber geringfügigen Schwankungen der Reaktionszeit sind, so dass Near-Real-Time-Ansätze möglich sind. In diesen Fällen werden in der Regel abgespeckte Versionen des Betriebssystems Linux eingesetzt, obwohl andere Betriebssysteme auf eingebettete Systeme reduziert wurden, darunter Embedded Java und Windows IoT (ehemals Windows Embedded).
Im Allgemeinen wird bei der Speicherung von Programmen und Betriebssystemen auf eingebetteten Geräten entweder Flash-Speicher oder wiederbeschreibbarer Flash-Speicher verwendet.
Eingebettete Firmware
Eingebettete Firmware, ist eine spezifische Software, die in den Speicher eines Gerätes geschrieben wird und den Zweck eines ROMs erfüllt, aber leichter aktualisiert werden kann. Firmware kann in nichtflüchtigen Speicherbausteinen gespeichert werden, einschließlich ROM, programmierbarem ROM, löschbarem PROM oder Flash-Speicher. Eingebettete Firmware wird zur Steuerung verschiedener Geräte- und Systemfunktionen verwendet. Beispielsweise kann sie dem Gerät mitteilen, wie es mit anderen Geräten kommunizieren, bestimmte Funktionen ausführen und Ein- und Ausgabefunktionen bereitstellen soll.
Die Abgrenzung zwischen den Begriffen eingebettete Firmware und eingebettete Software ist unscharf. Eingebettete Software bezieht sich oft auf den einzigen Code, der auf einem Stück Hardware läuft, während sich Firmware auch auf den Chip beziehen kann, auf dem sich das grundlegende Ein-/Ausgabesystem (BIOS) oder das Unified Extensible Firmware Interface (UEFI) eines Geräts befindet, welche die Software und das Betriebssystem eines Systems verbinden.
Anwendungen eingebetteter Systeme
Eingebettete Systeme werden branchenübergreifend in einer Vielzahl von Technologien eingesetzt. Hier einige Beispiele:
- Kraftfahrzeuge. Moderne Autos bestehen in der Regel aus vielen Computern (manchmal bis zu 100) oder eingebetteten Systemen, die verschiedene Aufgaben im Fahrzeug erfüllen sollen. Einige dieser Systeme erfüllen grundlegende Nutzfunktionen und andere bieten Unterhaltungs- oder Benutzerfunktionen. Einige eingebettete Systeme in Verbraucherfahrzeugen umfassen Geschwindigkeitsregler, Reservesensoren, Aufhängungssteuerung, Navigationssysteme und Airbagsysteme.
- Mobiltelefone. Diese bestehen aus vielen eingebetteten Systemen, einschließlich GUI-Software und -Hardware, Betriebssystemen, Kameras, Mikrofonen und USB-E/A-Modulen.
- Industrielle Maschinen. Sie können eingebettete Systeme, wie Sensoren, enthalten und selbst ein eingebettetes System sein. Industriemaschinen haben oft eingebettete Automatisierungssysteme, die spezifische Überwachungs- und Steuerfunktionen ausführen.
- Medizinische Geräte. Diese können eingebettete Systeme, wie Sensoren und Steuermechanismen, enthalten. Medizinische Geräte, wie Industriemaschinen, müssen auch sehr benutzerfreundlich sein, damit die menschliche Gesundheit nicht durch vermeidbare Maschinenfehler gefährdet wird. Das bedeutet, dass sie oft ein komplexeres Betriebssystem und eine GUI enthalten, die für eine geeignetes User Interface (UI) entworfen wurden.
Eingebettete Systeme vs. VLSI
Very Large Scale Integration (VLSI) ist ein Begriff, der die Komplexität einer integrierten Schaltung (IC) beschreibt. Bei VLSI werden Hunderttausende von Transistoren in einen Chip eingebettet, während LSI-Mikrochips (Integration im großen Maßstab) Tausende von Transistoren, MSI-Mikrochips (Integration im mittleren Maßstab) Hunderte von Transistoren und SSI-Mikrochips (Integration im kleinen Maßstab) Dutzende von Transistoren enthalten. ULSI oder Integration im ultra-großen Maßstab bezieht sich auf die Platzierung von Millionen von Transistoren auf einem Chip.
VLSI-Schaltungen sind gemeinsame Merkmale von eingebetteten Systemen. Viele ICs in eingebetteten Systemen sind VLSI, und die Verwendung des Akronyms VLSI ist weitgehend in Ungnade gefallen.
Debugging eingebetteter Systeme
Ein Bereich, in dem sich ein eingebettetes System von den Betriebssystemen und Entwicklungsumgebungen anderer größerer Computer unterscheidet, ist das Debugging. In der Regel verfügen Entwickler, die mit Desktop-Computerumgebungen arbeiten, über Systeme, die sowohl den zu entwickelnden Code ausführen können als auch separate Debugger-Anwendungen, welche die Aktionen des Entwicklungscodes überwachen, während dieser ausgeführt wird. Programmierer, die mit eingebetteten Systemen arbeiten, können dies jedoch in der Regel nicht.
Einige Programmiersprachen laufen auf Mikrocontrollern so effizient, dass ein rudimentäres interaktives Debugging direkt auf dem Chip möglich ist. Außerdem verfügen Prozessoren oft über CPU-Debugger, die über einen JTAG- oder ähnlichen Debugging-Port gesteuert werden können – und damit die Programmausführung kontrollieren.
In vielen Fällen benötigen Programmierer von eingebetteten Systemen jedoch Werkzeuge, welche ein separates Debugging-System über eine serielle oder andere Schnittstelle mit dem Zielsystem verbinden. In diesem Szenario kann der Programmierer den Quellcode auf dem Bildschirm eines herkömmlichen PC sehen, genau wie es beim Debugging von Software auf einem Desktop-Computer der Fall wäre. Ein separater, häufig verwendeter Ansatz besteht darin, Software auf einem PC laufen zu lassen, die den physischen Chip in Software emuliert, so dass es möglich ist, die Leistung der Software so zu debuggen, als ob sie auf einem tatsächlichen physischen Chip laufen würde.
Im Großen und Ganzen haben eingebettete Systeme mehr Bedeutung für das Testen und Debuggen erhalten, da eine große Anzahl von Geräten mit eingebetteten Steuerungen für den Einsatz in Situationen konzipiert sind, in denen Sicherheit und Zuverlässigkeit oberste Priorität haben.
Wie IoT und eingebettete Systeme zusammenhängen
Während ein eingebettetes System relativ einfach sein kann, verdrängt deren wachsende Zahl entweder die menschliche Entscheidungsfindung oder bietet Fähigkeiten, die über das hinausgehen, was ein Mensch leisten könnte. So sind zum Beispiel einige Luftfahrtsysteme, auch solche, die in Drohnen verwendet werden, in der Lage, Sensordaten zu integrieren und auf diese Informationen schneller zu reagieren, als es ein Mensch könnte, was neuartige Betriebsfunktionen ermöglicht.
Es wird erwartet, dass das eingebettete System weiterhin rasch wachsen wird, was zu einem großen Teil auf das IoT zurückzuführen ist. Expandierende IoT-Anwendungen, wie z.B. Wearables, Drohnen, intelligente Häuser (Smart Houses), intelligente Städte (Smart Cities), Videoüberwachung, 3D-Drucker und intelligentes Transportwesen, werden voraussichtlich das Wachstum von eingebetteten Systemen fördern.
Eingebettete Betriebssysteme
Ein eingebettetes Betriebssystem (Embedded Operating System, OS) ist ein spezialisiertes Betriebssystem, das dazu dient, eine bestimmte Aufgabe für ein Gerät auszuführen, das kein Computer ist. Die Hauptaufgabe eines eingebetteten Betriebssystems besteht darin, den Code auszuführen, der es dem Gerät ermöglicht, seine Aufgabe zu erfüllen. Das eingebettete Betriebssystem macht auch die Hardware des Geräts für die Software zugänglich, die auf dem Betriebssystem läuft.
Beispiele für eingebettete Betriebssysteme
Viele moderne elektronische Geräte basieren auf Arduino oder Raspberry PI. Auf Raspberry-PI-Geräten läuft oft ein ARM-basierter Linux-Kernel, aber es gibt tatsächlich eine Reihe verschiedener Betriebssysteme, die auf Raspberry-PI-Geräten ausgeführt werden können. Arduino-Geräte haben ein viel primitiveres eingebettetes Betriebssystem, das kaum mehr als ein Bootloader und ein Befehlsinterpreter ist.
Wie funktioniert ein eingebettetes Betriebssystem?
Im Gegensatz zu einem Betriebssystem für einen Allzweckrechner kann ein eingebettetes Betriebssystem in seiner Funktion sehr eingeschränkt sein – je nach Gerät kann das System nur eine einzige Anwendung ausführen. Diese einzelne Anwendung ist jedoch für den Betrieb des Geräts von entscheidender Bedeutung, daher muss ein eingebettetes Betriebssystem zuverlässig und in der Lage sein, mit Einschränkungen hinsichtlich Speicher, Größe und Rechenleistung zu laufen.
Ein eingebettetes Betriebssystem ermöglicht es dem Gerät, seine Aufgabe zu erfüllen. Im Fall von Raspberry PI zum Beispiel fungiert eine SD-Karte als Festplatte des Geräts und enthält den Code, der auf dem Gerät läuft. Da die SD-Karte herausnehmbar ist, kann ihr Inhalt bei Bedarf geändert werden. Da das eingebettete Betriebssystem die Hardware des Geräts für die Anwendung zugänglich macht, die auf dem Betriebssystem läuft, können Hardwarekomponenten wie USB-Anschlüsse und HDMI-Anschlüsse von den auf dem Gerät laufenden Anwendungen genutzt werden.
Eingebettet vs. Nicht-Eingebettet
Ein eingebettetes Betriebssystem ist in ein Gerät integriert und kann sich je nach Gerät auf einem Chip befinden. Eingebettete Betriebssysteme neigen dazu, im Hinblick auf ihre Möglichkeiten begrenzt zu sein. Im Gegensatz dazu neigt ein nicht eingebettetes Betriebssystem dazu, von einer Festplatte oder einem SSD aus ausgeführt zu werden. Nicht-eingebettete Betriebssysteme wie Windows 10 oder Mac OS sind in der Regel vom Benutzer konfigurierbar und aufrüstbar, und sie sind in der Regel für den allgemeinen Gebrauch konzipiert.
Geschichte der eingebetteten Systeme
Eingebettete Systeme reichen bis in die 1960er Jahre zurück. Charles Stark Draper entwickelte 1961 einen integrierten Schaltkreis (IC), um die Größe und das Gewicht des Apollo-Führungscomputers, des digitalen Systems, das auf der Apollo-Kommando- und Mondlandefähre installiert ist, zu reduzieren. Als erster Computer, der ICs verwendete, half er den Astronauten bei der Erfassung von Echtzeit-Flugdaten.
1965 entwickelte Autonetics, heute ein Teil von Boeing, den D-17B, den Computer, der im Raketenleitsystem Minuteman I verwendet wurde. Er wird weithin als das erste serienmäßig hergestellte eingebettete System anerkannt. Als die Minuteman II 1966 in Produktion ging, wurde die D-17B durch das NS-17-Raketenleitsystem ersetzt, das für seine hochvolumige Verwendung von integrierten Schaltkreisen bekannt ist. 1968 kam das erste eingebettete System für ein Fahrzeug auf den Markt. So wurde beim Volkswagen 1600 wurde ein Mikroprozessor zur Steuerung des elektronischen Kraftstoffeinspritzsystems verwendet.
Ende der 1960er und Anfang der 1970er Jahre sanken die Preise für integrierte Schaltkreise, und die Nutzung stieg sprunghaft an. Der erste Mikrocontroller wurde 1971 von Texas Instruments entwickelt. Die Serie TMS 1000, die 1974 auf den Markt kam, enthielt einen 4-Bit-Prozessor, einen read-only-Speicher (ROM) und einen Arbeitsspeicher mit direktem Zugriff (RAM) und kostete bei Großbestellungen etwa 2 Dollar pro Stück.
Außerdem brachte Intel 1971 mit dem 4004 den ersten kommerziell erhältlichen Prozessor auf den Markt, der weithin als solcher anerkannt ist. Der 4-Bit-Mikroprozessor wurde für den Einsatz in Taschenrechnern und kleiner Elektronik entwickelt, obwohl er ewigen Speicher und unterstützende Chips benötigte. Der 8-Bit-Prozessor Intel 8008, der 1972 auf den Markt kam, hatte 16 KB Speicher; der Intel 8080 folgte 1974 mit 64 KB Speicher. Der Nachfolger des 8080, die x86-Serie, wurde 1978 auf den Markt gebracht und ist heute noch weitgehend in Gebrauch.
1987 wurde das erste eingebettete Betriebssystem, das Echtzeit-Betriebssystem VxWorks, von Wind River veröffentlicht, gefolgt von Windows Embedded CE von Microsoft im Jahr 1996. In den späten 1990er Jahren erschienen die ersten Embedded-Linux-Produkte. Heute wird bei fast allen eingebetteten Geräten Linux eingesetzt.