💡 Hint: To show the presentation in Fullscreen press "F".

Einfuehrung in Embedded Systeme

Von Maschinencode bis Rust (und mehr)

24.01.2025

Was sind Embedded Systeme?

embedded_systems

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

FeatureServer/ClientEmbedded-Systeme
Hardware-RessourcenNahezu unbegrenztStark limitiert
EchtzeitanforderungenGering bis keineHäufig kritisch
StromversorgungImmer verfügbarBatteriebetrieben
Update-FlexibilitätRegelmäßig/AutomatischSelten/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
meme_embedded_starter

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

  • Sehr fehleranfällig und schwer wartbar
  • Von Prozessorarchitektur abhängig

Assembler

meme_goto

Von Assembler zu C

  • Einführung von Abstraktion
    • Besser lesbar: “int a = 5;
    • Portabilität zwischen Architekturen

    void setLED() { GPIO- > OUT = 0x01; }

  • Modularisierung durch Funktionen & Methoden
  • Schnellere Entwicklung
  • Leichtere Fehlersuche
  • ABER: Keine Memory Safety!
    Keine Systemfehler zur Compiletime!

C Upgrade ++

  • Klassen und Objekte: Wiederverwendbarkeit
  • Abstraktion: LED als Objekt
  • class LED { public: void on() { GPIO->OUT = 0x01; } };

  • Größere Codebasis
  • Schwer zu debuggen in Embedded-Umgebungen
  • ABER: Keine Memory Safety!
    Keine Systemfehler zur Compiletime!
meme_rust

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;
    }

  • Moderne Toolchain: Rustup, Cargo, probe-rs
  • Nicht nur für Embedded geeignet
meme_rust_types
meme_languages

Quick Recap

Maschinen codeAssemblerC/C++Rust
Lesbar- --+++
Wartbar- --+++
Modular- --++++
HAL- --+++
Komplex-0+++
Nullpointer---+
Geschwindigkeit+++00

Hardware
MCU

Arduino

arduino_boards

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_dev_boards

STM32

stm32_diagram

STM32

stm32_pinout

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_boards

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

meme_keep_coding

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
embedded_flash_dfu

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
meme_client_budget

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);

meme_embedded_got_you

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
meme_programming_memes

Zeit für eure Fragen
& Diskussionen

QR code for https://wieerwill.dev/vcard.vcf

WieErWill.dev/vcard.vcf

WieErWill.dev