Espressif heeft de ESP32-S31 geïntroduceerd, een microcontroller die door zijn uitgebreide hardware-specificaties veel dichter bij een Single-Board Computer (SBC) komt dan zijn voorgangers. De chip is uitgerust met een gigabit Ethernet MAC, USB 2.0 High-Speed hostcontroller en ondersteuning voor camera's en displays.
Het meest cruciale aspect is de implementatie van een echte MMU (Sv32), wat procesisolatie mogelijk maakt. Hierdoor kan een reguliere Linux-kernel in supervisor-modus draaien, in tegenstelling tot de 'hacky' implementaties op oudere modellen. Er zijn inmiddels al functionele Linux-builds beschikbaar, waaronder versies die een console op een LCD-paneel kunnen tonen.
Belangrijkste kenmerken en beperkingen:
- CPU: Twee RISC-V cores op 320 MHz met FPU en SIMD.
- Connectiviteit: Wi-Fi 6, Bluetooth 5.4 (inclusief Classic), Thread, Zigbee en Matter.
- Geheugen: Maximaal 64 MB PSRAM en 256 MB flash. Dit beperkte RAM is het grootste struikelblok voor het volledig vervangen van een SBC.
- Energie: Behoudt het lage energieverbruik dat kenmerkend is voor microcontrollers.
Hoewel de ESP32-S31 geen volledige desktop-ervaring kan bieden, positioneert het de ESP32-serie als een serieus alternatief voor eenvoudige Linux-taken waar voorheen een Raspberry Pi voor nodig was.
De nieuwste ESP32 kan daadwerkelijk Linux draaien en komt ongemakkelijk dicht bij een Raspberry Pi
Waar microcontrollers doorgaans bestaan uit een paar cores, een kleine hoeveelheid RAM, GPIO-pinnen en eventueel wifi, ondersteunt de ESP32-S31 aanzienlijk meer. Espressif heeft bovendien een grote wijziging aan de CPU doorgevoerd, waardoor het apparaat meer dan ooit op een SBC lijkt.
Uitgebreide ondersteuning voor randapparatuur
De belangrijkste vernieuwing van de ESP32-S31 is de netwerkcapaciteit. De chip beschikt over een 1000 Mbps Ethernet MAC, wat een grote sprong is ten opzichte van de tragere 100 Mbps van de ESP32-P4. Er wordt gebruikgemaakt van een 8P8C-connector (meestal aangeduid als RJ45) die verbinding maakt met een externe PHY via de RGMII-interface van de chip. Juist deze RGMII-interface maakt gigabit-snelheden mogelijk; anders zou er gebruik worden gemaakt van de standaard RMII.
Daarnaast beschikt de chip over diverse andere interfaces:
- USB: Het officiële developer-board heeft een USB 2.0 High-Speed OTG-controller met een full-size Type-A socket die 500 mA kan leveren in host-OTG-modus.
- Opslag en Camera: Een SDIO-hostcontroller met twee slots en een DVP-camera-interface die 8 tot 16 bits ondersteunt.
- Display: Een parallelle LCD-controller die tot 24-bit RGB ondersteunt, evenals I8080- en MOTO6800-panelen.
- Overig: Twee I2S-controllers met hardwarematige Bluetooth-audiosynchronisatie, veertien capacitieve touch-kanalen, een CAN FD-controller en vier MCPWM-units.
Deze combinatie van bekabelde netwerkmogelijkheden, een USB-host en ondersteuning voor camera's, displays en audio is ongebruikelijk voor een microcontroller en komt veel meer voor bij SBC's.
CPU-architectuur en geheugen
Aan de CPU-zijde bevat de ESP32-S31:
- Twee 32-bit RISC-V cores die draaien op maximaal 320 MHz, beide voorzien van een floating point unit (FPU).
- Eén van deze cores beschikt over een 128-bit SIMD-datapad.
- Een aparte low-power core van 40 MHz.
- L1-instructiecache van 32 KB per core en een gedeelde datacache van 64 KB.
Wat betreft het geheugen ondersteunt de S31 tot 64 MB PSRAM via een 250 MHz 8-bit DDR-interface, en tot 256 MB flash. In tegenstelling tot de ESP32-S3, waarbij de PSRAM-interface werd gedeeld met de flash, is dit nu gescheiden, wat een aanzienlijke verbetering is.
De implementatie van een echte MMU
Espressif gebruikt al langer de term "MMU", maar bij eerdere modellen zoals de ESP32-S3 en ESP32-P4 was dit enkel een blok dat externe flash en PSRAM naar de adresruimte mapte. Dit was niet te vergelijken met een moderne MMU die procesisolatie en paginatabellen kan beheren.
Bij de ESP32-S31 is er echter sprake van een fundamenteel verschil. Volgens het datasheet ondersteunen de cores "Sv32 two-level page-table address translation" en implementeren ze "Machine, Supervisor en User privilege modes". Sv32 is het eigenlijke paging-schema van RISC-V. De aanwezigheid van deze drie privilege-modi stelt een reguliere kernel in staat om in supervisor-modus te draaien, met firmware daaronder in machine-modus. Dit is precies hoe RISC-V-gebaseerde Linux-machines werken.
Hierdoor kan de S31 Linux veel natuurlijker ondersteunen dan eerdere, "hacky" pogingen op oude ESP32-microcontrollers. Espressif publiceerde in augustus al een Linux BSP (Board Support Package) gebaseerd op Buildroot en U-Boot, inclusief een kernel, device tree en root-bestandssysteem. Hoewel Espressif aangeeft dat dit nog niet aanbevolen is voor productiegebruik, is het functioneel.
De community heeft dit inmiddels verder uitgebreid:
- Er is een poort waarbij Linux 6.18 draait in supervisor-modus, met werkende drivers voor vrijwel alle hardware.
- Een andere versie, gebaseerd op Linux 7.1, ondersteunt een aangesloten 800x480 LCD-paneel waarop een console getoond kan worden.
Beperkingen in geheugen en rekenkracht
Het grootste struikelblok voor de S31 als SBC-vervanger is het RAM-geheugen. De chip heeft 512 KB SRAM on-chip en is beschikbaar in varianten met 16 MB of 32 MB in-package PSRAM. Het maximale geheugen is 64 MB, en er is geen DRAM-controller aanwezig. Ter vergelijking: concurrenten zoals de Milk-V Duo S bieden 512 MB RAM.
Vanwege deze beperking voeren de Linux-builds de kernel uit vanuit de flash, om kostbaar PSRAM te besparen. Daarnaast ontbreken een GPU of NPU. Hoewel de ESP32-P4 video-encoding en MIPI-interfaces heeft, zijn deze bij de S31 vervangen door extra radio's. De S31 beschikt wel over een JPEG-codec, een 2D-pixel-processing accelerator en 2D DMA, maar dit is onvoldoende voor een volledige Linux-desktopomgeving.
Ook de kloksnelheid van 320 MHz roept vragen op bij de gigabit Ethernet NIC. Bij deze snelheid zijn er ongeveer 3.900 CPU-cycli per Ethernet-frame van maximale grootte, en ongeveer 215 per frame van minimale grootte. Hoewel bulktransfers bij een theoretische PSRAM-maximumsnelheid van 500 MB/s mogelijk dicht bij gigabit-snelheden kunnen komen, is het twijfelachtig of de verbinding verzadigd kan worden bij veel kleine pakketoverdrachten.
Draadloze connectiviteit en energieverbruik
Een groot voordeel ten opzichte van vergelijkbare SBC's in deze prijsklasse is de geïntegreerde draadloze stack:
- 2.4 GHz Wi-Fi 6.
- Bluetooth 5.4 (zowel LE als Classic BR/EDR).
- 802.15.4-radio voor Thread en Zigbee.
- Ondersteuning voor Matter via Wi-Fi en Thread.
Het feit dat Bluetooth Classic aanwezig is op een ESP32 is ongebruikelijk, maar betekent wel dat oudere audioapparatuur perfect zal werken.
Het energieverbruik blijft laag, kenmerkend voor een microcontroller:
- Wi-Fi ontvangst: 110 mA tot 117 mA (afhankelijk van de modus).
- Wi-Fi verzending: pieken tot 265 mA op 802.11b bij 15 dBm.
- Beide cores in modem-sleep op 320 MHz: 91 mA (met peripheral clocks uit) of 147 mA (met peripheral clocks aan).
Naamgeving en documentatie
De naam "S31" is enigszins verwarrend, omdat dit suggereert dat het een revisie van de S3 is, terwijl het apparaat nagenoeg irrelevant is ten opzichte van de reguliere S3. Espressif definieert de S-serie als "high-performance feature-rich SoCs", ongeacht de instructiesets. Jeroen Domburg, Technical Marketing Manager bij Espressif, gaf aan dat de CPU-architectuur nooit bedoeld was als onderdeel van de naam. De core is afgeleid van de P4 en is bijna twee keer zo snel als de S3.
De documentatie is momenteel nog in een vroeg stadium. Het datasheet is versie 0.5 en voorzien van een "PRELIMINARY" watermerk. Er zijn inconsistenties aanwezig; zo wordt de maximale kloksnelheid van de PSRAM in het datasheet vermeld als 80 MHz, terwijl Espressif elders 250 MHz publiceert.
Conclusie
De ESP32-S31 is strikt genomen geen SBC, maar het is wel de eerste ESP32 waarbij de randapparatuur, bandbreedte en het CPU-privilege-model direct aansluiten bij die van een moderne SBC. Hoewel een volledige desktopomgeving onmogelijk is met 16 MB PSRAM, kan er zonder veel moeite een Linux-terminal worden gedraaid. Dit is een eerste stap die de ESP32 op de lange termijn, en met toekomstige chips, zou kunnen positioneren als een levensvatbaar alternatief voor de Raspberry Pi.
De nieuwste ESP32 kan daadwerkelijk Linux draaien en komt ongemakkelijk dicht bij een Raspberry Pi
Waar microcontrollers doorgaans bestaan uit een paar cores, een kleine hoeveelheid RAM, GPIO-pinnen en eventueel wifi, ondersteunt de ESP32-S31 aanzienlijk meer. Espressif heeft bovendien een grote wijziging aan de CPU doorgevoerd, waardoor het apparaat meer dan ooit op een SBC lijkt.
Uitgebreide ondersteuning voor randapparatuur
De belangrijkste vernieuwing van de ESP32-S31 is de netwerkcapaciteit. De chip beschikt over een 1000 Mbps Ethernet MAC, wat een grote sprong is ten opzichte van de tragere 100 Mbps van de ESP32-P4. Er wordt gebruikgemaakt van een 8P8C-connector (meestal aangeduid als RJ45) die verbinding maakt met een externe PHY via de RGMII-interface van de chip. Juist deze RGMII-interface maakt gigabit-snelheden mogelijk; anders zou er gebruik worden gemaakt van de standaard RMII.
Daarnaast beschikt de chip over diverse andere interfaces:
- USB: Het officiële developer-board heeft een USB 2.0 High-Speed OTG-controller met een full-size Type-A socket die 500 mA kan leveren in host-OTG-modus.
- Opslag en Camera: Een SDIO-hostcontroller met twee slots en een DVP-camera-interface die 8 tot 16 bits ondersteunt.
- Display: Een parallelle LCD-controller die tot 24-bit RGB ondersteunt, evenals I8080- en MOTO6800-panelen.
- Overig: Twee I2S-controllers met hardwarematige Bluetooth-audiosynchronisatie, veertien capacitieve touch-kanalen, een CAN FD-controller en vier MCPWM-units.
Deze combinatie van bekabelde netwerkmogelijkheden, een USB-host en ondersteuning voor camera's, displays en audio is ongebruikelijk voor een microcontroller en komt veel meer voor bij SBC's.
CPU-architectuur en geheugen
Aan de CPU-zijde bevat de ESP32-S31:
- Twee 32-bit RISC-V cores die draaien op maximaal 320 MHz, beide voorzien van een floating point unit (FPU).
- Eén van deze cores beschikt over een 128-bit SIMD-datapad.
- Een aparte low-power core van 40 MHz.
- L1-instructiecache van 32 KB per core en een gedeelde datacache van 64 KB.
Wat betreft het geheugen ondersteunt de S31 tot 64 MB PSRAM via een 250 MHz 8-bit DDR-interface, en tot 256 MB flash. In tegenstelling tot de ESP32-S3, waarbij de PSRAM-interface werd gedeeld met de flash, is dit nu gescheiden, wat een aanzienlijke verbetering is.
De implementatie van een echte MMU
Espressif gebruikt al langer de term "MMU", maar bij eerdere modellen zoals de ESP32-S3 en ESP32-P4 was dit enkel een blok dat externe flash en PSRAM naar de adresruimte mapte. Dit was niet te vergelijken met een moderne MMU die procesisolatie en paginatabellen kan beheren.
Bij de ESP32-S31 is er echter sprake van een fundamenteel verschil. Volgens het datasheet ondersteunen de cores "Sv32 two-level page-table address translation" en implementeren ze "Machine, Supervisor en User privilege modes". Sv32 is het eigenlijke paging-schema van RISC-V. De aanwezigheid van deze drie privilege-modi stelt een reguliere kernel in staat om in supervisor-modus te draaien, met firmware daaronder in machine-modus. Dit is precies hoe RISC-V-gebaseerde Linux-machines werken.
Hierdoor kan de S31 Linux veel natuurlijker ondersteunen dan eerdere, "hacky" pogingen op oude ESP32-microcontrollers. Espressif publiceerde in augustus al een Linux BSP (Board Support Package) gebaseerd op Buildroot en U-Boot, inclusief een kernel, device tree en root-bestandssysteem. Hoewel Espressif aangeeft dat dit nog niet aanbevolen is voor productiegebruik, is het functioneel.
De community heeft dit inmiddels verder uitgebreid:
- Er is een poort waarbij Linux 6.18 draait in supervisor-modus, met werkende drivers voor vrijwel alle hardware.
- Een andere versie, gebaseerd op Linux 7.1, ondersteunt een aangesloten 800x480 LCD-paneel waarop een console getoond kan worden.
Beperkingen in geheugen en rekenkracht
Het grootste struikelblok voor de S31 als SBC-vervanger is het RAM-geheugen. De chip heeft 512 KB SRAM on-chip en is beschikbaar in varianten met 16 MB of 32 MB in-package PSRAM. Het maximale geheugen is 64 MB, en er is geen DRAM-controller aanwezig. Ter vergelijking: concurrenten zoals de Milk-V Duo S bieden 512 MB RAM.
Vanwege deze beperking voeren de Linux-builds de kernel uit vanuit de flash, om kostbaar PSRAM te besparen. Daarnaast ontbreken een GPU of NPU. Hoewel de ESP32-P4 video-encoding en MIPI-interfaces heeft, zijn deze bij de S31 vervangen door extra radio's. De S31 beschikt wel over een JPEG-codec, een 2D-pixel-processing accelerator en 2D DMA, maar dit is onvoldoende voor een volledige Linux-desktopomgeving.
Ook de kloksnelheid van 320 MHz roept vragen op bij de gigabit Ethernet NIC. Bij deze snelheid zijn er ongeveer 3.900 CPU-cycli per Ethernet-frame van maximale grootte, en ongeveer 215 per frame van minimale grootte. Hoewel bulktransfers bij een theoretische PSRAM-maximumsnelheid van 500 MB/s mogelijk dicht bij gigabit-snelheden kunnen komen, is het twijfelachtig of de verbinding verzadigd kan worden bij veel kleine pakketoverdrachten.
Draadloze connectiviteit en energieverbruik
Een groot voordeel ten opzichte van vergelijkbare SBC's in deze prijsklasse is de geïntegreerde draadloze stack:
- 2.4 GHz Wi-Fi 6.
- Bluetooth 5.4 (zowel LE als Classic BR/EDR).
- 802.15.4-radio voor Thread en Zigbee.
- Ondersteuning voor Matter via Wi-Fi en Thread.
Het feit dat Bluetooth Classic aanwezig is op een ESP32 is ongebruikelijk, maar betekent wel dat oudere audioapparatuur perfect zal werken.
Het energieverbruik blijft laag, kenmerkend voor een microcontroller:
- Wi-Fi ontvangst: 110 mA tot 117 mA (afhankelijk van de modus).
- Wi-Fi verzending: pieken tot 265 mA op 802.11b bij 15 dBm.
- Beide cores in modem-sleep op 320 MHz: 91 mA (met peripheral clocks uit) of 147 mA (met peripheral clocks aan).
Naamgeving en documentatie
De naam "S31" is enigszins verwarrend, omdat dit suggereert dat het een revisie van de S3 is, terwijl het apparaat nagenoeg irrelevant is ten opzichte van de reguliere S3. Espressif definieert de S-serie als "high-performance feature-rich SoCs", ongeacht de instructiesets. Jeroen Domburg, Technical Marketing Manager bij Espressif, gaf aan dat de CPU-architectuur nooit bedoeld was als onderdeel van de naam. De core is afgeleid van de P4 en is bijna twee keer zo snel als de S3.
De documentatie is momenteel nog in een vroeg stadium. Het datasheet is versie 0.5 en voorzien van een "PRELIMINARY" watermerk. Er zijn inconsistenties aanwezig; zo wordt de maximale kloksnelheid van de PSRAM in het datasheet vermeld als 80 MHz, terwijl Espressif elders 250 MHz publiceert.
Conclusie
De ESP32-S31 is strikt genomen geen SBC, maar het is wel de eerste ESP32 waarbij de randapparatuur, bandbreedte en het CPU-privilege-model direct aansluiten bij die van een moderne SBC. Hoewel een volledige desktopomgeving onmogelijk is met 16 MB PSRAM, kan er zonder veel moeite een Linux-terminal worden gedraaid. Dit is een eerste stap die de ESP32 op de lange termijn, en met toekomstige chips, zou kunnen positioneren als een levensvatbaar alternatief voor de Raspberry Pi.