This commit is contained in:
2026-07-20 16:34:19 -04:00
parent a87c9576fc
commit 42c96a31a2
11 changed files with 572 additions and 86 deletions
+5 -6
View File
@@ -38,9 +38,8 @@ X4 SPI traffic confirmed the firmware selected its SSD1677 driver.
`make qemu-wasm` produces the Emscripten module, WASM binary, and pthread worker
under `dist/wasm/`; Node smoke checks confirm `xteink` is registered and its
browser framebuffer/input bridge initializes. `make web` serves a dependency-free
UI for firmware, canvas, and buttons. Real firmware now boots past the allocator
and function-pointer crashes and initializes the X3 panel, but still stalls
before painting a full home screen.
UI for firmware, canvas, buttons, logs, SD files, and debug metrics. Real
firmware boots in WASM and drives the X3 panel.
### Device selection (X3 vs X4)
@@ -59,7 +58,7 @@ reuses unchanged — no bespoke abstraction layer:
| Peripheral | Native seam | Browser binding |
|------------|-------------|---------------------------|
| e-ink panel | X3 UC8253 (528×792) or blank X4 SSD1677 stub (480×800) → QEMU graphical console | `<canvas>` from the same display surface |
| SD card | `ssi-sd` + `sd-card-spi` backed by QEMU block layer (`-drive if=sd`) | browser-supplied blockdev (File/OPFS) |
| SD card | `ssi-sd` + `sd-card-spi` backed by QEMU block layer (`-drive if=sd`) | QEMU `vvfat` over a JS-created MEMFS directory; future persistence can use OPFS |
| Buttons + battery | ADC QOM props `adci[1]`/`adci[2]`; GPIO QOM `input-level[3]` for Power | DOM buttons → `qom-set` equivalent |
| Firmware image | flash via `-drive if=mtd` | uploaded `.bin` written to emulated flash |
@@ -86,8 +85,8 @@ reuses unchanged — no bespoke abstraction layer:
## Remaining phases
1. **Browser SD storage** — add an uploaded or OPFS-backed SD block device. The
basic static frontend already covers firmware, canvas, buttons, and X3/X4.
1. **Browser SD editing/persistence** — add file controls and optionally OPFS;
the current 32 GiB logical card is writable and ephemeral.
2. **Full X4 panel** — implement SSD1677 RAM/window/update commands when visible
X4 rendering is needed; the selection, dimensions, wiring, and stub exist.