<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Eingebettetes_System</id>
	<title>Eingebettetes System - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Eingebettetes_System"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Eingebettetes_System&amp;action=history"/>
	<updated>2026-06-01T18:40:36Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Eingebettetes_System&amp;diff=47397&amp;oldid=prev</id>
		<title>imported&gt;17387349L8764: HC: Ergänze Kategorie:Technisches Fachgebiet</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Eingebettetes_System&amp;diff=47397&amp;oldid=prev"/>
		<updated>2025-11-12T12:05:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=WP:HC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HC (Seite nicht vorhanden)&quot;&gt;HC&lt;/a&gt;: Ergänze &lt;a href=&quot;/index.php/Kategorie:Technisches_Fachgebiet&quot; title=&quot;Kategorie:Technisches Fachgebiet&quot;&gt;Kategorie:Technisches Fachgebiet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Belege fehlen}}&lt;br /&gt;
[[Datei:DHCOM Computer On Module - AM35x.jpg|mini|Eingebettetes System auf einer Einsteckkarte mit Prozessor, Speicher, Stromversorgung und externen Schnittstellen]]&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;eingebettetes System&amp;#039;&amp;#039;&amp;#039; (auch {{enS|„embedded system“}}) ist ein [[Computer]], der in einen technischen Kontext [[Einbettung (Informatik)|eingebunden]] (eingebettet) ist. Dabei übernimmt der Rechner entweder Überwachungs-, Steuerungs- oder Regelfunktionen oder ist für eine Form der Daten- bzw.&amp;lt;!--„bzw.“ steh hier für „und oder oder“--&amp;gt; Signalverarbeitung zuständig, beispielsweise beim Ver- bzw. Entschlüsseln, Codieren bzw. Decodieren oder Filtern.&lt;br /&gt;
&lt;br /&gt;
Eingebettete Systeme verrichten – weitestgehend unsichtbar für den Benutzer – ihren Dienst in einer Vielzahl von Anwendungsbereichen und Geräten, beispielsweise in Geräten der [[Medizintechnik]], [[Waschmaschine]]n, [[Flugzeug]]en, [[Kraftfahrzeug]]en, [[Kühlschrank|Kühlschränken]], [[Fernsehgerät]]en, [[DVD-Spieler]]n, [[Set-Top-Box]]en, [[Router]]n, [[Mobiltelefon]]en oder allgemein in Geräten der [[Unterhaltungselektronik]]. Im Fall von komplexen Gesamtsystemen handelt es sich dabei meist um eine Vernetzung einer Vielzahl von ansonsten autonomen eingebetteten Systemen (so im Fahrzeug oder Flugzeug).&lt;br /&gt;
&lt;br /&gt;
Oft werden eingebettete Systeme speziell an eine Aufgabe angepasst. Aus Kostengründen wird eine optimierte gemischte Hardware-Software-Implementierung gewählt. Dabei vereint eine solche Konstruktion die große Flexibilität von [[Software]] mit der Leistungsfähigkeit der [[Hardware]]. Die Software dient dabei sowohl zur Steuerung des Systems selbst als auch zur Interaktion des Systems mit der Außenwelt über definierte Schnittstellen oder Protokolle (zum Beispiel&amp;lt;!--folgende Aufzählung keinesfalls erschöpfend--&amp;gt; [[Local Interconnect Network|LIN-Bus]], [[Controller Area Network|CAN-Bus]], [[ZigBee]] für drahtlose Kommunikation oder [[Internet Protocol|IP]] über [[Ethernet]]).&lt;br /&gt;
&lt;br /&gt;
== Charakterisierung ==&lt;br /&gt;
Eingebettete Systeme können in Einzelfällen auf ähnlicher Hardware wie Arbeitsplatzcomputer basieren ([[Embedded-PC]]s). Typischerweise unterliegen sie jedoch stark einschränkenden Randbedingungen: minimale Kosten, geringer Platz-, Energie- und Speicherverbrauch. Einzelne Komponenten wie Prozessor und Arbeitsspeicher basieren oft auf Weiterentwicklungen älterer Komponenten, was die langfristige Einsetzbarkeit und Ersatzteilbeschaffung erleichtert. „Moderne“ eingebettete Systeme basieren häufig auf Prozessorplattformen, die mit der PC-Welt wenig gemeinsam haben, aber in Bezug auf die Peripheriemodule hochintegriert sind und durch moderne Stromspartechniken deutlich weniger Energie verbrauchen.&lt;br /&gt;
&lt;br /&gt;
Bei vielen Anwendungen kann die Verwendung einer älteren Prozessorarchitektur dazu beitragen, Kosten zu senken. So sind die Architekturen der [[Intel MCS-51|MCS-51]]-, [[PICmicro|Microchip-8Bit-PIC]]- oder [[Zilog Z80|Z80]]-Serie trotz ihres Alters und bekannter Schwächen immer noch eine sehr beliebte Basis für eingebettete Systeme. Die Wiederverwendung von Programmcodes und Toolchains sowie die Scheu vor vollständigen Redesigns „ohne Not“ sind hierbei neben den reinen Materialkosten ebenfalls nicht zu unterschätzende Randfaktoren.&lt;br /&gt;
&lt;br /&gt;
In einem eingebetteten System muss die Software oft [[Echtzeitsystem|Echtzeitanforderungen]] genügen. In der Regel&amp;lt;!--d.h. nicht immer--&amp;gt; existieren, verglichen mit PC-Hardware, nur stark reduzierte Ressourcen, zumeist ohne Festplatte, häufig ohne Betriebssystem, Tastatur oder Bildschirm. Ein ROM- oder Flash-Chip ersetzt mechanische Speicherkomponenten wie eine Festplatte, stromsparende Prozessoren kommen ohne Lüfter aus, denn bewegliche Teile bedeuten Verschleiß und Fehleranfälligkeit. Wenn überhaupt, dann gibt es meistens nur ein Tastenfeld, und die Ausgabe wird – soweit vorgesehen – durch ein [[Flüssigkristallanzeige|LCD]] realisiert.&lt;br /&gt;
&lt;br /&gt;
Die Software auf einem solchen Gerät wird [[Firmware]] genannt. Sie befindet sich gewöhnlich auf einem [[Festwertspeicher|ROM]], immer häufiger jedoch auf [[Flash-Speicher]]. Im Falle eines Flash-Speichers besteht die Möglichkeit eines Firmware-Updates, ohne dass der Chip ausgewechselt werden muss. Ist nur ein ROM vorhanden, muss zumeist der gesamte Chip ausgewechselt werden, manchmal auch die gesamte Schaltung.&lt;br /&gt;
&lt;br /&gt;
== Firmwarekomponenten ==&lt;br /&gt;
Im Wesentlichen besteht die Firmware aus drei Komponenten.&lt;br /&gt;
; [[Bootloader]]: Sorgt für das Laden des Betriebssystems und der Applikationssoftware. Weiter bietet dieser die Möglichkeit, Betriebssystem und Applikationssoftware im [[Flash-Speicher]] zu aktualisieren. Dies kann entweder über eine serielle Schnittstelle (RS232) oder über Ethernet und IP erfolgen. Bekannte Bootloader für eingebettete Systeme sind RedBoot oder U-Boot.&lt;br /&gt;
; [[Betriebssystem]]: Dieser Softwareteil sorgt unter anderem&amp;lt;!--also nicht ausschließlich--&amp;gt; für das Multitasking, Speicher und Dateiverwaltung (zum Beispiel JFFS2) sowie für IP-Dienste wie [[Trivial File Transfer Protocol|TFTP]], [[Hypertext Transfer Protocol|HTTP]], [[Simple Network Management Protocol|SNMP]] und [[Telnet]].&lt;br /&gt;
; Applikationssoftware: Dieser Teil enthält die anwendungsspezifische Software. Diese wird auch als [[Anwendungssoftware]] bezeichnet.&lt;br /&gt;
Bei kleinen eingebetteten Systemen können die drei Softwareteile zusammengefasst sein.&lt;br /&gt;
&lt;br /&gt;
== Plattformen ==&lt;br /&gt;
Eingebettete Systeme werden mittels vieler verschiedener [[Prozessor|CPU]]-Architekturen ([[8051]], [[Arm-Architektur|Arm]], [[Microchip AVR|AVR]], [[TI MSP430]], [[MIPS-Architektur|MIPS]], [[PowerPC]], [[Motorola-68000er-Familie|68000]]/[[Freescale ColdFire|Coldfire]], Intel [[X86-Prozessor|x86]], 68HC12, [[C167]], Renesas [[M16C]], [[Renesas H8|H8S]] und diverser anderer 8/16/32-Bit-CPUs) realisiert.&lt;br /&gt;
&lt;br /&gt;
Eine Untergruppe der Architekturen sind die Prozessorfamilien (beispielsweise 8051, AVR, PIC16, ARM7, PowerPC 5xx, MIPS 4k, AMD AU1000, Intel Pentium M), bei denen verschiedene Varianten mit denselben Entwicklungswerkzeugen und Debugtools betrieben werden können. Unterschiede innerhalb einer Prozessorfamilie bestehen bei der Geschwindigkeit und vor allem der Ausstattung mit Speicher und Peripheriebausteinen.&lt;br /&gt;
&lt;br /&gt;
Eine besonders flexible Plattform sind hochintegrierte [[Field Programmable Gate Array|FPGA]]-Bausteine, mit denen zum einen unterschiedliche CPU-Architekturen nachgebildet werden können (beispielsweise 68000 und PowerPC 405 auf einem Chip) und zum anderen auch gut parallele Rechenleistung ohne Prozessor –&amp;amp;nbsp;nur mittels dedizierter Logik&amp;amp;nbsp;– zur Verfügung gestellt werden kann. In realen Anwendungen werden oft beide Ansätze in einem FPGA als [[System-on-a-Chip]] integriert. Zum Einsatz kommen hierbei als Prozessor sowohl fest verdrahtete Hardmakros wie die PowerPC-Kerne in verschiedenen Xilinx-[[Virtex]]-FPGAs als auch flexibel konfigurierbare Softcore-Prozessoren wie [[Alteras Nios II]], Xilinx [[MicroBlaze]], der [[Mico32]] von Lattice oder auch IP-Cores eines Mikrocontrollers wie PIC oder 8051.&lt;br /&gt;
&lt;br /&gt;
== Betriebssystem ==&lt;br /&gt;
[[Datei:Microbox427b.jpg|mini|[[Embedded-PC]] &amp;#039;&amp;#039;Simatic Microbox PC 427B&amp;#039;&amp;#039; von [[Siemens]], auf dem das Betriebssystem [[Microsoft Windows XP Embedded]] installiert ist]]&lt;br /&gt;
&lt;br /&gt;
Bei „kleinen“ Systemen kommt häufig kein Betriebssystem zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Wenn in eingebetteten Systemen ein Betriebssystem eingesetzt wird, handelt es sich meistens um darauf spezialisierte Betriebssysteme (Beispiele: [[QNX]], [[VxWorks]], [[Nucleus (Betriebssystem)|Nucleus]], [[OSEK]], [[OS-9]], [[Real-Time Operating System for Multiprocessor Systems|RTEMS]], [[ECos]]). Auch spezielle sogenannte &amp;#039;&amp;#039;eingebettete Versionen&amp;#039;&amp;#039; von Standardbetriebssystemen wie [[Linux]] (siehe [[Embedded Linux]]), [[NetBSD]] oder [[Microsoft Windows]] ([[Windows 3.x|3.x]], [[Microsoft Windows CE|CE]], [[Microsoft Windows XP Embedded|XP Embedded]], [[Windows Embedded Automotive|Automotive]] oder [[Windows Embedded 2009#Windows Embedded POSReady 2009|Windows Embedded POSReady 2009/POSReady 7]]) kommen inzwischen zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Oftmals haben Anwendungen weiche oder gar harte [[Echtzeitsystem|Echtzeitanforderungen]], wie unten näher beschrieben ist. Hierfür müssen spezielle Echtzeitbetriebssysteme oder Betriebssysteme mit entsprechend angepassten Kernen verwendet werden.&amp;lt;ref&amp;gt;Jürgen Quade, Michael Mächtel: &amp;#039;&amp;#039;Moderne Realzeitsysteme kompakt: eine Einführung mit Embedded Linux.&amp;#039;&amp;#039; dpunkt-Verlag, Heidelberg 2012, ISBN 978-3-89864-830-1, S. 3–5, 157–173.&amp;lt;/ref&amp;gt;&lt;br /&gt;
{{Siehe auch|Liste von Betriebssystemen#Eingebettete und Echtzeit-Betriebssysteme|titel1=Liste Betriebssysteme für eingebettete Systeme}}&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung, Programmierung, Werkzeuge ==&lt;br /&gt;
Die Software zur Programmentwicklung, also [[Compiler]], [[Assembler (Informatik)|Assembler]] und [[Debugger]] (wobei beim Debugging regelmäßig auch Hardware eingesetzt werden muss), wird in der Regel&amp;lt;!--muss aber nicht zwingend--&amp;gt; von verschiedenen Herstellern angeboten:&lt;br /&gt;
* [[Halbleiterhersteller]], die am Absatz ihrer Prozessoren und Controller interessiert sind, und&lt;br /&gt;
* Softwarefirmen, die sich auf solche Programme spezialisiert haben.&lt;br /&gt;
&lt;br /&gt;
Die Software für Embedded Systeme, die Firmware, wird in der Regel&amp;lt;!--wenn nicht ein Assembler oder gar Schalter für die Bits an einem Epromer oder auch ein PC-basiertes Zielsystem benutzt wird--&amp;gt; über einen [[Cross-Compiler]] erzeugt. Dieser Compiler läuft auf dem Entwicklungssystem (PC-Architektur), also normalerweise einer anderen Architektur als der des Zielsystems. Viele Cross-Compiler sind nicht auf einen bestimmten Prozessor begrenzt&amp;lt;!--aber die gibt es auch--&amp;gt;, sondern können Maschinencode für eine ganze Prozessorfamilie erzeugen, wie ARM7, PowerPC 8xx.&lt;br /&gt;
&lt;br /&gt;
Manche Hersteller bieten auch [[System Design Kit]]s an, die eine [[Einplatinencomputer|Prototypenplatine]] mit dem entsprechenden Prozessor zusammen mit einem Satz [[Software Development Kit]] und [[Handbuch|Dokumentation]] zu Hard- und Software enthalten.&lt;br /&gt;
&lt;br /&gt;
In zunehmendem Maße erfolgt die Softwareentwicklung für eingebettete Systeme mit Hilfe modellbasierter Entwicklung, bei der graphische Modelle des Verhaltens spezifiziert werden, welche dann mittels [[Codegenerator|Codegenerierung]] in C-Code überführt werden.&lt;br /&gt;
&lt;br /&gt;
Bevorzugte [[Programmiersprache]] ist im Allgemeinen [[C (Programmiersprache)|C]] oder [[C++]], aber auch für [[Java (Programmiersprache)|Java]] gibt es Ansätze wie [[OSGi]]. [[Assemblersprache]] wird dann eingesetzt, wenn zeitkritische oder Gerätetreiber-Funktionen vor allem in [[Interrupt]]s programmiert werden oder wenn das Betriebssystem selbst an eine neue Umgebung bzw. CPU angepasst werden muss. Oberhalb des Betriebssystems ist Assembler eher eine Randerscheinung, in Systemen ohne Betriebssystem und vor allem bei massiven Speicherrestriktionen kommt Assembler jedoch häufiger zur Anwendung. In sicherheitskritischen Anwendungen wie bei Flugsteuerungsrechnern werden in eingebetteten Systemen auch eher exotische Sprachen wie [[Ada (Programmiersprache)|Ada]] eingesetzt – man muss hier allerdings differenzieren zwischen den zeitkritischen und den sicherheitskritischen Anwendungsebenen, für die ggf. innerhalb des Systems unterschiedliche Anwendungen und Programmiersprachen verantwortlich sein können. Nicht nur in der Automobilindustrie findet häufig die sogenannte [[Modellgetriebene Softwareentwicklung|modellbasierte Entwicklung]] mit [[Matlab]]/[[Simulink]] oder [[ASCET]] Anwendung. Aus den Modellen wird automatisch C-Code generiert, der wiederum für den entsprechenden Zielprozessor kompiliert wird.&lt;br /&gt;
&lt;br /&gt;
Das [[Softwaretest|Testen von Software]] für eingebettete Systeme findet oft in frühen Entwicklungsphasen auf dem PC statt. Dafür muss häufig die Umgebung der Anwendung, mit der das eingebettete System kommuniziert, [[Simulation|simuliert]] werden. Diese Simulation heißt dann MiL ([[Model in the Loop]]) oder SiL (Software in the Loop). Wenn die Software auf der Zielhardware implementiert ist, spricht man dagegen von HiL ([[Hardware in the Loop]]); der Zugriff auf die Testhardware vom PC aus erfolgt dabei in der Regel über einen [[Emulator#Hardware-Emulatoren|Hardware-Emulator]].&lt;br /&gt;
&lt;br /&gt;
== Softwareentwicklung ==&lt;br /&gt;
{{Hauptartikel|Embedded Software Engineering}}&lt;br /&gt;
&lt;br /&gt;
Die [[Softwaretechnik|Softwareentwicklung]] für eingebettete Systeme unterscheidet sich grundsätzlich von der für Desktop- oder PC-Systeme, da hierbei der Fokus auf den Möglichkeiten der [[Eingabe und Ausgabe|Ein-/Ausgabe]] liegt. Die Funktionen dafür sind hardwareabhängig und für jedes System neu zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
== Debugging, Fehlersuche ==&lt;br /&gt;
[[Debuggen|Debugging]] umfasst Fehlerbeseitigung sowohl in der Software als auch im integrierten System. Für Software-Testing kann ein [[In-Circuit-Emulator]] (ICE) verwendet werden, eine Kombination aus Programm und Hardware, die es erlaubt, die Software &amp;#039;&amp;#039;im System,&amp;#039;&amp;#039; also auf der Zielhardware zu testen. Traditionellerweise muss dazu der eigentliche Controller gegen die ICE-Hardware (ein &amp;#039;&amp;#039;[[Bond-out-Prozessor]]&amp;#039;&amp;#039;) ausgetauscht werden. Das erlaubt es, die Software komfortabel und ohne weitere Eingriffe in der Zielhardware zu entwickeln. Da mit dem ICE Zugriffe auf die Peripherie der CPU möglich sind, lassen sich Software- von Hardwarefehlern unterscheiden und trennen. Früher wurde dazu ein [[Logikanalysator]] benötigt, der als Zusatzoption die Ziel-CPU emulieren konnte.&lt;br /&gt;
&lt;br /&gt;
Heutzutage haben eingebettete CPUs schon einen „Schmalspur“-ICE an Bord, so dass der Hardware-ICE nicht unbedingt benötigt wird. Demgegenüber sind die Einwirkungsmöglichkeiten der Debugging-Software auf die Ziel-CPU eingeschränkt. Eine komplette Überwachung der CPU ist nicht möglich, dafür sind jedoch die Kosten erheblich geringer. Kostet ein voll ausgebautes ICE-System für ein 68000-Derivat einen bis zu sechsstelligen Eurobetrag, liegen die Kosten für solch ein „Schmalspur“-System im unteren 3-stelligen Eurobereich. Meist kommt eine Schnittstelle vom Typ [[Joint Test Action Group|&amp;#039;&amp;#039;JTAG&amp;#039;&amp;#039;]] zum Einsatz. Eine Alternative für Coldfire- und 68000-Derivate ist die Schnittstelle &amp;#039;&amp;#039;Background Debug Module&amp;#039;&amp;#039; (BDM) von Motorola.&lt;br /&gt;
&lt;br /&gt;
Auch bei modernen ARM-Architekturen, Controller mit Cortex-M3 Core, ist sie als spezieller Debugging-Core vorhanden.&amp;lt;ref&amp;gt;[https://developer.arm.com/documentation/ddi0337/e/Preface/About-this-manual/Using-this-manual Cortex-M3 Technical Reference Manual r1p1]&lt;br /&gt;
(Chapter 10…13)&amp;lt;/ref&amp;gt; Das ist ein Teil des Microcontrollers, der für den normalen Programmablauf nicht nötig und nur für das Debugging eingebaut ist. Dieser Debugging-Core kann mit einer Debugging-Software über einen JTAG- oder SWD-Adapter angesprochen werden. Damit lässt sich der Prozessor an beliebigen Stellen im Programm anhalten, und die Werte der Register oder des Speichers können angesehen oder verändert werden. Auch ein schrittweises Abarbeiten des Codes zur Fehlersuche ist möglich. Als Hardware ist hier ein JTAG- oder SWD-Adapter nötig, der oft unter 100&amp;amp;nbsp;€ zu bekommen ist. Die Debuggersoftware kann von voll funktionsfähiger Freeware ([[gdb + ddd]], [[gdb + kgdb]], [[Eclipse (IDE)|Eclipse]]) bis zu professioneller Software im Tausend-Euro-Bereich reichen.&lt;br /&gt;
&lt;br /&gt;
Alternativ wird oft mit Simulatoren gearbeitet, welche die interne Struktur und die Peripherie des Mikrocontrollers in Software nachbilden. Beim Debugging sind die „externen“ Signale (Tasten, Display) „von Hand“ nachzubilden, wobei Interrupts benutzt werden müssten, die im Simulator nicht realisierbar sind.&lt;br /&gt;
&lt;br /&gt;
Es gibt auch bei eingebetteten Systemen Entwicklungen auf [[Java (Programmiersprache)|Java]]-Basis, begründet im einfacheren Plattformwechsel und der Plattformunabhängigkeit mit Wegfall von Simulatoren (siehe [[OSGi]] und [[Embedded Java]]).&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;Microcode-Interrupt&amp;#039;&amp;#039; lässt den Debugger auf der Hardware arbeiten statt nur auf der CPU. Vom Standpunkt der CPU aus können CPU-basierte Debugger dann benutzt werden, um die Elektronik des Computers zu testen und gegebenenfalls Fehler zu diagnostizieren. Diese Fähigkeit wurde an der [[PDP-11]] (siehe [[Programmed Data Processor]]) erforscht und entwickelt.&lt;br /&gt;
&lt;br /&gt;
Der Systemtest wird mittels der [[Hardware in the Loop|Hardware-in-the-Loop]]-Technik durchgeführt, bei der das fertige System an eine Spezialhardware angeschlossen wird, die die Umgebung des Systems simuliert. Auf diese Weise kann das Verhalten des Systems mit Testfällen detailliert untersucht werden.&lt;br /&gt;
&lt;br /&gt;
== Struktur der Systemumgebung, welche das eingebettete System aufnimmt ==&lt;br /&gt;
Zwischen dem eingebetteten System und der [[Systemumgebung]], welche das eingebettete System aufnimmt, befinden sich in der Regel verschiedene [[Schnittstelle]]n. Diese Schnittstellen können je nach Anwendungszweck des eingebetteten Systems in der Praxis sehr unterschiedlich ausgeführt sein. Eine spezielle Schnittstelle ist dabei die [[Benutzerschnittstelle]] (User Interface). Des Weiteren liegen zwischen System und Systemumgebung ein oder mehrere [[Programmierschnittstelle]]n.&lt;br /&gt;
&lt;br /&gt;
=== Softwarekonzepte zur Berücksichtigung der Erfordernisse, die sich aus der Struktur der Systemumgebung ergeben ===&lt;br /&gt;
Viele Anwendungen werden erst dadurch sinnvoll und nutzbar, dass die dafür erforderliche [[Signalverarbeitung]] in [[Echtzeit]] erfolgt. Geräte, Systeme und Verfahren, die mit dem Attribut „Echtzeit“ versehen werden, sollten nach objektiven Maßstäben Kriterien wie „[[Rechtzeitigkeit]]“, „[[Vorhersagbarkeit]]“, „[[Sicherheit]]“ und „[[Software-Zuverlässigkeit|Zuverlässigkeit]]“ erfüllen.&amp;lt;ref&amp;gt;Dieter Zöbel: &amp;#039;&amp;#039;Echtzeitsysteme: Grundlagen und Planung.&amp;#039;&amp;#039; Springer, Berlin 2008, ISBN 978-3-540-76395-6, S. 18.&amp;lt;/ref&amp;gt; Dies setzt eine [[Echtzeitplanung]] von [[Prozess (Informatik)|Prozessen]] voraus. Überdies muss die [[maximale Laufzeit]] zur Erfüllung einer Aufgabe aus der Systemumgebung bestimmbar, also einem deterministischen Prozessablauf zugehörig sein. Die [[Latenzzeit (Technik)|Reaktionszeit]] des Systems zur Erfüllung der Aufgabe muss dem Kriterium der „Rechtzeitigkeit“ genügen.&lt;br /&gt;
&lt;br /&gt;
Zur Realisierung der Echtzeitverarbeitung finden unter Berücksichtigung der Benutzerschnittstelle(n) und der Programmierschnittstellen verschiedene Softwarekonzepte Anwendung.&lt;br /&gt;
{{Siehe auch|Embedded Software Engineering}}&lt;br /&gt;
&lt;br /&gt;
==== Zeitgesteuertes versus ereignisgesteuertes Design für Embedded Software ====&lt;br /&gt;
Die nachfolgend aufgeführte sogenannte „Regelschleife“, die auf den Entwurf eines Reglers hinausläuft, ist allenfalls für äußerst einfache [[Regler|regelnde]] Embedded-Systeme in der Industrie geeignet. Sie muss noch nicht mal mit Echtzeit unterlegt sein. Davon zu unterscheiden ist der sogenannte „reaktive Ansatz“, der auf den Entwurf eines sogenannten „[[Reaktives System (Informatik)|reaktiven Systems]]“ hinausläuft, das sich in ständiger Interaktion mit der Umgebung befindet, wobei die Umgebung dominiert und das reaktive System sich dieser unterordnet.&lt;br /&gt;
&lt;br /&gt;
===== Regelschleife =====&lt;br /&gt;
Regelschleifen werden für Regelungssysteme eingesetzt, die zyklisch Berechnungen aufgrund von Eingangssignalen vornehmen und&lt;br /&gt;
Ausgangssignale senden (siehe [[Regelungstechnik]]). Dies wird auch als „zeitgesteuertes Design“ bezeichnet (siehe [[Embedded Software Engineering]]).&lt;br /&gt;
&lt;br /&gt;
===== Reaktiver Ansatz =====&lt;br /&gt;
Der reaktive Ansatz führt zum Entwurf eines Prozessablaufs, in welchem aperiodisch auftretende Ereignisse, wie etwa ein Tastendruck oder eine Folge von Tastendrücken, verarbeitet und daraus resultierende Aktionen veranlasst werden. Derartiges wird als „ereignisgesteuertes Design“ bezeichnet (siehe [[Embedded Software Engineering]]).&lt;br /&gt;
&lt;br /&gt;
== Systemstart ==&lt;br /&gt;
Alle eingebetteten Systeme haben einen &amp;#039;&amp;#039;Start-up Code&amp;#039;&amp;#039;, der nach dem Einschalten durchlaufen wird. Normalerweise deaktiviert dieser die [[Interrupt]]s, kalibriert die interne [[Elektronik]], testet den [[Computer]] ([[Random-Access Memory|RAM]], [[Festwertspeicher|ROM]], [[Prozessor|CPU]]) und startet den eigentlichen [[Maschinensprache|Programmcode]], nachdem alles erfolgreich getestet wurde.&lt;br /&gt;
&lt;br /&gt;
Viele dieser Systeme sind innerhalb von 100&amp;amp;nbsp;ms einsatzbereit. Selbst nach einem kleinen Stromausfall oder einer Spannungsschwankung laufen diese Geräte sofort weiter, da die interne Hardware den [[Built-in self-test|Selbsttest]] der Hardware und Software überspringt. Es tritt jedoch durch möglicherweise veränderte Bits im RAM undefiniertes Systemverhalten auf, das eine Schaltung zur Spannungsüberwachung (Supply Voltage Supervisor, SVS oder auch [[Stromausfall#Einteilung|Brownout]] Detection genannt) vermeidet. Der SVS löst einen „richtigen“ [[Reset]] aus, so dass das System komplett initialisiert wird und auch die Selbsttests durchläuft.&lt;br /&gt;
&lt;br /&gt;
Die Dauer des Systemstarts ist bei der Kfz-Elektronik an den Kontrollleuchten erkennbar, die nach Einschalten der Zündung aufleuchten und nach kurzer Zeit wieder erlöschen. Der Systemstart führt bei vielen Geräten dazu, dass das Einschalten länger dauert als bei analogen Geräten, beispielsweise bei [[Autoradio]]s.&lt;br /&gt;
&lt;br /&gt;
== Kommunikation des Systemtechnikers mit dem eingebetteten System im Betrieb ==&lt;br /&gt;
Eingebettete Systeme besitzen häufig keinen eigenen Anschluss für ein [[Anzeige (Technik)|Display]] oder Eingabegeräte. Jedoch kann eine mittelbare Benutzerkommunikation über Datenschnittstellen vorgesehen werden. So haben netzwerkfähige Drucker und andere Geräte ein Webinterface oder eine serielle Schnittstelle, über die per Browser oder Terminalemulation alle wichtigen Konfigurationseinstellungen erfolgen.&lt;br /&gt;
&lt;br /&gt;
== Entwurf eingebetteter Systeme ==&lt;br /&gt;
Die Elektronik bildet ein [[Mikroprozessor]] mit entsprechender Peripherie oder ein [[Mikrocontroller]]. Einige eher veraltete Systeme verwenden noch Allzweck-Mainframes oder [[Minirechner]].&lt;br /&gt;
&lt;br /&gt;
=== Aspekte bei Entwurfsentscheidungen zu eingebetteten Systemen ===&lt;br /&gt;
Folgende Aspekte spielen bei Entwurfsentscheidungen von eingebetteten Systemen eine Rolle:&lt;br /&gt;
&lt;br /&gt;
; Integration: Je mehr Funktionalität der verwendete Mikrocontroller bereits enthält, desto weniger Peripheriebausteine werden benötigt, um die Anbindung an die benötigten Systemschnittstellen (Ein-/Ausgabe) zu ermöglichen. Je weniger Bausteine eine Platine benötigt, desto geringer sind der Platzbedarf der Leiterbahnen und die Signallaufzeiten zwischen den Bausteinen. Diese Überlegungen führten dazu, dass auf Mikrocontrollern schon ausreichend RAM und andere Peripherie-Funktionen vorgesehen sind.&lt;br /&gt;
; Hardwareanforderungen: Je nach Einsatzumgebung des Systems können unterschiedlichste Rahmenbedingungen entstehen. Wenn es um raue Umweltbedingungen wie Hitze und Staub geht, muss die Hardware robust, also vor allem [[hermetischer Verschluss|hermetisch gekapselt]] sein. Wenn es dabei um aufwändigere Systeme geht, sind [[Industrie-PC]]s oft eine Lösung. Wenn es um ständige mechanische Erschütterungen geht, müssen Steckverbindungen eingespart oder besonders robust ausgeführt werden. Bauteile mit beweglichen Komponenten wie Festplattenlaufwerke oder Lüfter sind möglichst zu vermeiden.&lt;br /&gt;
; Stromverbrauch: In vielen Fällen werden eingebettete Systeme mit Batterien betrieben. Diese werden, wie bei Wasserzählern, nur im Eichintervall (5&amp;amp;nbsp;Jahre + Laufzeitreserve) getauscht. Die hohen Laufzeiten werden durch spezielle Chiptechnologien (zum Beispiel [[Complementary metal-oxide-semiconductor]]) und Maßnahmen in der Software, wie Schlafmodus, erreicht.&lt;br /&gt;
; Echtzeitanforderungen: Hohe Verfügbarkeit und definierte [[Antwortzeit]]en sind häufig gestellte Anforderungen an ein eingebettetes System und damit auch an dessen Betriebssystem und Software. Beispielsweise muss die elektronisch gesteuerte Bremse oder der [[Airbag]] nahezu unverzögert im Millisekundenbereich reagieren, eine Überschreitung der definierten [[Latenzzeit (Technik)|Latenzzeit]] ist nicht tolerierbar. Die einfache und geschlossene Bauweise sowie die Verwendung spezieller [[Echtzeitbetriebssystem]]e erlauben es schon in der Entwicklungsphase, die Reaktionszeiten des Gesamtsystems abzuschätzen.&lt;br /&gt;
; Betriebssicherheit:Viele eingebettete Systeme laufen im Gegensatz zu PCs im Dauerbetrieb. Fehler und Störungen, wie bei Problemen mit der [[elektromagnetische Verträglichkeit|elektromagnetischen Verträglichkeit]] (EMV), erfordern spezielle Maßnahmen im eingebetteten System, um einen zuverlässigen Wiederanlauf zu gewährleisten. Daher sind Mikrocontroller mit einem [[Watchdog]] ausgerüstet. Dieser bewirkt bei Unregelmäßigkeiten im Ablauf einen kontrollierten Wiederanlauf und stellt damit die Verfügbarkeit des eingebetteten Systems ohne Eingriff des Benutzers sicher.&lt;br /&gt;
; Stückpreis: Der Stückpreis hängt von den Entwicklungs- und Herstellungskosten ab. Bei großen Produktionsmengen wird daher bei der Entwicklung viel Aufwand für optimalen Ressourcenverbrauch betrieben. Bei geringen Stückzahlen fallen die Materialkosten weniger ins Gewicht. So werden teurere, aber flexiblere Bausteine (zum Beispiel [[Field Programmable Gate Array|FPGAs]]) die Entwicklungszeit verringern.&lt;br /&gt;
; Entwicklungsumgebung: Siehe [[System Design Kit]].&lt;br /&gt;
&lt;br /&gt;
=== Anwenderseitige Entwurfsprobleme bei eingebetteten Systemen ===&lt;br /&gt;
Mit dem verstärkten Einsatz von eingebetteten Systemen in Automobilen macht sich ein weiteres Problem bemerkbar: Die Anzahl der Systeme ist so hoch, dass der verfügbare Platz in einem Auto nicht ausreicht und der Verkabelungsaufwand steigt. Deshalb werden mehrere Steuerfunktionen in einem [[Steuergerät]] vereint, ermöglicht durch leistungsfähige 32-Bit-Mikrocontroller. Speicherschutzmechanismen wie [[Memory Protection Unit|MPU]] oder [[Memory Management Unit|MMU]], die dafür sorgen, dass sich die einzelnen Funktionen nicht gegenseitig beeinflussen können, sind jedoch im Allgemeinen weiterhin eher unüblich. Auch sollte die Verbreitung von 8/16-Bit-Controllersystemen nicht unterschätzt werden. In diesem Marktsegment gilt die Maxime der Stromverbrauchs- sowie der Kostenminimierung und daher das Prinzip „nur so viel wie nötig“.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Der erste prominente Einsatz eines eingebetteten Systems war der des [[Apollo Guidance Computer|Apollo-Guidance-Computers]], der von [[Charles Stark Draper]] zusammen mit dem [[Massachusetts Institute of Technology|MIT Instrumentation Laboratory]] entwickelt wurde. Jeder Flug auf den Mond hatte zwei dieser Systeme dabei, die zur Steuerung verwendet wurden. Das [[inertial guidance system|Inertial Guidance System]] wurde sowohl im Kommandomodul als auch in der [[Apollo-Mondlandefähre|Mondlandefähre]] (LEM, Lunar Excursion Module) verwendet.&lt;br /&gt;
&lt;br /&gt;
Zu Beginn des Apollo-Projekts wurde dieses System als eine der riskantesten Komponenten des Projektes angesehen.&lt;br /&gt;
&lt;br /&gt;
Die ersten eingebetteten Systeme wurden aber schon vorher in der [[LGM-30 Minuteman|Minuteman]]-[[Rakete]] eingesetzt und in Serie produziert. Die Anwendung war ein Wege-Such-System, das der Rakete nach einmaliger Programmierung ein unabhängiges Manövrieren ermöglichte. Durch den Preisverfall öffneten sich die verwendeten [[Integrierter Schaltkreis|integrierten Schaltungen]] allmählich einem größeren Kreis von Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Die entscheidende Eigenschaft des Minuteman-Computers war, dass der Weg-Finde-Algorithmus später programmiert werden konnte, wodurch sich die Rakete wesentlich präziser einsetzen ließ. Ein weiterer Vorteil bestand in der Selbsttestfunktion der Rakete zur Statusabfrage sowie darin, dass man zugunsten des Gewichtes auf größere Mengen von Kabeln verzichten konnte.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
=== Architekturen ===&lt;br /&gt;
* [[Arm-Architektur]]&lt;br /&gt;
* [[Infineon TriCore]]&lt;br /&gt;
* [[MIPS-Architektur]]&lt;br /&gt;
* [[Motorola 68000|68000]]-Architektur&lt;br /&gt;
* [[Freescale ColdFire|Coldfire]]-Prozessor&lt;br /&gt;
* [[PowerPC]]-Architektur&lt;br /&gt;
* [[Intel MCS-48]]&lt;br /&gt;
* [[Intel MCS-51]]&lt;br /&gt;
* [[TI MSP430]]&lt;br /&gt;
* [[Microchip AVR]]&lt;br /&gt;
* [[Atmel AVR32]]&lt;br /&gt;
* [[PICmicro]] PIC und PIC32 von Microchip&lt;br /&gt;
* [[MOS Technology 6502]]&lt;br /&gt;
* [[Siemens Sitet]]&lt;br /&gt;
* [[Renesas H8]]&lt;br /&gt;
&lt;br /&gt;
=== Begriffe und Konzepte ===&lt;br /&gt;
* [[Sensornetz]]&lt;br /&gt;
* [[Eingebettetes Datenbanksystem]]&lt;br /&gt;
* [[Steuergerät]]&lt;br /&gt;
* [[Liste von Modultest-Software]]&lt;br /&gt;
* [[Einplatinencomputer]]&lt;br /&gt;
* [[Gerätetechnologien für die Anbindung an das Internet of Things]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Ralf Gessler: &amp;#039;&amp;#039;Entwicklung Eingebetteter Systeme: Vergleich von Entwicklungsprozessen für FPGA- und Mikroprozessor-Systeme; Entwurf auf Systemebene.&amp;#039;&amp;#039; 2., aktualis. und erw. Auflage, Springer Vieweg, Wiesbaden [2020], ISBN 978-3-658-30548-2.&lt;br /&gt;
* Joachim Wietzke: &amp;#039;&amp;#039;Embedded Technologies: Vom Treiber bis zur Grafik-Anbindung.&amp;#039;&amp;#039; (= Xpert.press) Springer Vieweg, Berlin 2012, ISBN 978-3-642-23995-3.&lt;br /&gt;
* Thomas Eißenlöffel: &amp;#039;&amp;#039;Embedded-Software entwickeln: Grundlagen der Programmierung eingebetteter Systeme: eine Einführung für Anwendungsentwickler.&amp;#039;&amp;#039; dpunkt Verl., Heidelberg 2012, ISBN 978-3-89864-727-4.&lt;br /&gt;
* Jörg Wiegelmann: &amp;#039;&amp;#039;Softwareentwicklung in C für Mikroprozessoren und Mikrocontroller: C-Programmierung für Embedded-Systeme.&amp;#039;&amp;#039; 7., neu bearb. und erw. Auflage VDE Verlag, Berlin, Offenbach 2017, ISBN 978-3-8007-4328-5.&lt;br /&gt;
* Oliver Bringmann, Walter Lange, Martin Bodgan: &amp;#039;&amp;#039;Eingebettete Systeme: Entwurf, Synthese und Edge AI.&amp;#039;&amp;#039; 4. Auflage, De Gruyter Oldenbourg, Berlin 2022, ISBN 978-3-11-070205-7.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat|Embedded systems|Eingebettete Systeme}}&lt;br /&gt;
* {{DNB-Portal|4396978-1|TYP=Literatur zum Thema}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4396978-1|LCCN=|NDL=|VIAF=}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:IT-Architektur]]&lt;br /&gt;
[[Kategorie:Hardware]]&lt;br /&gt;
[[Kategorie:Steuerungs- und Regelungstechnik]]&lt;br /&gt;
[[Kategorie:Technisches Fachgebiet]]&lt;/div&gt;</summary>
		<author><name>imported&gt;17387349L8764</name></author>
	</entry>
</feed>