Releases

Cirkit Designer launches browser-based ESP32-S3 emulator written in Rust

Cirkit Designer put a Rust-built ESP32-S3 emulator in the browser, so real firmware boots locally without waiting for hardware or a remote backend.

Nina Kowalski··2 min read
Published
Listen to this article0:00 min
Share this article:
Cirkit Designer launches browser-based ESP32-S3 emulator written in Rust
Source: abacasstorageaccnt.blob.core.windows.net

Cirkit Designer has pushed ESP32-S3 development into the browser with an emulator that runs real firmware locally, written in Rust and compiled to WebAssembly. The company says the simulator is instruction-accurate, sits beside the circuit editor on the canvas, and avoids the usual drag of backend simulation sessions or streamed device state.

That matters because this is not a toy approximation. Cirkit says Arduino sketches are compiled on its servers and then executed unmodified in the browser, following the same boot path through Espressif’s ROM and bootloader that physical ESP32-S3 hardware uses. The emulator executes real Xtensa instructions, so what boots in the browser is meant to behave like the chip on the bench, not a loose mock of it.

Espressif describes the ESP32-S3 as a dual-core Xtensa LX7 MCU that can run up to 240 MHz, with 512 KB of SRAM, integrated 2.4 GHz 802.11 b/g/n Wi-Fi, Bluetooth 5 LE, and 45 programmable GPIOs. Its peripheral set is broad enough to cover typical hobby and IoT work, including UART, I2C, SPI, MCPWM, RMT, SAR ADC, USB OTG, and wireless networking features. Cirkit’s demo page points to the same range of use cases, including a crypto price tracker, a hotel safe, a DHT11 temperature display, and a joystick-controlled LED matrix.

AI-generated illustration
AI-generated illustration

The Rust angle is not cosmetic. Cirkit says it uses golden tests against QEMU as a reference for CPU and board behavior, while the browser-hosted WebAssembly emulator handles the actual user project. The hard problems are the ones firmware builders feel immediately: matching Espressif’s boot path, handling Xtensa windowed registers, dealing with RETW edge cases, and keeping the whole thing fast enough for browser use. Espressif’s bootloader documentation says the second-stage bootloader lives at flash address 0x0, which is exactly the kind of startup detail that can make or break compatibility.

Cirkit’s docs say ESP-IDF project support is coming soon, so the first wave is centered on Arduino sketches. That fits the chip’s history too: Espressif introduced the ESP32-S3 in January 2021 as an AIoT-focused part, and it has since become a familiar target for hobbyist firmware work. Cirkit’s browser-native emulator lowers the friction around that work by letting developers iterate, teach, and reproduce bugs without touching a board, turning Rust into the engine for a very practical kind of embedded tinkering.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.

Get Rust Programming updates weekly. The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News