ESP32-S31: novo microcontrolador da Espressif roda Linux com MMU real
O chip traz Ethernet gigabit, host USB, paginação Sv32 e já roda portas de Linux 6.18 e 7.1 feitas pela comunidade, encurtando a distância entre microcontrolador e SBC como o Raspberry Pi.

A Espressif lançou o ESP32-S31, e a lista de periféricos do chip é estranha demais para um microcontrolador: MAC Ethernet gigabit, controlador host USB 2.0 High-Speed, duas interfaces SD e entrada de câmera. Segundo reportagem do XDA Developers publicada em 23 de setembro de 2026, o motivo é simples: pela primeira vez um ESP32 tem uma MMU de verdade, com suporte a modos de privilégio Machine, Supervisor e User, exatamente o que um kernel Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps → precisa para rodar em modo supervisor com firmware embaixo em modo machine.
De MCU cheia de I/O a quase-SBC
O S31 traz duas interfaces SD (SDIO host), um conector USB Type-A completo capaz de fornecer 500 mA em modo host OTG, entrada de câmera DVP de 8 a 16 bits e um controlador de LCD paralelo com suporte a até 24 bits RGB (painéis I8080 e MOTO6800). Some a isso dois controladores I2S com sincronismo de áudio Bluetooth via hardware, quatorze canais de toque capacitivo, um controlador CAN FD e quatro unidades MCPWM. Na parte de CPU, são dois núcleos RISC-V de 32 bits a até 320 MHz, cada um com unidade de ponto flutuante própria, sendo que um deles ganha um data path SIMD de 128 bits; há ainda um núcleo de baixa potência separado, a 40 MHz. Cada núcleo tem 32 KB de cache L1 de instrução e os dois compartilham 64 KB de cache de dados.
Na memória, o S31 suporta até 64 MB de PSRAM por uma interface DDR de 8 bits a 250 MHz e até 256 MB de flash, com as duas interfaces separadas: no ESP32-S3 anterior, PSRAM e flash compartilhavam a mesma via, o que tornava tudo mais lento.
Sv32: a MMU que finalmente é uma MMU
A Espressif já usava o termo "MMU" em chips como o S3 e o P4, mas ali o bloco só mapeava flash e PSRAM externos para o espaço de endereçamento, sem nada parecido com isolamento de processo ou tabelas de página. No datasheet do S31, a empresa descreve algo diferente: tradução de endereço por tabela de páginas de dois níveis no esquema Sv32 do RISC-V, com os três modos de privilégio completos. É essa combinação que permite rodar um kernel de verdade em modo supervisor, com firmware abaixo em modo machine, do jeito que máquinas Linux baseadas em RISC-V funcionam.
A comunidade já colocou Linux para rodar
A própria Espressif publicou em agosto de 2026 um BSP (board support package) para Linux baseado em Buildroot e U-Boot, com kernel, device tree e sistema de arquivos raiz prontos, embora a empresa avise que ele "ainda não é recomendado para uso em produção". A comunidade não esperou: já existe uma porta rodando Linux 6.18 em modo supervisor com drivers funcionais para praticamente todo o hardware do chip, e outra, baseada em Linux 7.1, que sustenta um painel LCD de 800x480 conectado ao chip, exibindo um console de verdade. Ligar um monitor, usar Ethernet cabeada e conectar mouse e teclado num chip vendido como microcontrolador é um salto e tanto.
Onde o S31 ainda perde para um SBC
A memória é o ponto fraco. O chip carrega 512 KB de SRAM on-chip, com variantes de 16 MB ou 32 MB de PSRAM em pacote (o máximo teórico é 64 MB), e não existe controlador de DRAM. É por isso que as builds de Linux executam o kernel direto da flash, para economizar a PSRAM escassa. Também não há GPU nem NPU embarcados: o chip traz apenas um codec JPEG, um acelerador 2D de pixels e DMA 2D, o suficiente para tarefas simples, mas nada perto de sustentar um desktop Linux completo. Para efeito de comparação, o artigo do XDA cita o Milk-V Duo S, que tem 512 MB de RAM, oito vezes mais que o topo de linha do S31.
A Ethernet gigabit também merece ceticismo em cenários reais. A 320 MHz, o chip tem cerca de 3.900 ciclos de CPU por frame Ethernet de tamanho máximo e apenas 215 ciclos por frame de tamanho mínimo. Com um limite teórico de 500 MB/s na PSRAM, é possível chegar perto da taxa gigabit em transferências grandes e contínuas, mas a saturação do link com muitos pacotes pequenos é outra história.
Em compensação, o pacote de rádios é generoso para o preço: Wi-Fi 6 em 2,4 GHz, Bluetooth 5.4 com LE e Classic BR/EDR, e um rádio 802.15.4 para Thread e Zigbee, junto com o MAC gigabit. Isso cobre Matter (que roda sobre Wi-Fi e Thread) e ainda permite conectar periféricos de áudio Bluetooth Classic mais antigos. O consumo segue perfil de microcontrolador: recepção Wi-Fi entre 110 mA e 117 mA, transmissão com pico de 265 mA em 802.11b a 15 dBm, e os dois núcleos em modem-sleep a 320 MHz consumindo 91 mA com os clocks de periféricos desligados ou 147 mA com eles ligados.
O nome é confuso, e a documentação também
Chamar o chip de "S31" sugere uma revisão do S3, mas os dois têm pouco em comum: o S3 usa núcleos Xtensa LX7, e o S31 usa RISC-V, como o P4. Jeroen Domburg, gerente de marketing técnico da Espressif, comentou em uma discussão no Hackaday (citada pelo XDA) que "nunca pretendemos que a arquitetura de CPU fizesse parte do nome", e afirmou que o núcleo deriva do P4, com quase o dobro da velocidade do S3. O datasheet, aliás, ainda está na versão 0.5 com marca de "PRELIMINARY" na capa, e traz uma inconsistência clara: lista a PSRAM com clock máximo de 80 MHz, quando a própria Espressif já divulgou 250 MHz em outros materiais.
O que isso destrava pra quem constrói IoT e edge
Para quem desenvolve hoje em ESP-IDF ou FreeRTOS, a promessa prática do S31 não é rodar um desktop, é reduzir a distância entre prototipar em Linux (com SSH, toolchain padrão, drivers de kernel) e depois portar para um ambiente de MCU mais restrito, ou vice-versa. Times que hoje usam um Raspberry Pi Zero como ponte entre sensores e a nuvem, só porque precisam de um shell Linux completo, ganham uma opção com custo, consumo e footprint de microcontrolador, com rádios embutidos (Wi-Fi, BLE, Thread/Zigbee) que a maioria dos SBCs concorrentes nessa faixa de preço não traz de fábrica. Isso importa para projetos de automação industrial, gateways Matter/Zigbee e dispositivos de borda que hoje pagam o preço de energia e espaço físico de um SBC só para ter uma pilha de rede completa.
A ressalva que o próprio material técnico da Espressif faz é importante: o BSP Linux é experimental, sem recomendação de produção, e a memória disponível (no máximo 64 MB de PSRAM, sem DRAM dedicada) trava qualquer ambição de rodar runtimes pesados como Node.js↳Node.js45 conteúdosComo criar aplicações console em Node.jsDev (Back & Front) · fev 2025Entendendo o ciclo de publicação do Node.jsDev (Back & Front) · fev 2020Nodejs por baixo dos panosDev (Back & Front) · jul 2019Ver tudo em Dev (Back & Front) → ou uma stack Python completa dentro do Linux embarcado. Na prática, o caminho mais realista por enquanto é usar o Linux do S31 para depuração, prototipagem rápida de drivers e testes de hardware, mantendo a aplicação final em C sobre ESP-IDF ou bare metal RISC-V, do jeito que já se faz hoje com o resto da família ESP32. O salto de arquitetura, porém, é real, e abre a porta para que a próxima geração desses chips feche de vez essa distância.
Fonte: Hacker News
Este artigo foi escrito por Redação iMasters. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.
Type punning em C e C++ falha silenciosamente no -O2
Um pointer cast que sempre funcionou na prática pode ser undefined behavior e sumir do binário assim que o compilador liga otimizações agressivas. Entenda por que isso é ainda mais traiçoeiro em C++.












