- Framework der nächsten Generation, entwickelt, um sichere und effiziente Embedded-Anwendungen schnell zu erstellen
- Gewährleistet Speicher- und Thread-Sicherheit zur Compile-Zeit ohne Runtime oder Garbage Collector und ermöglicht Multitasking auch ohne RTOS
- Unterstützt verschiedene Mikrocontroller und umfasst zentrale Funktionen wie HAL, Networking, Bluetooth, USB und Bootloader
- Berücksichtigt mit Low-Power-Design und prioritätsbasiertem Executor sowohl Echtzeitverarbeitung als auch Akkulaufzeit
- Etabliert sich als führende Plattform für asynchrone Embedded-Entwicklung in Verbindung mit dem Rust-Ökosystem
Überblick über Embassy
- Embassy ist ein Framework der nächsten Generation, mit dem sich mithilfe von Rust und async-Funktionalität sichere und effiziente Embedded-Anwendungen schreiben lassen
- Läuft ohne Runtime, Garbage Collector und Betriebssystem
- Gewährleistet Speicher- und Thread-Sicherheit zur Compile-Zeit
Architektur auf Basis von Rust + async
- Nutzt Rusts async/await für effizientes Multitasking in Embedded-Umgebungen
- Tasks werden zur Compile-Zeit in Zustandsmaschinen (state machines) umgewandelt und kooperativ ausgeführt
- Keine dynamische Speicherallokation erforderlich, Ausführung auf einem einzelnen Stack
- Erreicht schnelleren und kleineren Code auch ohne Context Switching eines RTOS
- Im verlinkten Material wird ein Leistungsvorteil gegenüber RTOS erwähnt
Wichtige Komponenten (Batteries Included)
- Hardware-Abstraktionsschicht (HAL)
- Steuert Hardware-Funktionen über sichere Rust-APIs
- Wichtige unterstützte Plattformen: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
- Zeitverwaltung (embassy-time)
- Bietet global nutzbare Typen wie Instant, Duration, Timer, ohne Overflow
- Echtzeit- und Low-Power-Unterstützung
- Durch das Erzeugen mehrerer Executor ist prioritätsbasierte Task-Ausführung möglich
- Im Leerlauf wird der Core automatisch in den Energiesparmodus versetzt, interruptbasiertes Wake-up
- Networking (embassy-net)
- Unterstützt Ethernet, IP, TCP, UDP, ICMP, DHCP
- Die asynchrone Struktur vereinfacht Timeout-Management und die Verarbeitung mehrerer Verbindungen
- Bluetooth
- Unterstützt verschiedene BLE-Stacks wie
trouble, nrf-softdevice, embassy-stm32-wpan
- LoRa, USB, Bootloader
- Unterstützung für den LoRaWAN-Stack über
lora-rs
embassy-usb implementiert USB CDC und HID-Klassen
embassy-boot unterstützt Firmware-Updates, die auch bei Stromausfällen sicher sind
Technische Daten und Lizenz
- Minimal unterstützte Rust-Version (MSRV): ab 1.75
- Lizenz: Wahlweise Apache-2.0 oder MIT
- Der Projektname ist eine Abkürzung für „** EMBedded ASYnc**”
Noch keine Kommentare.