Chargement…

esp32sim : et si on arrêtait de flasher des cartes pour tester son firmware ?

esp32sim : et si on arrêtait de flasher des cartes pour tester son firmware ?

Un émulateur ESP32 open source, écrit en Rust, qui démarre du vrai firmware sans le moindre patch.

Et ça change pas mal de choses pour qui fait de l'embarqué.

Je vais être direct : des émulateurs ESP32, il en existe déjà, mais ils ont presque tous le même défaut.

Soit ils tournent dans le cloud avec un abonnement, soit ils stubbent la moitié du SoC et vous testez un firmware bricolé qui n'est plus vraiment le vôtre.

esp32sim prend le problème à l'envers : il émule au niveau instruction et boote le vrai mask ROM d'Espressif, puis le vrai bootloader de second niveau, puis FreeRTOS, puis votre application, sans modification.

Et il le fait sur les deux architectures de la marque : l'ESP32-S3 (double cœur Xtensa LX7, le plus abouti), l'ESP32-C3 et l'ESP32-C6 (RISC-V, encore en draft). Le tout sous licence MIT, en local ou directement dans le navigateur via WebAssembly.

Ce qui m'a vraiment bluffé, c'est le niveau de détail.

Le WiFi n'est pas simulé par une API factice : c'est le blob WiFi d'Espressif, non modifié, qui scanne, s'associe et fait son handshake WPA2 avec un point d'accès virtuel.

Derrière, l'émulateur fournit DHCP, DNS, NTP et un NAT vers votre vrai réseau.

Concrètement, le README montre un panneau d'énergie qui récupère des prix d'électricité en HTTPS et interroge un Home Assistant sur le LAN, depuis un ESP32 qui n'existe pas.

Et ça ne s'arrête pas là :

  • des cartes complètes modélisées (écrans ST7735, ST7701S 480×480 avec tactile, LED WS2812, caméra OV5640, codecs audio)
  • un JIT AArch64 pour le S3, annoncé entre 150 et 240 millions d'instructions par seconde
  • Linux 6.11 qui tourne sur le S3 émulé, jouable en ligne sur la démo
  • une détection de piétons esp-dl qui passe par l'unité SIMD PIE émulée

Mais le vrai point fort, pour moi, c'est la méthode de validation.

Le S3 est testé en lock-step JTAG contre une vraie puce : on exécute instruction par instruction sur le silicium et dans l'émulateur, puis on compare les registres.

Le C3 et le C6 sont comparés sur la sortie console d'une vraie carte (205 lignes identiques sur 208 pour le C3, 203 sur 204 pour le C6), et ces comparaisons ont débusqué cinq bugs d'émulation chacune. Les auteurs documentent même les limites de leurs propres chiffres, ce qui est rare.

Donc oui, le projet est jeune (peu d'étoiles sur GitHub, des puces RISC-V encore incomplètes), mais il ouvre une porte énorme : de la CI embarquée sans ferme de cartes, du debug avec breakpoints et watchpoints sur un firmware de prod, des démos jouables dans un navigateur.

La vraie question, c'est combien de temps il faudra avant qu'un outil comme celui-là devienne la norme dans les pipelines IoT.

FAQ

Qu'est-ce qui différencie esp32sim des autres émulateurs ESP32 ?

Il boote le vrai firmware Espressif sans aucune modification, du mask ROM jusqu'à l'application en passant par FreeRTOS, alors que la plupart des alternatives stubbent une partie du SoC ou nécessitent un abonnement cloud.

Quelles puces sont prises en charge aujourd'hui ?

L'ESP32-S3 avec son double cœur Xtensa LX7 est le plus abouti, tandis que l'ESP32-C3 et l'ESP32-C6 en RISC-V sont encore au stade de draft.

Comment le WiFi est-il émulé concrètement ?

L'émulateur fait tourner le blob WiFi original d'Espressif, qui scanne et s'associe à un point d'accès virtuel avec un vrai handshake WPA2, tout en fournissant DHCP, DNS, NTP et un NAT vers le réseau réel.

Peut-on faire confiance à la fidélité de l'émulation ?

Oui, le S3 est validé en lock-step JTAG instruction par instruction contre une vraie puce, et le C3 ainsi que le C6 sont comparés sur leur sortie console avec un taux de correspondance proche de 100 pour cent, ce qui a permis de corriger plusieurs bugs.

Est-ce que le projet est déjà utilisable en production ?

Il reste jeune, avec un support RISC-V encore incomplet et une communauté naissante, mais il est déjà exploitable pour de la CI sans ferme de cartes, du debug avancé ou des démos interactives dans le navigateur.

Faut-il du matériel spécifique pour l'utiliser ?

Non, c'est justement l'intérêt du projet : il tourne en local ou directement dans un navigateur via WebAssembly, sans nécessiter de carte ESP32 physique.


Poursuivre la lecture

Streamer depuis une Freebox Ultra News
#freebox#streaming#golang

Streamer depuis une Freebox Ultra

Streamer les vidéos de sa Freebox sans copier les fichiers ni charger la box : voici comment un proxy maison résout le vrai problème derrière l'architecture.

Alexandre P.
Comment installer et tester Bitnet sur sa machine News
#bitnet#1bit#model

Comment installer et tester Bitnet sur sa machine

Découvrir BitNet, des LLM en 1.58 bits, les installer et les exécuter en local sur CPU ou GPU, rapides, sobres et utilisables sans carte graphique.

Alexandre P.