- Proyecto de demostración que convierte el microcontrolador ESP32-S3 en una mini PC de arranque inmediato, ofreciendo shell, editor, compilador e instalador de apps
- BreezyBox es un componente de mini shell para ESP-IDF, que incluye comandos tipo UNIX,
vterm y funciones de VFS
- Funciona en la placa Waveshare ESP32-S3-Touch-LCD-7B y puede adaptarse fácilmente a otras placas
- Después de hacer un fork, puede ejecutarse en tu propia placa o aprovechar la salida estándar con códigos ANSI mediante la consola USB
- Publicado bajo licencia MIT con el objetivo de expandir el ecosistema
Resumen de BreezyBox
- Proyecto de demostración para usar el ESP32-S3 como si fuera una PC incluso sin Linux, con funciones de shell, editor, compilador e instalación de apps
- Apunta a una experiencia de uso similar a Raspberry Pi, pero sin la sobrecarga de un SO de nivel servidor/escritorio
- BreezyBox es un componente de mini shell basado en ESP-IDF que construye un entorno simple de ejecución de comandos
- El ESP32-S3 tiene una estructura de recursos similar a la de las PC de la era DOS e incluye capacidades de comunicación inalámbrica
- El proyecto describe el potencial de este chip como una “tecnología pequeña y elegante”, minimizando al máximo el tamaño del código
Componentes de BreezyBox
- BreezyBox incluye
vterm, VFS, seguimiento de CWD, comandos tipo UNIX e instalador de apps
- El cargador ELF y la función de enlazado dinámico ya están incluidos en los componentes de ESP-IDF
- El nombre está inspirado en BusyBox y adopta la forma de una capa de espacio de usuario que corre sobre FreeRTOS
- Puede añadirse a un proyecto ESP-IDF con una sola línea y funciona incluso con solo E/S básica
Características del repositorio demo
- Este repositorio es una implementación de ejemplo de BreezyBox, configurada para una placa específica (Waveshare ESP32-S3-Touch-LCD-7B)
- BreezyBox delega la configuración de la pantalla y de la placa al firmware del usuario
- El usuario puede tomar el código como referencia y modificarlo para su propia placa o pantalla
- Usando el control de etiqueta de texto de LVGL, la implementación de salida en LCD se simplifica, y también puede ejecutarse en una consola USB
Cómo usarlo
- Puedes hacer fork y luego clonar el repositorio para ejecutarlo en tu propia placa
- Se probó en una placa de unos 40 euros y también puede usarse en placas S3 LCD de bajo costo
- Con la consola USB puedes ver la salida con códigos ANSI en IDF Monitor de VSCode o en Tabby
- El renderizador de fuentes fue escrito a mano, pero esto fue una implementación opcional elegida para asegurar un rendimiento de más de 30 FPS
Contribución y expansión
- El proyecto está publicado bajo licencia MIT, por lo que puede modificarse y redistribuirse libremente
- Elementos para contribuir
- Agregar apps ELF: se pueden crear nuevas apps tomando como referencia los ejemplos del repositorio breezyapps
- Ejemplos de firmware para varias placas: se proponen distintos formatos, como base C/C++, con GUI o incluso ports de juegos retro
- El objetivo es que más usuarios aprovechen BreezyBox y expandan un ecosistema de ejemplos fácilmente replicables
1 comentarios
Comentarios de Hacker News
Es un proyecto realmente genial. Pienso probarlo yo mismo
También vi otros dos proyectos relacionados
Boot-Linux-ESP32S3-Playground
Está buenísimo que arranque al instante. Ver proyectos como este o Fruit Jam de Adafruit demuestra que “si eliminas la complejidad innecesaria, ganas mucho”
Me gustaría darle algo así a un niño como su primera computadora
Ya se decidió qué voy a hacer el próximo fin de semana. Iba a comprar un esp32-s3 para otro proyecto, pero ahora voy a tener que comprar dos
Blog comparando opciones de SoC ESP32
Creo que la relación precio/rendimiento de estas placas es una locura. Planeo usar esto como reemplazo de un KVM
Si le flasheas ESP32-Bus-Pirate y lo conectas al equipo que vas a controlar de forma remota, resulta muy práctico. Además casi no consume energía, así que lo dejo siempre conectado al Wi-Fi
Me pregunto si se podría portar para que también corra en rp2350
Oh, ¿eres la persona que hizo xcc700! Me interesa mucho usar MCUs para cómputo de propósito general. Tengo curiosidad por saber hasta dónde se puede llevar
Tal vez recuerdes que hace tiempo FabGL corría demos de juegos y emulación de DOS. Pero en las versiones recientes de ESP-IDF es difícil de actualizar
Así que lo estoy rehaciendo con una estructura más modular. Para que pueda mantenerse por mucho tiempo. Incluso hubo quien logró correr versiones viejas de MacOS mediante simulación
¡Está increíble! Tengo que instalar esto ya mismo en la M5Stack Cardputer
Sin un modelo de memoria plana, ¿no sería difícil implementar un OS general? La Amiga1000 no tenía MMU, pero sí un modelo de memoria plano. Imagino que para evitar eso debió hacer falta bastante trabajo complejo
La razón por la que un OS general es difícil en esta plataforma es la ausencia de protección de memoria. Pero yo solo quería hacer un shell y un instalador de apps, así que hasta ahí pude resolverlo
Esta es la primera vez que veo BreezyBox y me parece realmente interesante. No quiero preocuparme por la configuración de Wi-Fi o las actualizaciones; solo quiero escribir mi app
No entendía por qué no existía un OS para microcontroladores simple que se encargara de esas cosas. Esto podría convertirse en la base de algo así
Me pregunto si existe un flujo de configuración para despliegues headless (configurar Wi-Fi al flashear, desplegar shell remota/web UI, etc.)
El acceso web para configuración remota probablemente se puede implementar. Ya existe un servidor web, así que bastaría con extenderlo para ejecutar código del lado del servidor
Pregunta de principiante: ¿esto es exclusivo para S3 o también podría correr en C3?
Los binarios ELF que se instalan con eget también tendrían que recompilarse para RISC-V. Sería buena idea agregar soporte de manifest para distinguir los ELF por plataforma
También habría que considerar cuánta PSRAM hay disponible