microcontroladores

Linux 6.11 se ejecuta de forma nativa en un microcontrolador ESP32-S3

El proyecto habilita Wi-Fi, Bash y almacenamiento de escritura en un módulo con recursos limitados

El hito, según detalla Hackster.io, rompe con el requisito habitual de Linux de operar en plataformas con cientos de megabytes de RAM y procesadores específicamente diseñados para sistemas operativos complejos. El ESP32-S3, por contraste, es un microcontrolador de doble núcleo con apenas unos pocos megabytes de RAM externa.

La ejecución de Linux no se realiza a través de emulación. El kernel se compila directamente para la arquitectura Xtensa del ESP32-S3 y se ejecuta en uno de sus dos núcleos LX7. El núcleo restante se encarga de operar FreeRTOS, que gestiona el hardware Wi-Fi del chip. La comunicación entre ambos núcleos se establece mediante memoria compartida, permitiendo a Linux acceder a la red inalámbrica sin control directo sobre el módulo de radio.

Este sistema completo funciona sobre un único módulo ESP32-S3 N16R8, que integra 16 MB de memoria flash y 8 MB de PSRAM Octal. Una vez programado, el dispositivo no requiere de tarjetas SD, RAM externa adicional o un segundo ordenador. El sistema de archivos raíz se aloja en una partición cramfs de solo lectura directamente en la memoria flash, mientras que dos particiones JFFS2 separadas proporcionan directorios /etc y /home con capacidad de escritura.

El proyecto ha abordado desafíos técnicos significativos. Se resolvió un problema intermitente en el arranque que afectaba a aproximadamente uno de cada diez inicios de fábrica. Este error se atribuyó a la caché de flash compartida del ESP32-S3, que no se invalidaba correctamente tras las escrituras en JFFS2, llevando al kernel a leer datos desactualizados. Una corrección de firmware de cuatro líneas eliminó la incidencia en 55 pruebas de arranque consecutivas. La solución de este problema también facilitó el desarrollo de una implementación de la llamada fork más eficiente. Operar Linux en el ESP32-S3 sin una unidad de gestión de memoria (NOMMU) convencional dificulta la gestión de procesos. Sin embargo, un nuevo método de intercambio de conjuntos de páginas ha reducido aproximadamente a la mitad la memoria adicional requerida por los programas que utilizan fork. Estas mejoras, junto con otros ajustes, incrementaron la memoria disponible tras el arranque de aproximadamente 1,3 MB a 3,7 MB.

A pesar de sus limitaciones —como la naturaleza de NOMMU Linux, la imposibilidad de ejecutar binarios de escritorio arbitrarios y la lentitud inherente a las escrituras intensivas en el sistema de archivos JFFS2—, el sistema proporciona funcionalidades notables. Se dispone de Bash 5.2 como shell de inicio, junto con BusyBox, Dash, GNU Make, MicroPython, nano, curl, cron y utilidades de red. También se ofrecen servidores SSH y HTTP opcionales, demostrando el potencial de un sistema Linux moderno en un entorno de microcontrolador.

Fuente original: Hackster.io

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *