docs(hardware): switch display to GDEY0579T93 with DESPI-c579

Strip-aspect 5.79" panel (792×272) replaces the page-shaped 7.5" choice.
Reflows the v0.1 screen layout, framebuffer memory budget, and spike 2
acceptance to validate the SSD1683-class controller path or fall back to
a ~300 LoC custom embedded-hal driver.
This commit is contained in:
Julien Calixte
2026-05-14 12:27:33 +02:00
parent 490e2930e3
commit 421270cdf2
3 changed files with 45 additions and 27 deletions

View File

@@ -96,34 +96,46 @@ create remote repos.
## Screen layout
Waveshare 7.5" V2 — 800×480, 1-bit.
GDEY0579T93 — 5.79", **792×272**, 1-bit, partial refresh capable. Wide
strip aspect (~2.9:1) — biases the UX toward "current line and recent
context," not a full page.
```
┌──────────────────────────────────────────────────────────────┐
│ notes.md ● 14:02:33 │ ← header (1 line)
├──────────────────────────────────────────────────────────────┤
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
│ ← edit area
The quick brown fox jumps over the lazy▎ │ (cursor block)
...
├──────────────────────────────────────────────────────────────┤
INSERT unsaved Wi-Fi ✓ ← status (1 line)
└──────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────
│ notes.md ● 14:02:33 │ ← header
├─────────────────────────────────────────────────────────────────────────────────────
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu │
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in │ ← edit area
culpa qui officia deserunt mollit anim id est laborum. (~11 lines)
The quick brown fox jumps over the lazy▎ (cursor block)
│ │
│ │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ INSERT • unsaved • Wi-Fi ✓ │ ← status
└─────────────────────────────────────────────────────────────────────────────────────┘
```
- Header: filename, dirty indicator (●/○), wall clock if Wi-Fi has set time.
- Header: filename, dirty indicator (●/○), wall clock if SNTP has set time.
- Status: mode (always `INSERT` in v0.1), save state, Wi-Fi state. After a
`Ctrl-S` / `Ctrl-G`, status briefly shows the action result (saved at /
pushed `abc1234` / error message) then returns to default.
- Cursor: solid block at the insertion point. **No blink.**
Fonts: one mono font, embedded in firmware. Probably IBM Plex Mono at a size
that gives ~70 columns and ~25 lines of edit area.
Fonts: one mono font, embedded in firmware. Target sizing: a 14 px mono
glyph at roughly 8 px advance gives ~95 columns × ~11 visible lines of edit
area after header (16 px) and status (16 px) bars. Final size tuned during
spike 2 against real legibility on the panel.
**UX consequence of the strip aspect:** the cursor stays near the bottom of
the visible area during normal typing; the edit area scrolls one line at a
time. There is no "page" — just a continuously advancing strip. Embrace it,
don't fight it.
## Error UX

View File

@@ -73,8 +73,11 @@ We do **not** try to build the whole stack and turn it on. Each spike below
is a small program that proves one risk before we commit to the next layer.
1. **Spike 1 — Blink.** Confirm toolchain, flash, and basic GPIO.
2. **Spike 2 — EPD.** Drive the 7.5" panel with `epd-waveshare`; full refresh
"hello world." Validates SPI wiring, panel timings.
2. **Spike 2 — EPD.** Drive the GDEY0579T93 (via DESPI-c579 breakout) over
SPI; full refresh "hello world." Validates SPI wiring, panel timings, and
— critically — whether `epd-waveshare` already supports the panel's
controller (SSD1683-class) or whether we write a thin custom driver
against `embedded-hal`. Either way, ~300 LoC; this spike answers which.
3. **Spike 3 — SD.** Mount FAT, read/write a file. Validates SPI sharing with
EPD (or separate bus if needed).
4. **Spike 4 — USB host.** Enumerate the Nuphy as a boot-protocol HID
@@ -173,7 +176,7 @@ ESP32-S3-N16R8: 512 KB SRAM + 8 MB PSRAM. We budget conservatively.
|---|---|---|
| Internal SRAM | ~120 KB | task stacks, DMA buffers, hot code paths |
| Internal SRAM | ~80 KB | mbedtls runtime (TLS handshake working set) |
| PSRAM | ~256 KB | EPD framebuffer (800×480×1 = 48 KB) + shadow + glyph cache |
| PSRAM | ~128 KB | EPD framebuffer (792×272×1 ≈ 27 KB) + shadow + glyph cache |
| PSRAM | ~512 KB | rope buffer + edit history headroom |
| PSRAM | ~1.5 MB | gitoxide working set during push (pack delta, etc.) |
| PSRAM | rest | heap headroom |