test: run ESP32 programs in QEMU - #5580
Conversation
cd85953 to
addc88b
Compare
|
Looks good overall, thanks for working on this @jakebailey Two small things that were pointed out in an automated code review:
|
addc88b to
115c1dc
Compare
There was a problem hiding this comment.
Pull request overview
Adds ESP32 QEMU execution to CI and corrects full-image flash segment placement.
Changes:
- Adds a dedicated ESP32 QEMU target with semihosting exit support.
- Runs an ESP32 program under Espressif QEMU in Linux CI.
- Fixes DROM/IROM offsets in full ESP32 images.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/linux.yml |
Installs Espressif QEMU and dependencies. |
builder/esp.go |
Corrects full-image flash offsets. |
main_test.go |
Adds QEMU execution and output cleanup. |
src/runtime/runtime_esp32.go |
Moves hardware abort implementation. |
src/runtime/runtime_esp32_abort.go |
Provides hardware ESP32 abort behavior. |
src/runtime/runtime_esp32_qemu.go |
Adds semihosting termination. |
src/runtime/runtime_esp32xx.go |
Moves shared exit implementation. |
src/runtime/runtime_esp32xx_exit.go |
Provides non-QEMU exit behavior. |
targets/esp32-qemu.json |
Defines the QEMU target. |
targets/esp32.json |
Removes QEMU from the hardware target. |
targets/esp32s3.json |
Removes the incompatible emulator setting. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
I was working on Xtensa panic/recover, but noticed that CI doesn't seem to run emulation. Fix that, and a bug found that only happens on full images.
There has to be another
_qemu.gofile, but that is not different than other systems.