- Demo-Projekt, das den ESP32-S3-Mikrocontroller in einen kompakten, sofort bootfähigen PC verwandelt und eine Shell, einen Editor, einen Compiler sowie einen App-Installer bereitstellt
- BreezyBox ist eine Mini-Shell-Komponente für ESP-IDF und enthält UNIX-ähnliche Befehle sowie vterm- und VFS-Funktionen
- Läuft auf dem Waveshare ESP32-S3-Touch-LCD-7B-Board und lässt sich leicht auf andere Boards übertragen
- Nach dem Fork kann es auf dem eigenen Board ausgeführt werden; über die USB-Konsole lässt sich zudem standardisierte ANSI-Code-Ausgabe nutzen
- Unter der MIT-Lizenz veröffentlicht und mit dem Ziel, das Ökosystem zu erweitern
Überblick über BreezyBox
- Ein Demo-Projekt, mit dem sich der ESP32-S3 auch ohne Linux wie ein PC nutzen lässt, inklusive Shell-, Editor-, Compiler- und App-Installationsfunktionen
- Die Nutzbarkeit orientiert sich an Raspberry Pi, jedoch ohne den Overhead eines Server- oder Desktop-Betriebssystems
- BreezyBox ist eine auf ESP-IDF basierende Mini-Shell-Komponente, die eine einfache Befehlsausführungsumgebung bereitstellt
- Der ESP32-S3 besitzt eine Ressourcenstruktur ähnlich zu PCs aus der DOS-Ära und enthält Wireless-Kommunikationsfunktionen
- Das Projekt beschreibt das Potenzial dieses Chips als „kleine, elegante Technik“ und hält den Codeumfang minimal
Aufbau von BreezyBox
- BreezyBox umfasst vterm, VFS, CWD-Tracking, UNIX-ähnliche Befehle und einen App-Installer
- ELF-Loader und dynamische Link-Funktionen sind bereits in den ESP-IDF-Komponenten enthalten
- Der Name ist von BusyBox inspiriert; die Software bildet eine User-Space-Schicht auf FreeRTOS
- Lässt sich mit einer Zeile zu einem ESP-IDF-Projekt hinzufügen und funktioniert bereits mit grundlegender Ein-/Ausgabe
Merkmale des Demo-Repositorys
- Dieses Repository ist eine Beispielimplementierung von BreezyBox und auf ein bestimmtes Board (Waveshare ESP32-S3-Touch-LCD-7B) zugeschnitten
- BreezyBox überlässt Anzeige- und Board-Konfiguration der Benutzer-Firmware
- Nutzer können den Code als Referenz verwenden und an ihr eigenes Board oder Display anpassen
- Mit dem LVGL-Text-Label-Control lässt sich die LCD-Ausgabe einfach umsetzen; außerdem kann es auch über die USB-Konsole laufen
Verwendung
- Das Repository kann geforkt und anschließend geklont werden, um es auf dem eigenen Board auszuführen
- Es wurde auf einem Board für etwa 40 Euro getestet und kann auch auf günstigen LCD-S3-Boards genutzt werden
- Mit der USB-Konsole lässt sich die ANSI-Code-Ausgabe in VSCode IDF Monitor oder Tabby prüfen
- Der Font-Renderer wurde selbst geschrieben, ist jedoch eine optionale Implementierung zur Sicherstellung von über 30 FPS Leistung
Beiträge und Erweiterungen
- Das Projekt steht unter der MIT-Lizenz und kann frei modifiziert und weiterverteilt werden
- Gewünschte Beiträge
- ELF-Apps hinzufügen: Neue Apps können anhand der Beispiele im
breezyapps-Repository erstellt werden
- Firmware-Beispiele für verschiedene Boards: Vorschläge reichen von C/C++-basierten Varianten über GUI bis hin zu Portierungen von Retro-Spielen
- Ziel ist es, mehr Nutzer für BreezyBox zu gewinnen und ein Ökosystem aus sofort nachbaubaren Beispielen auszubauen
1 Kommentare
Hacker-News-Kommentare
Wirklich ein großartiges Projekt. Ich werde es selbst ausprobieren.
Ich habe auch zwei andere verwandte Projekte gesehen.
Boot-Linux-ESP32S3-Playground
Dass es sofort bootet, ist wirklich großartig. Wenn man solche Projekte oder Adafruits Fruit Jam sieht, zeigt das: „Wenn man unnötige Komplexität entfernt, gewinnt man viel.“
So etwas würde ich meinem Kind gern als ersten Computer geben.
Jetzt ist klar, was ich nächstes Wochenende machen werde. Ich wollte eigentlich einen esp32-s3 für ein anderes Projekt kaufen, aber jetzt muss ich wohl zwei kaufen.
Blog zum Vergleich der ESP32-SoC-Optionen
Ich finde, das Preis-Leistungs-Verhältnis dieser Boards ist verrückt. Ich plane, sie als KVM-Ersatz zu verwenden.
Wenn man ESP32-Bus-Pirate flasht und an das Gerät anschließt, das man remote steuern will, ist das extrem praktisch. Der Stromverbrauch ist auch fast null, also lasse ich es dauerhaft mit dem Wi-Fi verbunden.
Ich frage mich, ob man das so portieren könnte, dass es auch auf dem rp2350 läuft.
Oh, bist du die Person, die xcc700 gebaut hat! Ich interessiere mich sehr dafür, MCUs für allgemeines Computing zu verwenden. Ich frage mich, wie weit man das treiben kann.
Vielleicht erinnerst du dich daran, dass FabGL früher Demos mit Spielen und DOS-Emulation laufen ließ. Mit aktuellem ESP-IDF ist ein Update aber schwierig.
Deshalb baue ich es mit einer modulareren Struktur neu auf, damit es langfristig wartbar bleibt. Jemand hat sogar einmal eine ältere MacOS-Version per Emulation darauf laufen lassen.
Wirklich großartig! Das muss direkt auf den M5Stack Cardputer.
Ist die Implementierung eines allgemeinen OS ohne flaches Speichermodell nicht schwierig? Der Amiga1000 hatte zwar auch keine MMU, aber ein flaches Speichermodell. Um das zu umgehen, war vermutlich einiges an komplexer Arbeit nötig.
Der Grund, warum ein allgemeines OS auf dieser Plattform schwierig ist, ist das Fehlen von Speicherschutz. Aber ich wollte einfach nur eine Shell und einen App-Installer bauen, und dafür ließ sich das lösen.
Ich bin jetzt zum ersten Mal auf BreezyBox gestoßen und finde es wirklich spannend. Ich wollte mich nicht mit Dingen wie Wi-Fi-Einrichtung oder Updates beschäftigen, sondern einfach nur meine App schreiben.
Ich habe nie verstanden, warum es kein einfaches Mikrocontroller-OS gibt, das so etwas übernimmt. Das hier könnte eine Basis dafür sein.
Ich frage mich, ob es einen Konfigurations-Flow für Headless-Deployments gibt, etwa Wi-Fi-Setup beim Flashen, Remote-Shell oder Deployment einer Web-UI.
Web-Zugriff für Remote-Konfiguration dürfte sich umsetzen lassen. Es gibt bereits einen Webserver, man müsste ihn nur erweitern, damit serverseitiger Code ausgeführt werden kann.
Anfängerfrage: Ist das nur für den S3 gedacht, oder könnte es auch auf dem C3 laufen?
Die per eget installierten ELF-Binärdateien müssten ebenfalls für RISC-V neu kompiliert werden. Um ELF-Dateien nach Plattform zu unterscheiden, wäre es sinnvoll, Manifest-Unterstützung hinzuzufügen.
Außerdem müsste man berücksichtigen, wie viel PSRAM überhaupt vorhanden ist.