Espressif Systems lanza una versión preliminar para desarrolladores del BSP de Linux para el microprocesador RISC-V ESP32-S31

El microprocesador ESP32-S31 recibe soporte de Linux por parte de Espressif Systems. El microprocesador RISC-V de doble núcleo ESP32-S31 se presentó por primera vez en marzo, dos placas de desarrollo basadas en el ESP32-S31 llegaron en mayo y hace unas semanas se anunció el inicio de su producción en masa.

El nuevo chip RISC-V incorpora una MMU (unidad de gestión de memoria), lo que facilita enormemente el manejo de Linux, y las placas de desarrollo incluyen además 16 MB de PSRAM, por lo que es posible ejecutar una imagen mínima de Linux. De la teoría a la práctica: Espressif Systems acaba de publicar una versión preliminar para desarrolladores del BSP de Linux de ESP para el ESP32-S31, y también hay en marcha varios ports de Linux realizados por la comunidad (más sobre esto al final del artículo).

Linux en el ESP32-S31

Centrémonos en el BSP oficial de Linux de ESP. El repositorio mencionado solo contiene el esquema de la imagen y las herramientas de empaquetado utilizadas en la integración de Buildroot para el ESP32-S31; el núcleo del proyecto se encuentra en el repositorio esp-buildroot-external, que incluye la pila de arranque NOR del ESP32-S31 y el sistema de archivos raíz con Buildroot 2025.02, junto con las instrucciones para compilar y flashear una imagen. También puedes consultar directamente el código fuente del fork del kernel Linux 6.18 utilizado en la versión preliminar.

No tengo ninguna placa, así que me limitaré a intentar compilar la imagen de Linux. Para ello sigue siendo necesaria una versión reciente de la utilidad esptool. La mía era la 4.7.0, pero el ESP32-S31 requiere esptool 5.3.0 o superior, así que la he actualizado de la siguiente manera:

Comprobemos la versión:

Descarguemos el código siguiendo las instrucciones del repositorio Buildroot External Tree:

Os habréis dado cuenta de que no ha hecho falta clonar el repositorio esp-linux-bsp, ya que Buildroot lo descargará automáticamente.

Configuremos la compilación:

Asegurémonos de que el proceso se completa correctamente y de que se genera el archivo de configuración:

Ya estamos listos para compilar Linux para el ESP32-S31:

Esta parte tardó bastante, más de una hora, ya que el sistema descarga los paquetes y los compila. Aun así, ya tenemos nuestra imagen de Linux lista para flashear en la placa.

Contenido del directorio:

Si tenéis una placa ESP32-S31, deberíais poder utilizar el siguiente comando para flashear la imagen del sistema operativo:

La consola de Linux debería ser accesible a 115200 baudios.

Tened en cuenta que, por ahora, el BSP de Linux es solo para experimentación, no está recomendado para producción y está dirigido únicamente al ESP32-S31. Espressif también menciona «actualizaciones irregulares», posibles «cambios que rompen la compatibilidad», «aceptación limitada de funciones» y que los errores se corregirán «en la medida de lo posible» durante la vista previa para desarrolladores. Tampoco está claro qué se ha implementado hasta ahora: por ejemplo, ¿funciona el WiFi?

Además del BSP oficial de Linux, al menos dos proyectos de la comunidad están portando Linux a la placa ESP32-S31-Korvo-1:

  • El trabajo de GrieferPig es un port de Linux 6.12 RV32 con MMU que se ejecuta de forma nativa en un microcontrolador ESP32-S31. El rootfs de Buildroot y el reinicio son estables, el apagado no está implementado y funciones como el WiFi, el modo Bluetooth dual y el soporte de doble núcleo son experimentales. Podéis consultar el estado completo y el código en GitHub.
  • El esp32-s31-linux de Marco lleva Linux 7.1 y OpenSBI 1.9 a la placa ESP32-S31 Korvo-1. La mayoría de los periféricos, salvo el panel LCD, la ranura microSD, el host USB y el módem WLAN, aún no están habilitados. Echad un vistazo al proyecto en GitHub.
Port de Linux 6.12 de GrieferPig para el ESP32-S31
El port de Linux 6.12 de GrieferPig para el ESP32-S31

Gracias a Andy por la pista.

Traducido del artículo en inglés «Espressif Systems releases a Linux BSP developer preview for ESP32-S31 RISC-V microprocessor» de Jean-Luc Aufranc (CNXSoft).