4 Punkte von GN⁺ 2026-01-10 | 2 Kommentare | Auf WhatsApp teilen
  • 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**”

2 Kommentare

 
GN⁺ 2026-01-10
Hacker-News-Kommentare
  • Ich bin ein großer Fan des Embassy-Projekts. Es ist ein perfektes Beispiel dafür, warum async Rust so großartig ist
    Es läuft ohne Heap und ermöglicht dank Zero-Cost-Abstraktionen nebenläufige Ausführung sogar auf Single-Core-Chips. Dazu kommt, dass die Komplexität eines RTOS wegfällt
    Es ist wirklich erstaunlich, wie weit das Embassy-Team gekommen ist.
    Ich kann außerdem reqwless empfehlen, einen HTTP-Client für Embassy-net. Unterstützt sogar HTTPS
    Früher dachte ich nicht, dass Rust im Embedded-Bereich besser als C/C++ ist, aber inzwischen entscheide ich den Kauf eines MCU danach, ob Rust unterstützt wird

    • Ich würde gern wissen, welches MCU-Development-Kit ihr empfehlen würdet, um das auszuprobieren
    • Ich finde es wirklich gut, dass HAL Typsicherheit mitbringt. Für Leute, die neu in diesem Bereich sind, wirkt das wie eine Schutzschicht
      Allerdings verstehe ich immer noch nicht ganz, was ein Watchdog ist
  • An Embassy gefällt mir besonders die Application-Pattern-Schicht
    Die Struktur besteht aus langlebigen Device-Tasks, die Timing und Koordination hinter kleinen async APIs verbergen
    Zum Beispiel erzeugt der Compiler bei Code wie loop { let btn = ir.wait_for_press().await; } automatisch eine Zustandsmaschine
    Ich denke, dieser Stil ist ein natürliches Ergebnis von async + no-std
    Ich wünschte, es gäbe mehr Diskussionen über diese Art von Anwendungsstruktur als über HALs oder den Executor
    In diesem kostenlosen Artikel, den ich mit Brad Gibson geschrieben habe, behandeln wir genau diese Ideen
    Ich habe außerdem das Repository device-kit eröffnet, um solche Muster zu erproben und zu dokumentieren. Ich würde gern weitere Repos kennen, die Ähnliches versuchen

    • Das ist nicht nur für High-Level-Logik nützlich, sondern auch für Low-Level-Firmware
      Als ich früher NIC-Firmware als Zustandsmaschine geschrieben habe, wäre etwas wie async in Rust wirklich großartig gewesen
      Man kann in C zwar Coroutinen nachahmen, aber das ist sehr hacky
      Damals glaubte ich, dass RTOS-Threads zu teuer seien, aber im Nachhinein stimmt das wohl nicht unbedingt
      Auch bei der Verarbeitung von Protokollen wie 802.11 hätte async den Code viel kleiner und einfacher gemacht
  • Ich mag Embassy wirklich sehr
    Ich komme von Bare-Metal-C und FreeRTOS, und es fühlt sich an, als hätte Embedded endlich eine moderne Toolchain bekommen
    Besonders das umliegende Ökosystem ist hervorragend — probe-rs + cargo run-Integration, defmt-Logging, embedded_hal, stm32-rs usw.
    Ich habe auch RTIC verwendet, bin aber wegen der ergonomischen Nutzbarkeit der async-Syntax bei Embassy geblieben
    Ich war überrascht, dass es auch unter macOS direkt baut und läuft. Früher musste ich immer Linux verwenden, jetzt geht es direkt auf M-Chips
    Es hat eine Weile gedauert, das Konzept des geteilten Zugriffs auf Peripherie zu verstehen, aber da die Lock-Regeln zur Compile-Zeit erzwungen werden, gibt es fast keine Bugs
    Auch die Qualität des USB- und Networking-Stacks ist sehr hoch. Ich verwende PLDM over USB und einen Ethernet-TCP-Stack, und es funktioniert perfekt
    Ein Nachteil ist, dass das Onboarding für Leute schwierig ist, die an bestehende Vendor-Beispiele gewöhnt sind, und dass die Zusammenarbeit beim Debugging schwerfällt, wenn der Vendor Rust nicht kennt
    Trotzdem würde ich es im STM-Ökosystem sehr empfehlen

    • Als ich Embassy früher gebaut habe, war ich überrascht, dass mehr als 100 Abhängigkeiten hereingezogen wurden. Für Hobbyprojekte ist das okay, aber für den industriellen Einsatz finde ich es noch zu früh
    • Ich habe mich gefragt, ob auch Multi-Core-Systeme wie ESP32 unterstützt werden, und soweit ich sehe, geht das mit einem zweiten Executor und Kommunikation über embassy_sync
  • Embassy und async Rust sind die größte Innovation in der Embedded-Welt der letzten zehn Jahre
    C-basierte RTOS sind konzeptionell gut, aber in der Praxis schmerzhaft zu benutzen. Ein leichtgewichtiges Framework wie Embassy ist eine natürliche Weiterentwicklung
    Embassy kann man im Grunde auch als Echtzeitbetriebssystem sehen. Mehr dazu in diesem Artikel

  • Ich schreibe Glicol gerade auf no-std um, und die Kombination aus embassy-rs + 2350 ist hervorragend
    Wenn du 2026 mit Embedded-Entwicklung anfangen willst, würde ich diesen Stack sehr empfehlen

  • Das ist etwas off-topic, aber ich frage mich, womit man am besten in die Embedded-Entwicklung einsteigt
    Ich habe über zehn Jahre nur Webentwicklung gemacht und arbeite mich gerade durch ein Rust-Buch. Ich habe einen Raspberry Pi bestellt, aber kann man das überhaupt als echtes Embedded bezeichnen?

    • Ich würde eher ein ST-Nucleo-Board als einen Raspberry Pi empfehlen. Ein SWD-Programmer ist bereits integriert, wodurch Flashen und Debuggen einfach sind
      Ein Modell mit USB-Port wie das NUCLEO-F767ZI wäre gut
    • Ich habe mir ein ESP32-C6 Touch LCD für 25 $ gekauft, und es ist fast wie ein Fitbit ohne Armband
      Es hat Wi‑Fi, BLE und sogar einen 6-Achsen-Sensor, und die C-Demos laufen sofort. Auch LVGL ist großartig
      Rust habe ich darauf noch nicht benutzt, aber die RISC-V-Basis macht es interessant. Elecrow oder Makerfabs sind ebenfalls gut für Anfänger
    • Ich würde empfehlen, ein Board mit RP2040 und ein Elektronik-Starter-Kit zu kaufen und direkt mit dem Coden anzufangen
      Für Rust ist rp-hal gut für den Einstieg, und Embassy kann man etwas später ausprobieren
    • Mit einem Raspberry Pi kann man auch GPIO ansteuern, daher ist er gut geeignet, um ein Gefühl für Embedded zu bekommen
      Wenn du näher an Bare Metal heran willst, würde ich ein ESP32-Board empfehlen. Es ist günstig und in vielen Formfaktoren erhältlich, auch mit Ladegerät für Akkus oder mit Display
  • Ich habe mit Embassy einen LoRa-Relay gebaut und nutze ihn mit der Bitchat-App (auf nrf52-Basis)
    Das meiste läuft sehr reibungslos, und die Panics lagen an Problemen auf der Nordic-SoftDevice-Seite

    • Ist Bitchat nicht BLE-basiert? Mich würde interessieren, ob du das LoRa-Protokoll direkt implementiert hast oder etwas wie Meshtastic bridgest
  • Ich habe mit Embassy an einem Controller für ein Spark-Modeling-Gitarrenverstärker-Pedal gearbeitet
    Der Verstärker wird per BLE gesteuert, und es war interessant, dass der Rust-BLE-Stack vollständig Open Source ist
    Allerdings ist das Ganze noch in einem frühen Stadium, sodass sich die API oft geändert hat und ich in Cargo Git-Revisionen festpinnen musste
    Trotzdem bin ich gespannt auf die Zukunft des Projekts

  • Auch Microsoft verwendet Embassy für ECs (Embedded Controller)
    Mehr dazu im Open Device Partnership

  • Ariel OS ist ein Betriebssystem, das auf Embassy aufbaut. Einen Blick wert

    • Unabhängig von Embassy ist Xous ebenfalls einen Blick wert, wenn man präemptives Multitasking sucht
 
pmnxis 2026-01-11

Ich habe mit embassy-rs unter Verwendung des STM32G030C8T6 bereits ein Produkt entwickelt und bis zur Serienfertigung gebracht, und bei der Nutzung gibt es einige Nachteile.
Wenn man auf ein nicht allgemein übliches HAL zugreifen muss, braucht man am Ende doch den Ansatz, den man auch mit dem RTIC-Framework verwendet hat.
Wegen async besteht ein hohes Risiko, dass der Speicher ineffizient genutzt wird, daher muss man vorsichtig sein.
Für die Entwicklung in Umgebungen mit 32 KB Flash-Speicher oder weniger ist es sehr einschränkend. (log + Debug-Symbole usw.)
Wenn man außerhalb des Ökosystems von NRF/STM/ESP/RP entwickeln möchte, ist es faktisch sehr schwierig.
embassy-rs ist gut geeignet, um einen Eindruck von Rust Embedded zu bekommen, aber wenn man später Verbesserungen im Hinblick auf Serienfertigung oder die eigene Karriere anstrebt, scheint es besser zu sein, sich auch RTIC genauer anzusehen.
Andererseits besteht die Sorge, dass die gute Zugänglichkeit als eine Art fortgeschrittenes Rust Arduino eher dazu führen könnte, dass man bei anspruchsvollerer Entwicklung in unangenehme Situationen gerät.