Begriff
Eingebettete Systeme
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
98% aller Prozessoren stecken nicht in PCs, sondern in Toastern, Autos, Waschmaschinen. Das sind Eingebettete Systeme. Computer, die eine dedizierte Aufgabe haben. Sie müssen oft:
- Echtzeitfähig sein (Der Airbag muss in 20ms aufgehen. Nicht "irgendwann").
- Energiesparend sein (Batterie hält 5 Jahre).
- Robust sein (Hitze, Staub, Vibration). Hier programmiert man "Bare Metal" (ohne OS oder mit winzigem RTOS).
Merksatz: Ein Computersystem, das in ein technisches Produkt (Gerät, Maschine, Fahrzeug) integriert ist und dort Steuerungs-, Regelungs- oder Überwachungsfunktionen übernimmt, oft unter Echtzeitbedingungen.
Arduino & ESP32.
void loop() { digitalWrite(LED, HIGH); delay(1000); }.
Das ist Embedded Development.
In der Industrie nutzt man ARM Cortex-M Chips, FPGAs (programmierbare Hardware) und Profi-Tools (JTAG Debugger, Oszilloskope).
1. Real-Time (Echtzeit)
Echtzeit heißt nicht "schnell". Es heißt deterministisch. "Die Antwort kommt garantiert in < 5ms."
- Hard Real-Time: Deadline verpasst = Katastrophe (Herzschrittmacher, ABS).
- Soft Real-Time: Deadline verpasst = Qualität sinkt (Video-Stream ruckelt). Normale OS (Windows/Linux) sind nicht echtzeitfähig (der Garbage Collector oder Scheduler kann jederzeit dazwischenfunken).
2. Constraints
Du hast oft nur 4 KB RAM. Du hast kein "malloc" (zu gefährlich, Fragmentierung). Du nutzt statische Speicherzuweisung. Rekursion ist oft verboten (Stack Overflow Gefahr).
1. MISRA C & Safety Standards
In der Produktion von eingebetteten Systemen (Automobil, Medizin) ist Standard-C zu gefährlich. Man nutzt MISRA C. Das ist eine Menge von ca. 140 Regeln, die "gefährliche" C-Features verbieten:
- Kein dynamischer Speicher (
malloc) nach der Initialisierung. - Keine unendlichen Schleifen ohne Timeout-Check.
- Keine Funktionspointer (schwer statisch zu analysieren). Dies schränkt die Freiheit ein, garantiert aber, dass die Software zertifizierbar ist (z. B. nach ISO 26262 für Autos). Ein Absturz wegen eines Memory-Leaks ist in diesen Systemen ein fataler Designfehler, kein "Naja-Bug".
2. WCET (Worst-Case Execution Time)
Für Hard Real-Time Systeme reicht es nicht zu wissen, dass der Code "meistens schnell" ist. Man muss die WCET kennen. Das ist mathematisch schwer, da moderne CPUs durch Caches, Pipelines und Branch Prediction variieren. In der Expert-Ebene nutzt man Static Analysis Tools, die den Maschinencode untersuchen und beweisen: "Egal welcher Pfad durch den Code genommen wird, die CPU wird niemals mehr als 42.000 Zyklen brauchen." Wenn das System mit 100 MHz läuft, weiß man sicher: Die Antwort kommt in maximal 0,42 Millisekunden.
3. Hardware-in-the-Loop (HiL)
Eingebettete Systeme zu testen ist schwer, wenn man kein Flugzeug oder Auto zur Hand hat. Man nutzt HiL-Teststände. Dabei wird der echte Mikrocontroller an einen Simulator angeschlossen. Der Simulator "faked" die Sensoren (z. B. simuliert er die Raddrehzahlen bei einer Vollbremsung) und liest die Aktuatoren des Controllers aus. So kann man tausende Crash-Szenarien sicher im Labor durchspielen, bevor der erste echte Prototyp auf die Teststrecke geht.
Quick-Check
Internet of Things (IoT)?
Embedded Systems + Internet = IoT. Der Kühlschrank redet mit dem Supermarkt.Welche Sprache?
C (immer noch König). C++ (für größere Systeme). Rust (im Kommen). Ada (für Luftfahrt).Firmware?
So nennt man Software, die auf Embedded Systems läuft. Sie ist "fester" als Software (schwerer zu updaten, oft in ROM/Flash gebrannt).