Skip to content

v0.4.3: QEMU networking

Choose a tag to compare

@rvben rvben released this 03 Jul 11:59
v0.4.3
41adfd6

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 snapshot step 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.
  • serve prints 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.