Skip to content
Eliott65Sondewiki
Contents

The probe

It started with a simple question: could the probe go over Wi-Fi rather than USB? It was already a Pico W; it lacked the firmware to use it.

The starting point

To develop Eliott65, the project used a Pico W as a probe, running debugprobe, Raspberry Pi’s official probe firmware. That firmware only speaks USB, and no CMSIS-DAP probe firmware over Wi-Fi for the Pico W could be found. Yet the development OpenOCD used by the project can already speak CMSIS-DAP over TCP, that is, over the network.

So a probe firmware speaking this protocol had to be written for the Pico W. The wiring stays that of debugprobe: GP2 to SWCLK, GP3 to SWDIO, and a common ground.

What it can do

ServicePortRole
CMSIS-DAP over TCP4441OpenOCD flashes and debugs the board, as with a USB probe
Local log4442periodic readings, triggers, memory copies, reads of large blocks
Update4442new firmware sent over the network, automatic return to the old one on failure

The probe announces itself under the name eliott65sonde, over DHCP and mDNS: it is reached at eliott65sonde.local, without knowing its address. Its LED blinks while it looks for the network, and stays on once connected.

The starting choices

  • A CMSIS-DAP processor written for the project, in portable C. Neither debugprobe’s code nor ARM’s reference implementation is reused: no licensing question, and everything can be tested on the PC.
  • Only the commands OpenOCD uses are implemented, read from its source code: connection, single and block transfers, clock setting, SWD sequences (including the RP2040’s own core selection).
  • A simulated target on the PC (the RP2040’s debug port and 64 KiB of RAM) lets the probe be tried with the real OpenOCD, without any hardware.
  • Everything that does not depend on the Pico W (CMSIS-DAP, SWD protocol, log, update, boot loader) is written as portable modules, tested on the PC before going onto the probe.

Licence

The firmware is under the EUPL 1.2, like Eliott65. It relies on the pico-sdk and lwIP (BSD licences) and on cyw43-driver, the Wi-Fi driver, whose licence only allows use with Raspberry Pi chips, which the Pico W is.

Sources in the repository : README.md, docs/adr/ADR-0001-cmsis-dap-par-tcp.md, docs/adr/ADR-0002-firmware-pico-w.md, docs/journal/01-cmsis-dap-tcp.md.