v0.4.3: QEMU networking
Highlights
snapshot works on emulated firmware (tier 2)
The QEMU machine emulates an OpenCores ethernet; a board spec with "http": {"guest_port": N} boots with user-mode networking and a localhost port forwarded into the guest, so snapshot POSTs into the firmware's real HTTP server (lwIP over the emulated NIC, built with CONFIG_ETH_USE_OPENETH=y):
- One code path for both backends: the CLI targets whatever HTTP port the active backend reports (native: the in-process webserver; qemu: the forward).
- The scenario
snapshotstep works on qemu targets too - the bundled golden scenario now taps, presses a button, and posts data into a real emulated guest, byte-comparing all three frames. serveprints the forwarded URL so live bridges can drive emulated firmware.
Flash images boot in snapshot mode
QEMU opens mtd drives for writing, so a boot could mutate your image file - and a read-only image failed to boot outright. Guest flash writes now land in a throwaway overlay: images stay pristine, and read-only images (CI cache artifacts, shared fixtures) boot fine.
Emulator suite in CI
A separate informational workflow runs the full gated emulator suite (display, input agent, networking, byte-exact goldens) on every push, with the prebuilt emulator and the docker-built fixture cached. Its runtime library list is ldd-derived and documented in tools/qemu/ci-deps.sh.
Binaries below carry the generic native targets plus both qemu board specs; the waveshare_amoled_18 target needs a source build against a firmware checkout (see README). esprite is alpha software; interfaces may change.