Files
uv-k5-v3-emulator/qemu
mckero a210e531dd Round 107: the column lines never change at all, and the likeliest reason is that I read the wrong source
The GPIO model's output path is correct -- py32_gpio_update fires every changed pin's line and the write path covers ODR, BSRR and BRR -- so that link is not the fault. Instrumenting the two things the row rule needs together, the key state and the column drive, gives zero keypad_col_changed calls while F is held for eight seconds, with odr stuck at 0x00000004 and the firmware reading the input register three million times.

col_high therefore keeps its reset value, every column high, and the row rule's condition can never be true: that is the whole of why no row ever goes low. And odr's bits 3..6 never change, so the firmware's SetOutputPin(PIN_COLS) and ResetOutputPin(PIN_COL(j-1)) never reach the model at all.

A device that is polled but never driven is the signature of a binary that does not contain the code being read. That points at the thing this file warned about early and which I did not check before twenty rounds of notes: work/dl_*.c is the Labs build, and the notes themselves record that the page's firmware is 109.3 KiB while the Labs build is 111.9 KiB -- two different builds.

So the next step is an identity check rather than another probe: establish what the binary under test is, by banner, size and CRC, and put it beside the source it was built from.
2026-10-02 16:10:46 +08:00
..