Comment créer, construire, flasher et simuler une application “Hello World” Rust Bare Metal pour ESP32-S3

Rust est un excellent langage de programmation pour le développement de dispositifs embarqués comme les MCU, qui ont des ressources limitées. En particulier, Bare Metal (également connu sous le nom de no_std) apporte de nombreux avantages et permet de créer des applications complètes entièrement en Rust.

Les étapes suivantes décrivent comment créer, construire, flasher et simuler une application pour ESP32-S3, qui est incluse dans de nombreux DevKits comme le ESP32-S3-BOX-3 ou le M5Stack CoreS3.

Plusieurs outils doivent être installés.

Tout d’abord, nous devons installer Rust lui-même. Nous utiliserons rustup.

Nous aurons besoin de plusieurs outils supplémentaires. Nous pouvons utiliser `cargo install` pour effectuer l’installation à partir du code source. La méthode la plus rapide est d’utiliser cargo-binstall, qui déploie les binaires des outils, ce qui permet de gagner du temps par rapport à l’installation à partir du code source.

Nous pouvons maintenant installer des outils supplémentaires :

  • espup – Outil pour installer et maintenir l’écosystème Rust d’Espressif.
  • cargo-generate – Outil pour créer des projets Rust à partir de modèles.
  • espflash – Utilitaire de flash série pour les SoCs et modules Espressif. Remplacement Rust pour esptool.py basé sur Python.

Comme nous visons l’ESP32-S3, qui est basé sur l’architecture Xtensa, nous aurons besoin de la chaîne d’outils Xtensa de Rust, qui doit être installée séparément. Note : Pour les puces introduites après l’ESP32-S3, comme l’ESP32-C3, qui sont basées sur l’architecture RISC-V, cette dépendance n’est pas nécessaire.

Nous pouvons maintenant générer un projet en utilisant le modèle Bare Metal de esp-rs/esp-template avec cargo-generate. L’outil posera plusieurs questions. Voici la configuration recommandée :

Le projet `embedded-rust` devrait être créé, et nous sommes maintenant prêts à le construire et à le flasher.

Il est recommandé de construire le projet en profil Release, en raison des considérations de performance, surtout si vous prévoyez d’utiliser le WiFi, qui nécessite beaucoup de ressources, et le profil de débogage est trop lent.

Connectez l’ESP32-S3-BOX-3 à votre ordinateur en utilisant un câble USB et tapez la commande suivante, qui invoquera une commande de construction et espflash avec l’option de moniteur pour flasher et surveiller le matériel.

Si vous n’avez pas l’ESP32-S3-BOX-3 avec vous, il est possible d’utiliser le simulateur Wokwi. Ouvrez VS Code :

Installez l’extension Wokwi pour VS Code (Ctrl+Shift+P), sélectionnez “Install extension”, recherchez Wokwi et cliquez sur “install”.

Activez la licence gratuite Wokwi (Ctrl+Shift+P), sélectionnez “Wokwi: Request a new license” et suivez le processus d’activation dans le navigateur web.

Si le projet a été créé en profil Release, nous devons changer le chemin vers le binaire dans le fichier `wokwi.toml` :

Exécutez la simulation (Ctrl+Shift+P), sélectionnez “Wokwi: Start Simulator”.

La puce simulée devrait apparaître et vous devriez obtenir le résultat suivant :

Félicitations ! Vous avez complété votre premier projet Rust Bare Metal pour ESP32-S3-BOX-3.

Astuce de productivité : Vous pouvez garder la fenêtre Wokwi avec le simulateur ouverte pendant le développement de l’application. Une fois que vous avez construit l’application en utilisant `cargo run –release`, le simulateur prendra en compte le changement et vous montrera la simulation, même pendant que vous attendez que la procédure de flashage soit terminée. Cela peut vous faire gagner beaucoup de temps en vous permettant de voir immédiatement les résultats d’un changement de code.