Skip to content
Eliott65Sondewiki
Contents

Tests on the board

On the PC, everything passed. On the board, the first reads failed one time in six, then not at all, then again. The story of a tuning in which saying “we don’t know” was part of the work.

On this page

First test, without the board

Firmware v0.4.0 flashed onto the Pico W, nothing connected to GP2 and GP3. The probe joins the Wi-Fi, opens its two ports, answers over mDNS. The log reports its limits; “connect” answers that the target does not respond, as expected. OpenOCD connects to the probe, then fails for lack of a target, as expected too.

The board connected: errors

The probe reads the RP2040’s identifier and its ROM without fault. But reads of SRAM, peripherals and system registers often fail, through the log as through OpenOCD, at 100 kHz as at 1 MHz: 824 errors out of 4,952 reads in 10 s. No wait request from the target: the line loses sync, or the bus returns an error.

A hypothesis is put forward: the PIO program changed SWDIO in the same cycle as SWCLK’s falling edge, and interference from one wire to the other would make the target see a false edge. The program is fixed (the data is set one cycle later), and the bench now checks that no SWDIO change falls on an edge.

The comparison that proved nothing

Thanks to the update over the network, three variants were compared without touching the wiring:

VariantIdentifier, 1,000 reads10 s reading
Fixed PIO1,000 correct0 errors
Original PIO1,000 correct0 errors
Original PIO, without reserving the PIO machine1,000 correct0 errors

The errors had disappeared in all three cases, after the board was switched off and on again and the Pico W plugged back in. So the firmware was not at fault, and the hypothesis is not confirmed: a loose contact or a state of the board, we don’t know. The fix is kept, since it costs nothing.

The errors come back

To flash Eliott65 v0.58.0 over Wi-Fi, OpenOCD could no longer read the memory. This time, block reads came back with a wrong parity, then the line lost sync; a single read passed. After rewiring, it was worse: even the identifier came back wrong, up to 30 % of the time, shifted by one bit, the signature of a false clock edge seen by the target.

A variant with gentler pins (2 mA instead of 4, slow slew rate) was installed over the network:

Measurement4 mA2 mA
Identifier, 1,000 reads at 100 kHz702 correct1,000 correct
Identifier at 1 and 4 MHz—1,000 correct at each speed
200-word blocks at 100 and 200 kHz—0 errors
200-word blocks at 400 kHz—2 blocks failed out of 50
200-word blocks at 1 MHz—errors after 20 to 150 words
10 s reading at 1 MHz, single-word reads—0 errors

The 2 mA setting is kept. Eliott65 v0.58.0 was then flashed over Wi-Fi at 200 kHz, and verified, in 1 min 27 s.

Sources in the repository : docs/journal/04-essai-reel.md, docs/journal/06-integrite-du-signal.md.