Espressif maintains a fork of QEMU in espressif/QEMU with the necessary patches to make it work on Espressif chips. See the ESP-specific instructions for running QEMU for instructions on how to build QEMU and emulate projects with it.
Once you have built QEMU, you should have the
⚠️ Note: Only ESP32 is currently supported, so make sure you are compiling for
For running our project in QEMU, we need a firmware/image with bootloader and partition table merged in it.
We can use
cargo-espflash to generate it:
cargo espflash save-image --chip esp32 --merge <OUTFILE> --release
If you prefer to use
espflash, you can achieve the same result by building the project first and then generating image:
cargo build --release
espflash save-image --chip ESP32 --merge target/xtensa-esp32-espidf/release/<NAME> <OUTFILE>
Now, run the image in QEMU:
/path/to/qemu-system-xtensa -nographic -machine esp32 -drive file=<OUTFILE>,if=mtd,format=raw