Skip to content

Firmware simulation examples for STM32, ESP32-C3, and RP2040

Open working firmware projects, inspect supported boards and peripherals, and take a simulation from the browser into automated tests.

Start with a project that uses the board or connection you need. Open it in the editor, inspect the firmware and diagram, and fork it before making changes. These are the same public examples linked from the Sim86 homepage.

For a walkthrough of testing interactions between controllers, see connected-device testing with Sim86.

ExampleBoards and behaviorOpen and inspect
Two controllers, one busESP32-C3 and RP2040 share sensors, a display, and a serial connectionOpen project
Interrupt handlingSTM32F405 responds to a button and drives an LCD1602Open project
A display-driven deviceESP32-C3 firmware drives an ST7789 display from button inputsOpen project
Doom on RP2040Game firmware runs on an RP2040 with a color displayOpen project

The STM32 simulator example uses an STM32F405 board with a button and display. Open the interrupt example and inspect its main.rs and board wiring. Build the firmware, flash the resulting ELF onto the STM32F405 component, and run it. Press the button and watch the display. Change the response and rebuild to check that the binary being executed is yours.

See STM32F405 board guide before replacing peripherals. To turn a visible response into a pass/fail check, use the complete firmware CI example.

These ESP32 simulator examples target the ESP32-C3. Open the display example or the two-controller project. The ESP32-C3 needs a merged flash .bin containing the bootloader, partition table, and application. Use the project’s build configuration to produce that artifact.

For wireless work, place the board in an RF Environment. The Wi-Fi Network documentation explains how traffic reaches firmware through simulated radio frames. See the ESP32-C3 guide for wiring and configuration.

The two-controller example shows an RP2040 interacting with another MCU; Doom provides a larger firmware workload. Inspect the project’s toolchain and image before substituting your own build. See the XIAO RP2040 guide for dual-core behavior and debug output.

XIAO nRF52840, Nucleo-F767ZI, and Pico 2 have their own firmware formats and pin maps. Use Getting Started to build a circuit for those boards; the STM32 example’s pin names and firmware are not interchangeable with them.

Need another controller? We add controllers on demand, free of charge for our users when you ship us a development board. Contact us to discuss the specific controller or component you need.

Once the behavior is right, record what you expect and what would count as a failure. The SDK lets you load firmware and collect logs from automated runs. The CI guide adds assertions and a deliberate fault. The benchmark guide explains how to compare those observations with a physical board.

Docs
Open dashboard ↗