BreezyBox - démo de shell, installateur d’apps, Vi et compilateur C pour ESP32-S3 fonctionnant sans Linux
(github.com/valdanylchuk)- Projet de démonstration qui transforme un microcontrôleur ESP32-S3 en mini-PC à démarrage immédiat, avec shell, éditeur, compilateur et installateur d’apps
- BreezyBox est un composant de mini-shell pour ESP-IDF, incluant des commandes de type UNIX ainsi que des fonctions vterm et VFS
- Fonctionne sur la carte Waveshare ESP32-S3-Touch-LCD-7B et peut être facilement adapté à d’autres cartes
- Après un fork, il est possible de l’exécuter sur sa propre carte ou d’utiliser la sortie standard en codes ANSI via une console USB
- Publié sous licence MIT avec l’objectif d’élargir l’écosystème
Aperçu de BreezyBox
- Projet de démonstration permettant d’utiliser un ESP32-S3 comme un PC sans Linux, avec des fonctions de shell, d’éditeur, de compilateur et d’installation d’apps
- Il vise une expérience proche de celle d’un Raspberry Pi, mais sans la surcharge d’un OS de niveau serveur/desktop
- BreezyBox est un composant de mini-shell basé sur ESP-IDF, qui met en place un environnement simple d’exécution de commandes
- L’ESP32-S3 dispose d’une structure de ressources comparable à celle des PC de l’ère DOS, avec en plus des fonctions de communication sans fil
- Le projet décrit le potentiel de cette puce comme une « technologie petite et élégante », tout en minimisant la taille du code
Composition de BreezyBox
- BreezyBox comprend vterm, VFS, le suivi du CWD, des commandes de type UNIX et un installateur d’apps
- Le chargeur ELF et les fonctions d’édition de liens dynamiques sont déjà inclus dans les composants ESP-IDF
- Le nom s’inspire de BusyBox, et l’ensemble prend la forme d’une couche en espace utilisateur fonctionnant sur FreeRTOS
- Il peut être ajouté à un projet ESP-IDF en une ligne et fonctionne avec les seules entrées/sorties de base
Caractéristiques du dépôt de démonstration
- Ce dépôt est une implémentation d’exemple de BreezyBox, configurée pour une carte spécifique (Waveshare ESP32-S3-Touch-LCD-7B)
- BreezyBox délègue l’affichage et la configuration de la carte au firmware de l’utilisateur
- Les utilisateurs peuvent s’appuyer sur le code pour l’adapter à leur propre carte ou écran
- L’utilisation du contrôle de label texte LVGL simplifie l’implémentation de la sortie LCD, et l’exécution via une console USB est également possible
Utilisation
- Il est possible de forker puis cloner le dépôt pour l’exécuter sur sa propre carte
- Testé sur une carte d’environ 40 euros, et également utilisable sur des cartes LCD S3 à bas coût
- En utilisant une console USB, on peut vérifier la sortie en codes ANSI dans l’IDF Monitor de VSCode ou dans Tabby
- Le moteur de rendu de police a été écrit à la main, mais il s’agit d’une implémentation optionnelle choisie pour garantir des performances supérieures à 30 FPS
Contributions et extension
- Le projet est publié sous licence MIT, ce qui permet de le modifier et de le redistribuer librement
- Éléments pour lesquels des contributions sont demandées
- Ajout d’apps ELF : il est possible de créer de nouvelles apps en s’appuyant sur les exemples du dépôt breezyapps
- Exemples de firmware pour diverses cartes : propositions variées bienvenues, en C/C++, avec GUI, portages de jeux rétro, etc.
- L’objectif est d’encourager davantage d’utilisateurs à exploiter BreezyBox et d’élargir un écosystème d’exemples immédiatement réutilisables
1 commentaires
Avis Hacker News
Projet vraiment génial. Je vais l’essayer moi-même
J’ai aussi vu deux autres projets liés
Boot-Linux-ESP32S3-Playground
Le fait que le démarrage soit instantané est vraiment génial. Ce genre de projet, ou des choses comme Fruit Jam d’Adafruit, montre bien qu’« enlever la complexité inutile apporte beaucoup »
J’aimerais donner ça comme premier ordinateur à un enfant
Je sais maintenant quoi faire le week-end prochain. Je comptais acheter un esp32-s3 pour un autre projet, mais maintenant je vais devoir en prendre deux
Blog comparatif des options de SoC ESP32
Je trouve que le rapport qualité-prix de ces cartes est incroyable. Je compte m’en servir comme remplacement de KVM
En flashant ESP32-Bus-Pirate et en le connectant à un appareil à contrôler à distance, c’est super pratique. La consommation est quasi nulle, donc je le laisse connecté en permanence au Wi-Fi
Je me demande s’il serait possible de le porter pour qu’il tourne aussi sur rp2350
Oh, c’est toi qui as créé xcc700 ! Je m’intéresse beaucoup à l’usage des MCU pour du calcul généraliste. Je me demande jusqu’où on peut pousser ça
Tu te souviens peut-être que FabGL faisait tourner des démos de jeux et d’émulation DOS. Mais avec les versions récentes d’ESP-IDF, c’est difficile à mettre à jour
Du coup, je suis en train de le reconstruire avec une architecture plus modulaire, pour qu’il soit maintenable dans le temps. Quelqu’un a même réussi à faire tourner une ancienne version de MacOS en simulation
Vraiment génial ! Il faut absolument que j’installe ça tout de suite sur un M5Stack Cardputer
Sans modèle mémoire plat, ce n’est pas difficile d’implémenter un OS généraliste ? L’Amiga1000 n’avait pas de MMU non plus, mais il avait un modèle mémoire plat. J’imagine qu’il a fallu pas mal de travail compliqué pour contourner ça
La raison pour laquelle un OS généraliste est difficile sur cette plateforme, c’est surtout l’absence de protection mémoire. Mais moi, je voulais simplement faire un shell et un installateur d’apps, donc j’ai pu contourner ça
Je découvre BreezyBox pour la première fois, et je trouve ça vraiment intéressant. Je n’ai pas envie de me préoccuper de la config Wi-Fi ou des mises à jour, je veux juste écrire mon appli
Je ne comprenais pas pourquoi il n’existait pas un simple OS pour microcontrôleur qui prenne ça en charge à ma place. Ça pourrait peut-être en devenir la base
Je me demande s’il existe un flux de configuration pour les déploiements headless (config Wi-Fi au flashage, déploiement d’un shell distant / d’une interface web, etc.)
Un accès web pour la configuration à distance semble faisable. Il y a déjà un serveur web, donc il suffirait de l’étendre pour exécuter du code côté serveur
Question de débutant : c’est spécifique au S3, ou ça peut aussi tourner sur C3 ?
Les binaires ELF installés via eget doivent aussi être recompilés pour RISC-V. Ce serait probablement une bonne idée d’ajouter la prise en charge d’un manifeste pour distinguer les ELF selon la plateforme
Il faut aussi tenir compte de la quantité de PSRAM disponible