System architecture

Linux runs on both ESP32-S31 high-performance cores with Sv32 virtual memory. The supplied configuration executes kernel code from mapped flash and uses 16 MiB PSRAM for writable data and applications.

Main components

Component

Role

ROM and SPL

Start the chip and initialize memory

OpenSBI

Provide machine-mode services to Linux and U-Boot

U-Boot

Start the Linux image with its device tree

Linux

Run applications and manage processors, memory and devices

Buildroot

Build the root filesystem and command-line tools

Radio module and payload

Provide the Wi-Fi and Bluetooth runtime

LP firmware

Run mailbox and wakeup tasks on the low-power core

Boot passes through ROM, SPL, OpenSBI and U-Boot before Linux starts BusyBox userspace. Boot process describes the address handoffs and startup services.

Memory and filesystems

Execute in place (XIP) keeps kernel code in mapped flash, leaving PSRAM for writable data and applications. Internal SRAM holds firmware data, radio allocations and DMA descriptors. Exact regions and ownership are in Memory map.

The root uses a SquashFS image with a JFFS2-backed writable overlay. For what persists across reboot, package-owned file replacement and temporary storage, see Configuration.

Peripherals

Applications use Linux interfaces such as GPIO character devices, I2C, SPI, ALSA and sockets. s31-overlay enables optional peripherals and selects their pins. The standard build configuration includes the native peripheral drivers; external devices can require additional drivers and board wiring.

Radio and low-power core

Wi-Fi and Bluetooth share a Linux radio module and payload. Its common worker, when used, runs on HP core 0; Wi-Fi-only SoftMAC uses native task servicing. Frontend receive NAPI and I/O target HP core 1, with HP core 0 as the fallback when core 1 is offline. Payload compatibility tasks preserve requested affinity. The interrupts and SMP reference explains these execution and IRQ-routing boundaries. Bluetooth normally uses BTstack through /dev/s31-hci.

LP firmware is loaded by Linux remoteproc and handles mailbox, timer and GPIO wakeup requests. See the radio reference and LP reference for their separate interfaces.