Einfuehrung in die Embedded Entwicklung
Einfuehrung in Embedded Systeme
Von Maschinencode bis Rust (und mehr)
24.01.2025
Was sind Embedded Systeme?

Was sind Embedded Systeme?
- Systeme, die speziell für bestimmte Aufgaben konzipiert sind
- Automotive (Steuergeräte)
- Medizintechnik (Herzmonitor)
- IoT-Sensoren (Temperaturüberwachung)
- Haushaltsgeräte (Kaffeemaschinen)
- Luftfahrt (Flugsteuerung)
- Arbeiten unter Hardware- und Energieeinschränkungen
Server/Client vs. Embedded
| Feature | Server/Client | Embedded-Systeme |
|---|---|---|
| Hardware-Ressourcen | Nahezu unbegrenzt | Stark limitiert |
| Echtzeitanforderungen | Gering bis keine | Häufig kritisch |
| Stromversorgung | Immer verfügbar | Batteriebetrieben |
| Update-Flexibilität | Regelmäßig/Automatisch | Selten/Schwierig |
Hardware-beschraenkungen
- Wenig Speicher: KB statt GB
- Limitierte CPU-Leistung: MHz statt GHz
- Meist Single-Core-System
- Keine GPU Rechenleistung
- Energieverbrauch: Batteriebetrieben, Energieeffizient
- Beispiel: ESP32 (160 MHz, 400 KB RAM, 4 MB Flash)
- Gegenbeispiel: Heimrechner (8 x 3,60Ghz, 128GB Ram, 12TB Speicher, RTX4070 GPU)
Harte Echtzeit
- Definition: Garantierte Antwortzeit in Millisekunden
- Beispiele:
- Airbags (≤ 10 ms)
- Motorsteuerung (≤ 1 ms)
- Herausforderungen:
- (Predictable) Scheduling
- Kein Platz für „Garbage Collection“
- Random Number Generators sehr rechenintensiv
Funktionale Sicherheit
- Ziel: Vermeidung von Risiken durch Systemfehler
- Beispiele:
- ISO 26262 (Automotive)
- IEC 61508 (Industrie)
- Praktische Auswirkungen:
- Redundante Hardware
- Verifikation und Validierung
- Testanforderungen (Four Eye)
Zuverlaessigkeit und Lebenszyklus
- Anforderungen:
- Langzeitstabilität: 10+ Jahre Betrieb
- Robust gegen äußere Einflüsse (Temperatur, Feuchtigkeit, mechanischer Natur)
- Geringe Wartung: Firmware-Updates oft schwierig
- Beispiel: Steuergeräte in Fahrzeugen
Vielfalt der
Embedded Welt
- Automotive: Harte Echtzeit, Sicherheit
- Medizintechnik: Verlässlichkeit, Validierung, Präzision
- Luftfahrt: Redundanz, Zertifizierung
- Kaffeemaschinen: Kosteneffizienz, Benutzerfreundlichkeit
- IoT-Sensoren: Energieeffizienz, Netzwerkkonnektivität

Software
-
Sprachen
Maschinencode und Assembler
- Maschinencode: Direktes Arbeiten mit Binärdaten (z.B. 10101010)
- Assembler: Menschlich lesbare Abstraktion
- Beispiel Assembler
MOV AL, EAX
ADD AL, 200
OUT 0x64, AL
Assembler

Von Assembler zu C
- Einführung von Abstraktion
- Besser lesbar: “
int a = 5;“ - Portabilität zwischen Architekturen
void setLED() {
GPIO- > OUT = 0x01;
}
Keine Systemfehler zur Compiletime!
C Upgrade ++
- Klassen und Objekte: Wiederverwendbarkeit
- Abstraktion: LED als Objekt
class LED {
public:
void on() { GPIO->OUT = 0x01; }
};
Keine Systemfehler zur Compiletime!

Zukunft Rust
- Ownership-Modell verhindert Speicherfehler
- Kein Nullpointer-Dereferenzieren
- Effizienz: Low-Level wie C, aber sicherer
- Hardware Abstraktion durch HAL
let p = embassy_stm32::init(Default::default()); // Peripherie
let mut led = Output::new(p.PC13, Level::High, Speed::Low);
loop {
led.set_high();
Timer::after_millis(1000).await;
led.set_low();
Timer::after_secs(1).await;
}


Quick Recap
| Maschinen code | Assembler | C/C++ | Rust | |
|---|---|---|---|---|
| Lesbar | - - | - | + | ++ |
| Wartbar | - - | - | + | ++ |
| Modular | - - | - | ++ | ++ |
| HAL | - - | - | + | ++ |
| Komplex | - | 0 | + | ++ |
| Nullpointer | - | - | - | + |
| Geschwindigkeit | ++ | + | 0 | 0 |
Hardware
MCU
Arduino

Arduino
- Schnellstart für Maker und Profis
- Einfach zu programmieren mit Arduino IDE
- Riesige Community und Bibliotheken
- Anwendungsfälle: Prototyping, Bildungsprojekte
Beispiel in Arduino IDE (C ähnlich)
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
STM32

STM32

STM32

STM32
- Der Klassiker für Embedded-Entwicklung
- ARM Cortex-M, 72 MHz, 64 KB RAM, bis 512 KB Flash
- Viele Varianten (Low-Power, High-Performance)
- Besonderheit: Umfangreiche Peripherie (CAN, I2C, SPI, ADC)
- Anwendungsfälle: Industrie, Automotive, Medizintechnik
ESP32

ESP32
- WLAN und Bluetooth in einem Modul
- ARM Cortex-M/32-Bit RISC-V (2021), 160 MHz, 400 KB SRAM, 4 MB Flash
- WLAN 802.11 b/g/n, Bluetooth 5.0
- Anwendungsfälle: IoT-Geräte, Smart Home
- Besonderheit: Preisgünstig und vielseitig
Beispielcode (Rust)
let wifi = Wifi::new();
wifi.connect(“SSID”, “password”);
Embedded
Architektur

Softwarearchitektur in Embedded-Systemen
- meist Layered Architecture
- Hardware-Abstraktionsschicht (HAL)
- Betriebssystem oder Scheduler
- Applikationslogik
- Vorteile
- Geringe Größe
- Modularität
- Wiederverwendbarkeit
- Einfachere Fehleranalyse
- Beispiel: RTOS-basierte Architektur
- Tasks für Sensoren, Kommunikation und Steuerung
- Energiesparzyklen/-Modi

Systemarchitektur
- Co-Design von Hardware und Software
- Ressourcenbeschränkungen früh berücksichtigen
- Interface-Definition zwischen Modulen festlegen
- Beispiel
- Kommunikation über SPI/I2C zwischen Microcontroller und Sensor
- Kommunikation zwischen Microcontroller über UART
- Echtzeitsteuerung von Aktoren über PWM
Systemarchitektur Herausforderung
- Synchronisation zwischen Software- und Hardwareentwicklung
- Starke Einflüsse von außen (Wetter, Zugänglichkeit, Versorgung)
- Änderungen der Sensoren/Aktoren haben starke Auswirkung auf Software
- Wechselnde Anforderungen des Kunden

Beispiel: IoT-Geraet
- Anforderungen
- Periodisches Auslesen eines Sensors
- Senden der Daten über WLAN
- Hardware: ESP32 + DHT22 (Temperatursensor)
- Software
- FreeRTOS für Multitasking
- MQTT für Datenübertragung
- Beispiel (Rust)
let mut sensor = Dht22::new(pin);
let temperature = sensor.read_temperature()?;
mqtt.publish(“sensor/temp”, temperature);

Zusammenfassung
- Embedded-Systeme sind vielseitig und anspruchsvoll
- Rust ist ein vielversprechendes Tool
- Sicherheit
- Effizienz
- Modernes Ökosystem
- Plattformen wie ESP32, STM32 und Arduino ermöglichen schnelle Prototypenentwicklung
- Architektur und Anforderungsanalyse sind entscheidend für den Erfolg

END OF BRIEFING
MAIL:
robert.jeutter@wieerwill.dev
MASTODON:
https://chaos.social/@wieerwill
LINKEDIN:
https://www.linkedin.com/in/wieerwill