- Framework de nouvelle génération conçu pour développer rapidement des applications embarquées sûres et efficaces
- Assure la sécurité mémoire et des threads à la compilation sans runtime ni garbage collector, et permet le multitâche sans RTOS
- Prend en charge divers microcontrôleurs avec des fonctions clés comme le HAL, le réseau, le Bluetooth, l’USB et le bootloader
- Conçu pour la basse consommation avec un executor à priorités, en prenant en compte à la fois le traitement temps réel et l’autonomie sur batterie
- S’impose comme la plateforme de référence du développement embarqué asynchrone associée à l’écosystème Rust
Présentation d’Embassy
- Embassy est un framework de nouvelle génération permettant d’écrire des applications embarquées de manière sûre et efficace grâce à Rust et aux fonctionnalités async
- Fonctionne sans runtime, garbage collector ni système d’exploitation
- Garantit la sécurité mémoire et des threads à la compilation
Architecture basée sur Rust + async
- Grâce à la fonctionnalité async/await de Rust, Embassy met en œuvre un multitâche efficace dans les environnements embarqués
- Les tâches sont transformées à la compilation en machines à états (state machines) et exécutées de façon coopérative
- Aucune allocation mémoire dynamique nécessaire, exécution sur une pile unique
- Permet d’obtenir un code plus rapide et plus compact sans changement de contexte d’un RTOS
- Les documents liés mentionnent une supériorité de performances par rapport à un RTOS
Composants principaux (Batteries Included)
- Couche d’abstraction matérielle (HAL)
- Contrôle des fonctions matérielles via une API Rust sûre
- Principales cibles prises en charge : STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
- Gestion du temps (embassy-time)
- Fournit des types Instant, Duration, Timer utilisables globalement, sans débordement
- Prise en charge du temps réel et de la basse consommation
- Possibilité de créer plusieurs executors pour une exécution des tâches basée sur les priorités
- En veille, le cœur passe automatiquement en mode économie d’énergie, avec réveil basé sur les interruptions
- Réseau (embassy-net)
- Prend en charge Ethernet, IP, TCP, UDP, ICMP, DHCP
- La structure asynchrone simplifie la gestion des timeouts et le traitement de multiples connexions
- Bluetooth
- Prend en charge divers stacks BLE comme
trouble, nrf-softdevice, embassy-stm32-wpan
- LoRa, USB, Bootloader
- Prise en charge du stack LoRaWAN avec
lora-rs
embassy-usb implémente les classes USB CDC et HID
embassy-boot prend en charge des mises à jour de firmware sûres même en cas de coupure d’alimentation
Spécifications techniques et licence
- Version minimale de Rust prise en charge (MSRV) : 1.75 ou supérieure
- Licence : au choix entre Apache-2.0 et MIT
- Le nom du projet est l’abréviation de « EMBedded ASYnc »
Aucun commentaire pour le moment.