L’ESP32-S31 può eseguire Linux con un’unità di gestione della memoria (MMU), non solo una variante che ne è priva. Espressif ha pubblicato un’anteprima per sviluppatori del suo BSP Linux per questo microprocessore RISC-V dual-core; è un risultato notevole per un chip della famiglia ESP32, anche se la stessa azienda lo colloca ancora nell’ambito della sperimentazione.
L’articolo di Hackaday del 7 novembre sottolinea proprio questa differenza: l’S31 dispone di MMU, un componente che consente di eseguire la versione completa di Linux menzionata nella notizia, anziché limitarsi a Linux senza MMU. L’annuncio arriva dopo l’avvio della produzione in serie del chip, comunicato da Espressif il 27 luglio, e la comparsa delle schede di sviluppo.
Un ESP32 con Linux e MMU
L’ESP32-S31 è un RISC-V dual-core. Nell’annuncio della produzione, Espressif ha specificato che la sua CPU a 32 bit raggiunge fino a 320 MHz e che uno dei core integra un percorso dati a 128 bit e un set di istruzioni SIMD per accelerare i calcoli. Ha inoltre indicato che il SoC integra un coprocessore a basso consumo da 40 MHz, 512 KB di SRAM interna, fino a 60 GPIO e supporto per l’espansione DDR PSRAM a 250 MHz.
La connettività comprende Wi-Fi 6 a 2,4 GHz, Bluetooth 5.4 — con LE Audio e Classic BR/EDR —, IEEE 802.15.4 per Zigbee e Thread e un MAC Ethernet Gigabit. Espressif elenca anche la compatibilità con Matter su Wi-Fi e Thread. Sono caratteristiche del chip; non implicano che siano già tutte operative nel BSP Linux.
Per interagire con schermi e altri dispositivi, l’S31 offre interfacce per fotocamere DVP, diversi tipi di LCD e fino a 14 canali touch capacitivi. Espressif cita acceleratori hardware per JPEG e grafica 2D, oltre a due controller I2S che consentono di sincronizzare l’audio Bluetooth a livello hardware. Il SoC è compatibile con ESP-IDF e con i componenti dell’ecosistema Espressif, tra cui ESP-Matter, ESP-GMF, ESP-BLE-MESH e ESP-BLE-AUDIO; può anche funzionare come coprocessore di connettività tramite ESP-Hosted e ESP-AT.
Buildroot e un kernel 6.18 nell’anteprima
Il supporto ufficiale è distribuito tra diversi repository. Il progetto esp-linux-bsp contiene la definizione dell’immagine e gli strumenti di packaging usati dall’integrazione con Buildroot. La maggior parte della configurazione si trova in esp-buildroot-external: include l’avvio da NOR e un file system root creato con Buildroot 2025.02. Espressif mantiene inoltre un fork del kernel Linux per il chip.
L’anteprima ufficiale usa Linux 6.18, secondo la pagina del repository Espressif. Il flusso di Buildroot riunisce componenti come U-Boot SPL, U-Boot FIT, il device tree di Linux, il kernel XIP e un file system root cramfs in un’immagine chiamata s31_full_flash.bin. Il BSP include istruzioni per generare e scrivere l’immagine; il repository documenta anche gli strumenti per impacchettare lo SPL e creare un FIT diagnostico.
CNX Software ha provato la compilazione, anche se l’autore ha spiegato di non avere una scheda e di non aver quindi potuto verificare l’avvio sull’hardware. Nel suo test, il processo ha scaricato pacchetti e compilato il sistema per oltre un’ora. Per l’ESP32-S31 è necessario esptool 5.3.0 o successivo: l’autore aveva la versione 4.7.0 e ha dovuto aggiornarla. Una volta scritto il firmware, la console Linux dovrebbe essere disponibile a 115200 baud.
Anche la memoria delimita la portata pratica di questi test. CNX Software osserva che le schede di sviluppo citate includono 16 MB di PSRAM, sufficienti per prendere in considerazione un’immagine Linux minima. Hackaday avverte, a sua volta, che le risorse del dispositivo non offrono una grande capacità di calcolo. La presenza della MMU rende possibile eseguire Linux, ma non trasforma il microcontrollore in un sistema ad alte prestazioni.
Un BSP solo per sperimentare
Espressif non consiglia il BSP per la produzione e, per ora, lo limita all’ESP32-S31. Il repository definisce il branch integration/v1.0-esp32s31 un’anteprima per sviluppatori, pensata per la convalida tecnica, la valutazione e la raccolta di feedback. Non garantisce una cadenza regolare degli aggiornamenti né la compatibilità API o ABI.
La policy pubblicata da Espressif avverte che potrebbero verificarsi modifiche incompatibili senza preavviso e che l’accettazione di nuove funzionalità è limitata. Le segnalazioni di bug sono benvenute, ma potrebbero essere rimandate; le correzioni saranno gestite secondo il miglior impegno possibile e le richieste di modifica verranno esaminate caso per caso. L’azienda sconsiglia inoltre il branch per progetti a lungo termine che richiedono stabilità e per sistemi critici.
Resta inoltre una questione concreta sulle funzionalità disponibili: CNX Software osserva che non era chiaro se il Wi-Fi funzionasse nel BSP ufficiale. È quindi opportuno distinguere il catalogo di connettività annunciato per il SoC da ciò che il port Linux offre oggi. L’anteprima fornisce gli strumenti per creare e provare un’immagine, ma non dimostra che tutte le periferiche siano supportate.
I port della community avanzano autonomamente
Il BSP ufficiale non è l’unico lavoro in corso. CNX Software ha descritto due port realizzati dalla community per la scheda ESP32-S31-Korvo-1. Uno è quello di GrieferPig, il cui repository, nella versione consultata, presenta Linux 6.18 nativo con MMU RV32 e dichiara di averlo testato su un modulo ESP32-S31-WROOM-3 E1H16R16V, identificato come ESP32-S31 Coreboard/Korvo. La pagina sconsiglia l’uso in produzione e offre un’immagine precompilata nelle versioni pubblicate.
Le descrizioni dei progressi di questo progetto differiscono: CNX Software parlava di un port Linux 6.12, con file system root Buildroot e riavvio stabili, spegnimento ancora non implementato e Wi-Fi, Bluetooth dual-mode e dual-core in fase sperimentale. La pagina attuale del repository, invece, lo presenta come Linux 6.18 e indica come stabili Linux con MMU Sv32 e avvio XIP da flash, SMP dual-core, file system root persistente, Wi-Fi in modalità stazione e Bluetooth tramite BTstack.
La matrice della community mantiene altri elementi in fase sperimentale: firmware LP e casella di messaggi, I2C0 e I2C1, controller GPSPI host e target, I2S/TDM, SD/MMC, Ethernet, USB gadget, GDMA AHB/AXI, timer, PWM, contatore di impulsi e blocchi analogici e di sensori, oltre a watchdog, NVMEM, RNG e crittografia. La gestione dell’alimentazione è indicata come lavoro in corso, così come TWAI/CAN e USB host; RMT risulta non supportato.
L’autore stesso di questo port spiega di aver fatto ampio ricorso ad agenti IA per accelerare lo sviluppo, ma anche di aver dovuto guidarli con conoscenze specifiche dell’hardware S31. Tra gli esempi citati figurano il trasporto IPC tramite un buffer SRAM condiviso e un interrupt, e l’adattamento di un controller SD/MMC esistente. Afferma che l’agente non avrebbe scoperto da solo alcuni comportamenti specifici del chip.
Il secondo progetto segnalato da CNX Software è esp32-s31-linux, di Marco. Secondo la descrizione di questa testata, porta Linux 7.1 e OpenSBI 1.9 sulla scheda Korvo, ma non abilita ancora la maggior parte delle periferiche: le eccezioni elencate sono il pannello LCD, lo slot microSD, l’USB host e il modem WLAN. La differenza di versioni rispetto agli altri port riflette il fatto che si tratta di iniziative indipendenti, non di un’unica distribuzione condivisa.
Dalla produzione in serie ai prototipi
Secondo la cronologia di CNX Software, Espressif ha annunciato la presentazione iniziale dell’ESP32-S31 a marzo. A maggio sono arrivate due schede di sviluppo e il 27 luglio 2026 l’azienda ha comunicato l’avvio della produzione in serie. Nell’annuncio ha indicato che il chip era già acquistabile nel suo negozio ufficiale su AliExpress e che il portale per sviluppatori offriva documentazione, risorse software, progetti di esempio e strumenti.
Il BSP Linux apre una strada diversa rispetto all’orientamento abituale dell’ambiente ESP-IDF: valutare un sistema Linux sull’S31 tramite un’immagine compilata con Buildroot. Per ora, Espressif lo presenta come una base per test e prototipi, non come un prodotto finito. Il prossimo passo pratico per chi possiede una scheda è compilare o scrivere l’immagine e verificare quali parti dell’hardware rispondono; per quanto riguarda il Wi-Fi, questa verifica resta una questione aperta nella copertura di CNX Software.
Fonti: Hackaday, CNX Software - Embedded Systems News, GitHub, GitHub, GitHub, Espressif Systems