Los microcontroladores ESP32 de Espressif son de los favoritos de makers y desarrolladores por su bajo costo, su buen rendimiento y la conectividad inalámbrica que traen integrada. Sirven para todo, desde sensores IoT básicos hasta proyectos de robótica elaborados, pero no son el tipo de hardware donde uno espera ver un sistema operativo completo. Eso empieza a cambiar con el nuevo ESP32-S31, que tiene potencia suficiente para correr Linux. A diferencia de los trucos anteriores, esta vez Espressif respalda el esfuerzo de manera oficial.

¿Qué tiene el ESP32-S31 para correr Linux?

El ESP32-S31 es un microcontrolador RISC-V de doble núcleo que funciona hasta 320 MHz. Soporta Wi-Fi 6, Bluetooth y Zigbee, además de una larga lista de periféricos, entre ellos GPIO, SPI, I2C y Ethernet. Esas capacidades ya lo hacen atractivo para proyectos embebidos, pero lo que le permite correr una distribución Linux completa es su unidad de gestión de memoria (MMU).

A diferencia de la mayoría de los microcontroladores, el ESP32-S31 soporta memoria virtual mediante una tabla de páginas de dos niveles y traducción de direcciones por hardware. También ofrece varios niveles de privilegio, con lo que el sistema operativo puede separar las operaciones del kernel de las aplicaciones de usuario. Con eso se puede correr un kernel de Linux completo y no las variantes recortadas sin MMU que a veces se usan en hardware más limitado.

La rama oficial de Espressif

Para apoyar estos trabajos, Espressif publicó una rama de desarrollo oficial de Linux 6.18 para el ESP32-S31. El proyecto sigue en vista previa para desarrolladores y la empresa no lo recomienda para producción, pero ahorra mucho tiempo a quien quiera experimentar. Eso sí, el kernel hay que compilarlo por cuenta propia.

¿Hay una forma más rápida de partir?

Existe otra opción que facilita todavía más el comienzo. El desarrollador GrieferPig publicó un port no oficial de Linux 6.18 con imágenes precompiladas que se graban directo en las placas de desarrollo compatibles con el ESP32-S31. El proyecto incluye soporte para multiprocesamiento simétrico en los dos núcleos, almacenamiento persistente, Wi-Fi, Bluetooth, GPIO y UART.

Varias de esas funciones ya figuran como estables. Otras siguen en fase experimental:

  • I2C
  • SPI
  • Ethernet
  • USB en modo gadget
  • interfaces de audio

El port trae además BusyBox, que entrega un entorno de línea de comandos conocido para manejar el hardware.

Los límites del experimento

Las limitaciones son muchas. El ESP32-S31 tiene bastante menos memoria que un computador Linux normal y no tiene GPU para aplicaciones gráficas. No va a reemplazar a una Raspberry Pi en el corto plazo, sobre todo en proyectos que necesiten un entorno de escritorio o una capacidad de proceso alta.

Aun así, correr un kernel de Linux completo en un microcontrolador de bajo costo tiene aplicaciones. La mayoría de los proyectos embebidos seguirá estando mejor servida con FreeRTOS o con ESP-IDF, el framework de Espressif, pero tener Linux como alternativa abre otras posibilidades. Según Hackster, a medida que los microcontroladores ganan potencia, la frontera que los separa de los computadores de placa única se vuelve cada vez más difusa.