pureboot: host tool and end-to-end protocol tests, all three chips
pureboot.py (Python stdlib only): images as raw binary or Intel HEX, flash and EEPROM programming with read-back verify, erase composites, fuse and info readout, activation-timeout configuration, and the tinies' reset-vector surgery — the trampoline word below the loader, page 0 written last. The test spawns a simavr device (pureboot_device.c) — the mega's USART as a pty; on the tinies a cycle-timed GPIO<->pty bridge for the polled software UART plus the NVM module simavr's tiny cores lack (their SPM opcode ioctls into a void and silently does nothing) — and drives it with the real tool: knock from reset (erased-flash walk on the tinies), program and verify both memories, timeout write, session reconnect, an external reset through the patched vector, hand-over, and the fixture application's banner. Results are cross-checked against ground-truth memory dumps and an independent decode of the surgery's rjmp words, red-verified against a sabotaged encoder. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -94,3 +94,30 @@ word just below the loader (`base - 2`, where `G` jumps), and word 0 is
|
||||
rewritten to `rjmp` to the loader base. Every other vector stays the
|
||||
application's. Page 0 is written last, so an interrupted flash leaves word 0
|
||||
erased and the chip still falls through to the loader on the next reset.
|
||||
|
||||
## Host tool
|
||||
|
||||
`pureboot.py` — Python 3, standard library only (termios drives any tty,
|
||||
a USB adapter as well as a simavr pty):
|
||||
|
||||
pureboot.py --port /dev/ttyUSB0 --baud 57600 \
|
||||
--info --fuses --flash app.hex --timeout 10
|
||||
|
||||
Operations run in a fixed order within one session: info, fuses, flash
|
||||
(erase / program / read / verify), EEPROM (erase / program / read / verify),
|
||||
timeout — then the loader hands over to the application; `--stay` keeps the
|
||||
session alive instead, and a later invocation reconnects into it (the knock
|
||||
converges there too). `--flash` and `--eeprom` verify by read-back unless
|
||||
`--no-verify`; images are raw binary, or Intel HEX by extension.
|
||||
|
||||
## Tests
|
||||
|
||||
Per chip preset, `ctest` runs the 512-byte size gate and the end-to-end
|
||||
protocol test: a simavr device (`test/pureboot_device.c` — the mega's USART
|
||||
as a pty; on the tinies a cycle-timed GPIO⇄pty bridge for the software UART,
|
||||
plus the SPM/NVM module simavr's tiny cores lack) driven by the real host
|
||||
tool through knock-from-reset, program + verify of both memories, timeout
|
||||
configuration, session reconnect, an external reset through the patched
|
||||
vector, and the hand-over to a fixture application whose banner proves the
|
||||
launch — cross-checked against the simulator's ground-truth memory dumps and
|
||||
an independent decode of the surgery's rjmp words.
|
||||
|
||||
Reference in New Issue
Block a user