El proyecto de Clem Mayer inspirado en el Raspberry Pi Compute Module 4 es una combinación de ESP32-S3, RP2040 y mucho más, todo en una única y compacta placa de circuito impreso.
¿Por qué utilizar un sistema operativo en el ESP32?
En el mundo maker, la mayoría de los proyectos toman uno de dos caminos: utilizar una placa bare-metal como un Arduino Uno, o ir con una placa más completa como la Raspberry Pi 4B. La primera es una gran opción para realizar una sola tarea rápidamente, pero los recursos limitados y la flexibilidad del bare metal dejan mucho que desear. Por otro lado, un sistema operativo Linux completo puede manejar mucho más simultáneamente, aunque también introduce una sobrecarga adicional y una complejidad innecesaria.
Puede leer también | Ubuntu 23.10 dará soporte oficial a la Raspberry Pi 5 y todas sus novedades
En los sistemas en chip (SoC) de nivel medio, como la gama ESP32, PSoC6 y otros dispositivos similares, los desarrolladores tienen la opción de utilizar FreeRTOS, un sistema operativo ligero y en tiempo real para gestionar múltiples tareas, periféricos, acceso a archivos y mucho más, aunque carece de muchas de las comodidades de una distribución típica de Linux. Para Clem Mayer, presentador de element14 Presents, tenía que haber una forma mejor, así que se dispuso a crear su propio módulo informático con Linux integrando el ESP32-S3.
Diseño del primer prototipo
Mayer comenzó su tarea creando una plantilla esquemática basada en el Compute Module 4, de modo que pudiera mantener la paridad con los pinouts de la PCB para su uso en placas base existentes. A partir de aquí, conectó el SoC ESP32-S3 a los circuitos de gestión de energía, un puerto USB-C y dos cabezales para la interconexión con placas externas.
Puede leer también | Raspberry Pi OS trae Linux Kernel 6.1 LTS y Chromium 113
Tras recibir la PCB de 4 capas, montó los componentes en cada lado, aunque con algunos problemas debido a la dificultad para alinear los conectores en paralelo.
Arranque
Con los archivos binarios precompilados, Mayer creó un breve script que ejecuta cada paso en orden. En primer lugar, se carga un cargador de arranque que permite iniciar el sistema operativo. A continuación, se carga la tabla de particiones para almacenar la estructura del sistema de archivos y otros metadatos y, por último, se cargan los archivos del sistema operativo.
Puede leer también | Raspberry Pi 5 posiblemente integre su CPU aprendizaje automático
La salida del terminal se dirige automáticamente a la interfaz UART, donde se pueden observar los mensajes de arranque para asegurarse de que todo funciona según lo previsto.
Espacio para las mejoras
Teniendo en cuenta lo básica que era la primera versión, Mayer volvió a KiCad para incluir algunas mejoras más. Además de un simple interruptor de selección de arranque, añadió un microcontrolador RP2040 IC (el mismo que el Raspberry Pi Pico) para que pudiera utilizarse como controlador de vídeo o incluso como CPU principal en un proyecto típico no Linux.
Puede leer también | Distribuciones GNU/Linux que puedes instalar en la Raspberry Pi
Gracias al subsistema de E/S programable del chip, en teoría se podrían generar señales DVI desde el ESP32 enviando comandos que, a su vez, mostraran primitivas gráficas y texto en una pantalla externa.
¿Qué puede hacer SudoSoM?
Aunque Mayer no pudo completar la parte de la GPU para la versión 2 de su proyecto SudoSoM, la funcionalidad existente sigue siendo bastante impresionante. Como de costumbre, los comandos de directorio de archivos como cd y ls están presentes, lo que le permite ver los archivos. El único directorio en el que se puede escribir hasta ahora es /etc, y es aquí donde se puede establecer la configuración WiFi para conectarse a una red y permitir el uso de wget, FTP, SSH u otras utilidades de red.