STM32N6-Support in Embassy-rs: Unsere Beiträge zum Embedded-Rust-Ökosystem
Der STM32N6 von ST Microelectronics ist ein spannender Mikrocontroller – leistungsstark, mit integrierter NPU, aber als relativ neuer Chip noch lückenhaft unterstützt in vielen Frameworks. Wir haben in den letzten Monaten daran gearbeitet, den Support in Embassy-rs deutlich zu verbessern.
Warum Embassy?
Embassy ist ein async-first Framework für Embedded Rust. Es bietet ein modernes Programmiermodell mit async/await, Hardware Abstraction Layers (HALs) für viele STM32-Familien und einen eigenen Executor – alles ohne Allocator und ohne std.
Für den STM32N6 fehlte anfangs grundlegender Peripherie-Support. Das haben wir Schritt für Schritt geändert.
Was wir beigetragen haben
XSPI und externer Flash (PR #5234)
Der STM32N6 nutzt XSPI (eXtensible SPI) für die Anbindung externer Speicher. Unser erster Beitrag hat den XSPI-Treiber für den N6 aktiviert, fehlende DQS-Konstruktoren (Data Strobe) für den Hochgeschwindigkeits-Zugriff ergänzt und ein funktionierendes Flash-Beispiel geliefert – die Grundlage für alles Weitere.
PSRAM-Support (PR #5288)
Mit diesem PR kam die Unterstützung für externen PSRAM über XSPI. Dazu gehörten Anpassungen am XSPI-Treiber selbst und ein Beispiel, das zeigt, wie man den PSRAM-Speicher initialisiert und nutzt.
Flash-Boot mit FSBL (PR #5655)
Unser aktueller PR bringt ein vollständiges zweistufiges Boot-System:
- FSBL (First Stage Bootloader): Wird vom Boot-ROM aus signiertem externem NOR-Flash in SRAM geladen. Konfiguriert Clocks, aktiviert Debug-Zugang und startet die Applikation über
embassy-boot. - Application: Läuft direkt aus memory-mapped externem Flash. Unterstützt Firmware-Updates über UART und XMODEM.
Das Beispiel unterstützt sowohl das STM32N6570-DK als auch das NUCLEO-N657X0-Q Board und enthält Rezepte für Build, Signierung, Flash und DFU-Tests.
Wie geht es weiter?
Unser nächstes Ziel ist es, den NeuralArt-Coprozessor des STM32N6 aus Rust heraus nutzbar zu machen – zumindest auf dem Niveau, wie es heute über die C-API von ST möglich ist. Die Herausforderung: Der Befehlssatz und die API des NeuralArt-Coprozessors sind nicht offen dokumentiert, sodass wir aktuell an STs C-Framework gebunden sind. Trotzdem wollen wir eine Rust-Schnittstelle schaffen, die den Zugriff auf die NPU ermöglicht – für Edge-AI-Anwendungen in industrieller Sensorik, Bildverarbeitung und sicheren IoT-Gateways.
Alle PRs sind öffentlich und die Diskussionen dazu auf GitHub nachvollziehbar. Open Source lebt vom Mitmachen.