Logo Sciencesconf

Rust dans l'embarqué scientifique : retour d'expérience sur le développement d'un système d'acquisition de données multi-tâches sur STM32

Mathieu Dupont  1@  

1 : Centre de Physique des Particules de Marseille
Aix Marseille Université, Institut National de Physique Nucléaire et de Physique des Particules du CNRS, Centre National de la Recherche Scientifique, Centre National de la Recherche Scientifique : UMR7346, Aix Marseille Université : UMR7346

Ce retour d'expérience présente le développement en Rust d'un système embarqué d'acquisition de données scientifiques reposant sur un microcontrôleur STM32L4. Le système pilote en parallèle plusieurs périphériques - un capteur IMIC2 (imageur développé au CNRS), un module radio NRF24L01 et une mémoire flash SPI Winbond - tout en assurant la transmission sans fil des mesures vers un récepteur Raspberry Pi et une interface graphique de supervision. Le cœur de l'architecture repose sur Embassy, le framework async/await pour microcontrôleurs Cortex-M, qui permet d'orchestrer des tâches concurrentes sans système d'exploitation, avec un coût mémoire minimal et des garanties de sûreté à la compilation. Nous montrerons comment le système de types de Rust — ownership, lifetimes, traits — nous a permis d'éliminer des catégories entières de bugs classiques de l'embarqué (accès concurrents, use-after-free, dépassements de tampon) dès la compilation, sans recourir à un RTOS traditionnel. Nous aborderons également la stratégie de partage de code entre la cible no_std (firmware STM32) et les outils hôte (CLI, GUI, récepteur RPi), rendue possible par un design en crates avec feature flags, ainsi que le recours à des macros procédurales pour la sérialisation des trames radio sans allocation dynamique. Ce travail illustre comment Rust, encore peu présent dans l'instrumentation scientifique, offre un compromis attractif entre performance, sûreté et maintenabilité pour des logiciels de bord destinés à des systèmes expérimentaux critiques.

Type : : Présentation

Thématiques : IoT – Objets connectés / Informatique embarquée / Contrôle commande

Chargement... Chargement...