Eingebettetes System

Ein eingebettetes System ist ein Computer, der gebaut wurde, um nur einige wenige, sehr spezifische Probleme zu lösen, und der nicht leicht verändert werden kann. Das Wort eingebettet bedeutet, dass er in das System eingebaut ist. Er ist ein fester Bestandteil eines größeren Systems. In der Regel sieht es nicht wie ein Computer aus, oft ohne Tastatur, Monitor oder Maus. Aber wie jeder Computer hat er einen Prozessor und Software, Ein- und Ausgabe.

Beispielsweise weist die in einem Aufzug eingebettete Steuerung den Motor an, den Aufzug auf der Grundlage der gedrückten Knöpfe in verschiedene Stockwerke zu fahren. Ein Decoder ist in eine Set-Top-Box für Satellitenfernsehen (STB genannt) eingebettet, um ein Signal von der Schüssel zu lesen und etwas zu senden, das ein Fernseher versteht. Oft muss diese Art von System seine Arbeit in einer bestimmten Zeit erledigen. Dies wird als Echtzeit-Computing bezeichnet. Wenn eine Set-Top-Box unterbrochen wird, um eine andere Aufgabe zu erledigen, würden Sie zum Beispiel ein schlechtes Bild auf dem Fernseher sehen. Ein Allzweck-Computer macht oft kurze Pausen, während er etwas anderes tut, und zwar nicht in Echtzeit.

Eingebettete Systeme steuern viele der heute gebräuchlichen Geräte, wie z.B. Kartenleser in Hoteltürschlössern oder verschiedene Dinge in einem Auto. Sie können kleine Dinge wie einen MP3-Player oder eine Digitalkamera steuern, aber auch große Dinge wie Ampelanlagen, Flugzeuge oder Fließbänder in einer Fabrik.

Abbildung der Interna eines ADSL-Modems/Routers. Ein modernes Beispiel für ein eingebettetes System. Zu den beschrifteten Teilen gehören ein Mikroprozessor (4), RAM (6) und Flash-Speicher (7).Zoom
Abbildung der Interna eines ADSL-Modems/Routers. Ein modernes Beispiel für ein eingebettetes System. Zu den beschrifteten Teilen gehören ein Mikroprozessor (4), RAM (6) und Flash-Speicher (7).

Beispiele für eingebettete Systeme

Eingebettete Systeme werden unter anderem in vielen Arten von elektrischen Geräten verwendet:

  • Telekommunikationssysteme verwendet sie für Telefone, Mobilfunknetze und Wi-Fi-Router.
  • Zur Unterhaltungselektronik gehören Rundfunkempfänger, MP3-Player, Mobiltelefone, Videospielkonsolen, Digitalkameras, DVD-Player, GPS-Empfänger, Haussicherheitssysteme und Drucker.
  • Haushaltsgeräte wie Mikrowellenherde, Waschmaschinen, Einbruchmeldesysteme und Geschirrspüler haben eingebettete Systeme.
  • Der Verkehrssektor verwendet eingebettete Systeme für alles, von Lokomotiven für Züge, Flugzeuge und Autos.
  • Die Industrie verwendet Elektromotoren mit elektronischen Steuerungen, Kartenlesegeräten und CNC-Maschinen, die automatisch Metallteile herstellen.
  • Medizinische Geräte wie Defibrillatoren, automatische Blutdruckmessgeräte und automatische Insulinpumpen.
  • Militärische Geräte, wie Walkie-Talkies, Satelliten und die Leitsysteme für Raketen.

Gemeinsame Merkmale

  • Eingebettete Systeme sind im Gegensatz zu Allzweckcomputern für eine bestimmte Aufgabe konzipiert.
  • Es sieht nicht wie ein Computer aus - vielleicht gibt es keinen Vollbildschirm oder eine Tastatur.
  • Viele eingebettete Systeme müssen in der Lage sein, Dinge in Echtzeit zu tun - in kurzer Zeit (aus menschlicher Sicht fast sofort).
  • Viele eingebettete Systeme müssen sehr sicher und zuverlässig sein, insbesondere für medizinische Geräte oder Avionik zur Steuerung von Flugzeugen.
  • Beginnt sehr schnell. Die Menschen wollen nicht eine oder zwei Minuten warten, bis ihr Auto startet oder die Notfallausrüstung anspringt.
  • Es kann ein spezielles Betriebssystem (oder manchmal ein sehr kleines selbstgemachtes Betriebssystem) verwenden, das diese Anforderungen erfüllt, ein so genanntes Echtzeit-Betriebssystem (RTOS).
  • Die für eingebettete Systeme geschriebenen Programmanweisungen werden als Firmware bezeichnet und in schreibgeschützten Speicher- oder Flash-Speicher-Chips gespeichert. Sie laufen mit begrenzten Computer-Hardware-Ressourcen: wenig Speicher, kleine oder nicht vorhandene Tastatur und/oder Bildschirm.

Eingebettete Systeme sind nicht immer eigenständige Geräte. Manchmal werden sie als Set gebaut, wie die verschiedenen Teile eines Autos - das Radio, die Drosselklappensteuerung, die Schadstoffbekämpfung usw. Manchmal können sie mit dem Internet oder einem Mobilfunknetz kommunizieren, und sie können einen USB-Leser oder andere Anschlüsse haben.

Benutzer-Schnittstellen

Eingebettete Systeme reichen von überhaupt keiner Benutzeroberfläche - nur Senden und Empfangen elektrischer Signale - bis hin zu einer vollständigen grafischen Benutzeroberfläche wie bei einem modernen Computer. Oft haben sie nur wenige Drucktasten und ein kleines Display und einige LEDs. Ein komplexeres System kann einen Touchscreen haben, so dass sich die Bedeutung der Tasten wie bei Smartphones mit jedem Bildschirm ändern kann.

Ein Beispiel für eine Benutzerschnittstelle mit Tasten und einem einfachen LCD-Display.Zoom
Ein Beispiel für eine Benutzerschnittstelle mit Tasten und einem einfachen LCD-Display.

Hardware

Zur Hardware gehören die Chips, Drähte, Leiterplatten, Knöpfe und Displays.

CPUs

Der wichtigste Chip ist die zentrale Verarbeitungseinheit oder CPU. Sie führt die Software-Anweisungen aus. Es kann ein Standard-Mikroprozessor oder ein Mikrocontroller sein. Mikrocontroller umfassen sowohl den Mikroprozessor als auch einfache Peripheriegeräte, so dass das System kleiner und billiger sein kann. Sie sind weniger flexibel, da diese Teile nicht verändert werden können. Normalerweise umfassen diese Teile Flash-Speicher und Unterstützung für serielle Anschlüsse, USB usw.

Im Gegensatz zu einem Mikroprozessor für einen Allzweckcomputer ist größer und schneller nicht immer besser. Viele eingebettete Prozessoren sind sehr klein. Manchmal, um weniger Platz oder weniger Strom zu verbrauchen, manchmal, um billiger zu sein. Computer für allgemeine Zwecke verwenden Mikroprozessoren, die 32-Bit- oder 64-Bit-Wörter lesen und mit in GHz gemessenen Geschwindigkeiten laufen, aber eingebettete Prozessoren sind normalerweise 4 bis 32 Bit und laufen mit Geschwindigkeiten, die normalerweise in Zehntel MHz gemessen werden (hundertmal langsamer). (Aber die Programme sind auch kleiner und prüfen nicht auf Dinge, die nicht benutzt werden).

Fertige Computerplatinen

Es gibt "fertige" Computerplatinen, die in einigen eingebetteten Systemen verwendet werden können. Diese verwenden häufig Windows CE, Linux, NetBSD oder ein eingebettetes Echtzeit-Betriebssystem.

Manchmal kann es einfacher sein, eine bereits hergestellte Leiterplatte zu verwenden. Diese teilen sich normalerweise viele Komponenten mit Allzweckcomputern, sind aber kleiner als eine in einem Allzweckcomputer. Platinen wie die VIA EPIA können unter Microsoft Windows laufen. Der Vorteil besteht darin, dass sie etwas Zeit bei der Elektrotechnik sparen und dieselben Software-Entwicklungswerkzeuge verwenden können, die für die Software-Entwicklung vom Typ PC verwendet werden. Beispiele für solche eingebetteten Geräte sind die Geldautomaten oder Displays in Kasinos. Dies funktioniert gut, wenn die Echtzeit-Anforderungen nicht wirklich streng sind (es macht nicht viel aus, wenn ein Auftrag beispielsweise acht statt fünf Sekunden dauert).

ASIC- und FPGA-Lösungen

Wenn das Gerät sehr klein sein muss oder in sehr großen Stückzahlen ("High-Volume") verkauft werden soll, ist es sinnvoll, einen kundenspezifischen oder spezialisierten Chip herzustellen, der genau das tut, was benötigt wird. Dabei handelt es sich um ein System auf einem Chip (SoC), das ein komplettes System - Prozessor, Gleitkommaeinheit, Speicher-Cache und Schnittstellen - auf einer einzigen integrierten Schaltung enthält. SoCs können als anwendungsspezifischer integrierter Schaltkreis (ASIC) auf Sonderbestellung oder unter Verwendung eines FPGA (Field-Programmable Gate Array) hergestellt werden, der von den Personen programmiert wird, die das eingebettete System bauen.

Peripheriegeräte

Eingebettete Systeme sprechen mit der Außenwelt oder anderen Komponenten, die Peripheriegeräte wie z.B:

  • Serielle Schnittstellen: RS-232, RS-422, RS-485. Dies war früher bei den 9-poligen (oder größeren) Anschlüssen recht üblich.
  • Synchrone serielle Kommunikationsschnittstelle: Interintegrierte I²C-Schaltung, Interintegrierter I²S-Ton, SPI, MIcrowire, ...
  • Universeller serieller Bus (USB).
  • Netzwerke: Ethernet, Controller Area Network, LonWorks, ...
  • Diskreter Eingang/Ausgang: Mehrzweck-Eingang/Ausgang (GPIO = General Purpose Input/Output). Dies kann eine einzelne Leitung mit einem Ein/Aus-Signal sein. Er kann für ein kleines Tastenfeld oder zur Beleuchtung einer LED verwendet werden.
  • Analog-Digital/Digital-Analog-Wandler (ADC/DAC). Dieser misst etwas, das sich in der Stärke ändert, wie einen Lichtsensor oder eine Motorsteuerung.
  • Fehlersuche: JTAG, ICSP-Portierung, für Software-Ingenieure.
Soekris net4801, ein eingebettetes System, das auf Netzwerkanwendungen ausgerichtet ist.Zoom
Soekris net4801, ein eingebettetes System, das auf Netzwerkanwendungen ausgerichtet ist.

Software

Betriebssysteme

Eingebettete Systeme benötigen oft kein vollständiges Betriebssystem. Einige verwenden speziell gebaute kleine und einfache Betriebssysteme, die sehr schnell starten, andere benötigen überhaupt kein Betriebssystem. Eingebettete Systeme sind nicht so leicht anzupassen, aber sie sind so gebaut, dass sie ihre Aufgaben viel zuverlässiger erfüllen. Da die Hardware einfacher ist, ist sie oft auch billiger zu bauen und läuft schneller.

Im Gegensatz dazu muss ein Allzweck-Computer für neue Gerätetreiber und Software bereit sein, um Hardware ausführen zu können, die er noch nicht kennt, wie neue Drucker oder Festplatten. Er muss verschiedene Anwendungsprogramme ausführen können.

Da eingebettete Systeme immer größer werden, werden Dinge, die früher nur auf Allzweckrechnern oder sogar auf Großrechnern zu finden waren, nun auch auf eingebetteten Systemen üblich. Dazu gehören geschützter Speicherplatz und eine offene Programmierumgebung einschließlich Linux, NetBSD usw.

Einige Beispiele für Betriebssysteme, von einfach bis komplex:

  • Einfache Regelschleife - Ein Timer und eine Schleife werden verwendet, um verschiedene Unterprogramme wiederholt aufzurufen. Bei kleineren Systemen wird dies oft von einer Person durchgeführt.
  • interruptgesteuert - Die Aufgaben werden durch verschiedene Arten von Ereignissen gestartet. Das Ereignis könnte etwas zeitgesteuert sein (z.B. alle zehn Sekunden) oder durch einen Knopfdruck oder durch empfangene Daten.
  • Nicht präemptives Multitasking - Jeder Task kommt an die Reihe, und wenn er beendet ist, ruft er einen Scheduler im Betriebssystem auf, um den nächsten Task auszuführen.
  • präemptives Multitasking oder Multithreading - Ein Task kann nach einer gewissen Zeit angehalten werden, um einen anderen Task eine Weile laufen zu lassen. Kein Task kann das System überlasten. Auf dieser Ebene wird davon ausgegangen, dass das System über einen "Betriebssystem"-Kernel verfügt und Tasks parallel ausführen kann. Diese Art von Betriebssystem wird normalerweise von einer Firma gekauft, die nur mit eingebetteten Betriebssystemen arbeitet.

Zu den Echtzeitbetriebssystemen gehören Produkte wie MicroC/OS-II, Green Hills INTEGRITY, QNX oder VxWorks. Im Gegensatz zu MacOS oder Windows 7 sind diese Betriebssysteme den meisten Menschen nicht sehr gut bekannt. Aber sie werden an vielen Orten eingesetzt, wo Zeit und Sicherheit sehr wichtig sind. Die Menschen benutzen sie täglich und merken es nicht.

Gängige Beispiele für größere Kernel sind Embedded Linux und Windows CE. Obwohl diese nicht über die engen Zeitgrenzen verfügen, die für ein strenges Echtzeitsystem erforderlich sind, werden sie immer häufiger eingesetzt, insbesondere für leistungsfähigere Geräte wie Wireless Router und GPS. Sie ermöglichen die Wiederverwendung von Code im öffentlichen Bereich für Gerätetreiber, Webserver, Firewalls und anderen Code. Softwareentwickler, die bequemer Anwendungen für PCs schreiben können, werden dies auch vertrauter finden. Falls erforderlich, kann ein FPGA oder andere spezielle Hardware für Dinge verwendet werden, die enge Zeitbeschränkungen erfordern.

Werkzeuge

Wie andere Software verwenden Designer eingebetteter Systeme Compiler, Assembler und Debugger, um Software für eingebettete Systeme zu entwickeln. Sie können jedoch auch einige spezifischere Werkzeuge verwenden:

  • Für Systeme, die digitale Signalverarbeitung verwenden, können Entwickler ein Mathematikwerkzeug wie MATLAB, MathCad oder Mathematica verwenden.
  • Kundenspezifische Compiler und Linker können verwendet werden, um die Optimierung für die jeweilige Hardware zu verbessern.
  • Ein eingebettetes System kann seine eigene spezielle Sprache oder sein eigenes Designwerkzeug haben oder Erweiterungen zu einer bestehenden Sprache hinzufügen, wie sie von Basic Stamp verwendet wird.

Debugging-Werkzeuge:

  • Ein In-Circuit-Debugger (ICD), ein Hardware-Gerät, das über eine JTAG-Schnittstelle mit dem Mikroprozessor verbunden ist. Dadurch wird der Mikroprozessor von außen gestartet und gestoppt, während er die Software ausführt. Er ermöglicht auch das Auslesen von Speicher und Registern sowie das Speichern des Softwareprogramms im Speicher.
  • Externes Debugging mittels Protokollierung oder Ausgabe über die serielle Schnittstelle, um den Betrieb mit einem blinkenden Monitor (printfs) nachzuvollziehen.
  • Interaktives residentes Debugging - wenn das Betriebssystem dies unterstützt, handelt es sich um eine Shell auf dem eingebetteten Prozessor, die vom Entwickler eingegebene Befehle ausführt (z.B. Linux).
  • Ein In-Circuit-Emulator ersetzt den Mikroprozessor auf der Platine und bietet volle Kontrolle über alles, was der Mikroprozessor tun könnte.
  • Ein vollständiger Emulator simuliert alle Funktionen der Hardware, so dass die gesamte Hardware gesteuert und modifiziert werden kann. Die Hardware existiert nicht wirklich, aber eine vorgetäuschte Version davon (eine "virtuelle" Maschine) befindet sich auf einem normalen PC.
  • Überprüfung der externen Leitungen mit einem Logikanalysator oder Multimeter.

Sofern er nicht auf externes Debugging beschränkt ist, kann der Programmierer in der Regel Software über die Tools laden und ausführen, den im Prozessor laufenden Code einsehen und seinen Betrieb starten oder stoppen. Die Ansicht des Codes kann als Assemblercode oder als Quellcode erfolgen. Einige integrierte Systeme (wie z.B. VxWorks oder Green Hills) verfügen über spezielle Funktionen, wie z.B. das Verfolgen, wie viel Platz die Software beim Ausführen benötigt, welche Aufgaben laufen und wann Dinge geschehen.

Je nachdem, welche Art von eingebettetem System hergestellt wird, hängt es davon ab, wie es debuggt werden kann. Beispielsweise unterscheidet sich das Debuggen eines einzelnen Mikroprozessorsystems vom Debuggen eines Systems, bei dem die Verarbeitung auch auf einem Peripheriegerät (DSP, FPGA, Co-Prozessor) erfolgt.

Sicherheit und Zuverlässigkeit

Eingebettete Systeme befinden sich oft in Maschinen, von denen erwartet wird, dass sie jahrelang fehlerfrei laufen und sich in einigen Fällen von selbst wiederherstellen, wenn ein Fehler auftritt. Dies bedeutet, dass die Software in der Regel sorgfältiger entwickelt und getestet wird als bei Personalcomputern, und dass unzuverlässige mechanisch bewegliche Teile wie Plattenlaufwerke und Lüfter vermieden werden.

Orte, an denen Sicherheit und Zuverlässigkeit wichtig sind:

  • Einige Systeme können nicht sicher zur Reparatur heruntergefahren werden, oder es ist zu schwierig, sie zu reparieren. Beispiele hierfür sind Weltraumsysteme (Satelliten, Rover), Unterwasserkabel und die Steuerung von Kernkraftwerken.
  • Das System könnte Menschen töten, wenn es versagt, wie z.B. Flugzeugsteuerungen, Steuerungen chemischer Fabriken, Zugsignale und Herzdefibrillatoren.
  • Das System wird große Geldbeträge verlieren, wenn es abgeschaltet wird oder wenn ein Fehler gemacht wird: Telefonschalter, Fabriksteuerungen, Registrierkassen, Geldautomaten.

Möglichkeiten, sich von Fehlern zu erholen - sowohl von Softwarefehlern wie Speicherlecks als auch von Softfehlern in der Hardware:

  • Watchdog-Timer, der das eingebettete System neu startet, wenn etwas nicht mehr funktioniert.
  • Doppelte Teile, wobei ein System übernehmen kann, wenn ein anderes nicht mehr funktioniert.
  • Software-"Schlaffmodi", die eine Teilfunktion bieten.
  • Immunitätsbewusstes Programmieren

Verwandte Seiten

Fragen und Antworten

F: Was ist ein eingebettetes System?


A: Ein eingebettetes System ist ein Computer, der für die Lösung spezifischer Probleme entwickelt wurde und nicht leicht zu ändern ist.

F: Wie unterscheidet sich ein eingebettetes System von einem Allzweckcomputer?


A: Ein eingebettetes System verfügt in der Regel nicht über eine Tastatur, einen Monitor oder eine Maus und hat spezielle Funktionen. Ein Allzweckcomputer kann eine breite Palette von Aufgaben ausführen.

F: Was sind einige Beispiele für eingebettete Systeme?


A: Beispiele für eingebettete Systeme sind Aufzugssteuerungen, Set-Top-Boxen, Kartenleser in Hoteltürschlössern, Ampelsysteme, Flugzeuge und Fließbänder in Fabriken.

F: Was ist Echtzeit-Computing?


A: Von Echtzeit-Computing spricht man, wenn ein eingebettetes System seine Arbeit innerhalb einer bestimmten Zeitspanne abschließen muss. Wenn es unterbrochen wird, kann dies zu Problemen führen, wie z.B. einer schlechten Bildqualität bei einem Fernseher.

F: Was sind die Komponenten eines eingebetteten Systems?


A: Wie jeder Computer hat auch ein eingebettetes System einen Prozessor, Software, Eingabe und Ausgabe.

F: Welche Aufgaben kann ein eingebettetes System steuern?


A: Ein eingebettetes System kann kleine Geräte wie MP3-Player oder Digitalkameras oder größere Systeme wie Verkehrsampeln oder Flugzeuge steuern.

F: Was bedeutet der Begriff "eingebettet" im Zusammenhang mit eingebetteten Systemen?


A: Der Begriff "eingebettet" bedeutet, dass der Computer in ein größeres System eingebaut ist und nicht leicht verändert werden kann.

AlegsaOnline.com - 2020 / 2023 - License CC3