Raspberry Pi Pico

Raspberry Pi Pico.

SWDIO connector

SWCLK  GND  SWDIO

PicoProbe connections

picoprobe           DUT (device under test)
pin 3 GND           GND
pin 4 GP2           SWCLK
pin 5 GP3           SWDIO
pin 6 GP4 UART1 TX  GP1 / UART0 RX  pin 1
pin 7 GP5 UART1 RX  GP0 / UART0 TX  pin 2

back to microcontrollers page.

Links

Getting started with Raspberry Pi Pico (pdf), elf2uf2-rs, Picoprobe, YAPicoprobe,

projects

pico-rgb2hdmi, VT2040 - portable serial terminal, VersaTerm - A versatile DIY serial terminal, PicoTerm - VGA Terminal for RP2014, rp2040Term - VT100 Terminal with Parallel TFT LCD, Terminominal - VT100 terminal emulator for Raspberry Pi Pico, ELTerm, HackaDay ElTerm, ArduinoISP-pico,

software

pico-dirtyJtag,

local links

bb, c2, starone,

History

2024-07-11: starone - ok, the problem was user error (a very common thing). For the graphics crate, it seems that point 1,1 is the upper left corner, not the center. The repository with the code is here: rp2040-gc9a01a-test.

2024-07-11: starone - so I have my litte round display connected to a Pi Pico, and run my rust example on it. The display is supposedly 240 x 240 pixels, with point 1,1 in the center, but circles are not centered. Hm.

2024-01-14: c2 - probe-rs - the info command doesn't work, but this seems to be a bug (#1849):

tingo@kg-core2:~/personal/projects/2024/rust/embedded/rp2040 $ probe-rs info
Probing target via JTAG

Error identifying target using protocol JTAG: An error with the usage of the probe occurred

Probing target via SWD

Error showing ARM chip information:
An error occurred in the communication with an access port or debug port.

Caused by:
    Target device did not respond to request.

not with specified protocol either

tingo@kg-core2:~/personal/projects/2024/rust/embedded/rp2040 $ probe-rs info --protocol swd
Probing target via SWD

Error showing ARM chip information:
An error occurred in the communication with an access port or debug port.

Caused by:
    Target device did not respond to request.

you can get debug info too

tingo@kg-core2:~/personal/projects/2024/rust/embedded/rp2040 $ RUST_LOG=probe_rs=trace probe-rs info
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Searching for CMSIS-DAP probes using libusb
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 0, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 1, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools:   Interface 0: CMSIS-DAP v2 Interface
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Picoprobe (CMSIS-DAP): CMSIS-DAP device with 3 interfaces
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: No HID interface for CMSIS-DAP found.
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 0, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 1, skipping
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Found 1 CMSIS-DAP probes using libusb, searching HID
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Found 1 CMSIS-DAP probes total
DEBUG list_wlink_devices: probe_rs::probe::wlink: Searching for WCH-Link(RV) probes using libusb
DEBUG list_wlink_devices: probe_rs::probe::wlink: Found 0 WCH-Link probes total
TRACE probe_rs::probe::cmsisdap::tools: Attempting to open device matching 2e8a:000c:E660D4A0A70C5338
TRACE probe_rs::probe::cmsisdap::tools: Trying device Bus 001 Device 004: ID 046d:c52b
TRACE probe_rs::probe::cmsisdap::tools: Trying device Bus 001 Device 005: ID 2e8a:000c
TRACE probe_rs::probe::cmsisdap::tools:   Interface 0: CMSIS-DAP v2 Interface
TRACE probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE probe_rs::probe::cmsisdap::tools: Picoprobe (CMSIS-DAP): CMSIS-DAP device with 3 interfaces
TRACE probe_rs::probe::cmsisdap::tools: No HID interface for CMSIS-DAP found.
DEBUG probe_rs::probe::cmsisdap::tools: Opening 2e8a:000c in CMSIS-DAPv2 mode
DEBUG probe_rs::probe::cmsisdap::commands: Draining probe of any pending data.
DEBUG probe_rs::probe::cmsisdap::commands: Attempt 1 to find packet size
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, FF]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 02, 40, 00]...
DEBUG probe_rs::probe::cmsisdap::commands: Success: packet size is 64
DEBUG probe_rs::probe::cmsisdap::commands: Configuring probe to use packet size 64
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, FE]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 01, 02]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, F0]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 01, 31]...
DEBUG probe_rs::probe::cmsisdap: Detected probe capabilities: Capabilities { _swd_implemented: true, _jtag_implemented: false, swo_uart_implemented: false, swo_manchester_implemented: false, _atomic_commands_implemented: true, _test_domain_timer_implemented: true, swo_streaming_trace_implemented: false, _uart_communication_port_implemented: false, uart_com_port_implemented: false }
Probing target via JTAG

DEBUG attach: probe_rs::probe::cmsisdap: Attaching to target system (clock = 1000kHz)
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 02, 02]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [02, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 03]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [03, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...
Error identifying target using protocol JTAG: An error with the usage of the probe occurred

Probing target via SWD

DEBUG attach: probe_rs::probe::cmsisdap: Attaching to target system (clock = 1000kHz)
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 02, 01]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [02, 01]...
 INFO attach: probe_rs::probe::cmsisdap: Using protocol SWD
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 11, 40, 42, 0F, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [11, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 04, 00, FF, FF, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [04, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 13, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [13, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00, 01]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 33, FF, FF, FF, FF, FF, FF, 07]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 10, 9E, E7]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 33, FF, FF, FF, FF, FF, FF, 07]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 03, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
DEBUG debug_port_setup: probe_rs::probe::cmsisdap: Adding command to batch: Read(port=DebugPort, addr=0)
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: 1 items in batch
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: Attempting batch of 1 items
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 05, 00, 01, 02]...
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap::commands: Receive buffer: [05, 00, 07]...
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: 0 of batch of 1 items executed
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap: Transfer status for batch item 0/1: NACK
DEBUG probe_rs::architecture::arm::communication_interface: Selecting DP Default
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Writing DP register ABORT, value=0x0000001f
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Write(port=DebugPort, addr=0, data=0x0000001f
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Writing DP register SELECT, value=0x00000000
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Write(port=DebugPort, addr=8, data=0x00000000
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Reading DP register CTRL/STAT
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Read(port=DebugPort, addr=4)
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: 3 items in batch
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: Attempting batch of 3 items
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 05, 00, 03, 00, 1F, 00, 00, 00, 08, 00, 00, 00, 00, 06]...
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap::commands: Receive buffer: [05, 00, 07]...
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: 0 of batch of 3 items executed
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap: Transfer status for batch item 0/3: NACK
Error showing ARM chip information:
An error occurred in the communication with an access port or debug port.

Caused by:
    Target device did not respond to request.
 INFO probe_rs::cmd::info: Debugging RISC-V-Targets over SWD is not supported.
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 03]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [03, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...

DEBUG probe_rs::probe::cmsisdap: Detaching from CMSIS-DAP probe
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 03]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [03, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...

try with only the SWD protocol

tingo@kg-core2:~/personal/projects/2024/rust/embedded/rp2040 $ RUST_LOG=probe_rs=trace probe-rs info --protocol swd
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Searching for CMSIS-DAP probes using libusb
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 0, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 1, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools:   Interface 0: CMSIS-DAP v2 Interface
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Picoprobe (CMSIS-DAP): CMSIS-DAP device with 3 interfaces
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: No HID interface for CMSIS-DAP found.
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 0, skipping
TRACE list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Could not read string for interface 1, skipping
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Found 1 CMSIS-DAP probes using libusb, searching HID
DEBUG list_cmsisdap_devices: probe_rs::probe::cmsisdap::tools: Found 1 CMSIS-DAP probes total
DEBUG list_wlink_devices: probe_rs::probe::wlink: Searching for WCH-Link(RV) probes using libusb
DEBUG list_wlink_devices: probe_rs::probe::wlink: Found 0 WCH-Link probes total
TRACE probe_rs::probe::cmsisdap::tools: Attempting to open device matching 2e8a:000c:E660D4A0A70C5338
TRACE probe_rs::probe::cmsisdap::tools: Trying device Bus 001 Device 004: ID 046d:c52b
TRACE probe_rs::probe::cmsisdap::tools: Trying device Bus 001 Device 005: ID 2e8a:000c
TRACE probe_rs::probe::cmsisdap::tools:   Interface 0: CMSIS-DAP v2 Interface
TRACE probe_rs::probe::cmsisdap::tools: Could not read string for interface 2, skipping
TRACE probe_rs::probe::cmsisdap::tools: Picoprobe (CMSIS-DAP): CMSIS-DAP device with 3 interfaces
TRACE probe_rs::probe::cmsisdap::tools: No HID interface for CMSIS-DAP found.
DEBUG probe_rs::probe::cmsisdap::tools: Opening 2e8a:000c in CMSIS-DAPv2 mode
DEBUG probe_rs::probe::cmsisdap::commands: Draining probe of any pending data.
DEBUG probe_rs::probe::cmsisdap::commands: Attempt 1 to find packet size
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, FF]...
DEBUG probe_rs::probe::cmsisdap::commands: Attempt 2 to find packet size
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, FF]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 02, 40, 00]...
DEBUG probe_rs::probe::cmsisdap::commands: Success: packet size is 64
DEBUG probe_rs::probe::cmsisdap::commands: Configuring probe to use packet size 64
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, FE]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 01, 02]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 00, F0]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [00, 01, 31]...
DEBUG probe_rs::probe::cmsisdap: Detected probe capabilities: Capabilities { _swd_implemented: true, _jtag_implemented: false, swo_uart_implemented: false, swo_manchester_implemented: false, _atomic_commands_implemented: true, _test_domain_timer_implemented: true, swo_streaming_trace_implemented: false, _uart_communication_port_implemented: false, uart_com_port_implemented: false }
Probing target via SWD

DEBUG attach: probe_rs::probe::cmsisdap: Attaching to target system (clock = 1000kHz)
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 02, 01]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [02, 01]...
 INFO attach: probe_rs::probe::cmsisdap: Using protocol SWD
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 11, 40, 42, 0F, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [11, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 04, 00, FF, FF, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [04, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 13, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [13, 00]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00, 01]...
TRACE attach: probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 33, FF, FF, FF, FF, FF, FF, 07]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 10, 9E, E7]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 33, FF, FF, FF, FF, FF, FF, 07]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 12, 03, 00]...
TRACE debug_port_setup: probe_rs::probe::cmsisdap::commands: Receive buffer: [12, 00]...
DEBUG debug_port_setup: probe_rs::probe::cmsisdap: Adding command to batch: Read(port=DebugPort, addr=0)
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: 1 items in batch
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: Attempting batch of 1 items
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 05, 00, 01, 02]...
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap::commands: Receive buffer: [05, 00, 07]...
DEBUG debug_port_setup:process_batch: probe_rs::probe::cmsisdap: 0 of batch of 1 items executed
TRACE debug_port_setup:process_batch: probe_rs::probe::cmsisdap: Transfer status for batch item 0/1: NACK
DEBUG probe_rs::architecture::arm::communication_interface: Selecting DP Default
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Writing DP register ABORT, value=0x0000001f
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Write(port=DebugPort, addr=0, data=0x0000001f
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Writing DP register SELECT, value=0x00000000
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Write(port=DebugPort, addr=8, data=0x00000000
DEBUG debug_port_start: probe_rs::architecture::arm::dp: Reading DP register CTRL/STAT
DEBUG debug_port_start: probe_rs::probe::cmsisdap: Adding command to batch: Read(port=DebugPort, addr=4)
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: 3 items in batch
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: Attempting batch of 3 items
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 05, 00, 03, 00, 1F, 00, 00, 00, 08, 00, 00, 00, 00, 06]...
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap::commands: Receive buffer: [05, 00, 07]...
DEBUG debug_port_start:process_batch: probe_rs::probe::cmsisdap: 0 of batch of 3 items executed
TRACE debug_port_start:process_batch: probe_rs::probe::cmsisdap: Transfer status for batch item 0/3: NACK
Error showing ARM chip information:
An error occurred in the communication with an access port or debug port.

Caused by:
    Target device did not respond to request.
 INFO probe_rs::cmd::info: Debugging RISC-V-Targets over SWD is not supported.
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 03]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [03, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...

DEBUG probe_rs::probe::cmsisdap: Detaching from CMSIS-DAP probe
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 03]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [03, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Transmit buffer: [00, 01, 00]...
TRACE probe_rs::probe::cmsisdap::commands: Receive buffer: [01, 00]...

2024-01-14: c2 - picoprobe - with a picoprobe connected, and given proper permissions (via devd) probe-rs works

tingo@kg-core2:~/personal/projects/2024/rust/embedded/rp2040 $ probe-rs list
The following debug probes were found:
[0]: Picoprobe (CMSIS-DAP) (VID: 2e8a, PID: 000c, Serial: E660D4A0A70C5338, CmsisDap)

2023-10-15: bb - picoprobe - I programmed another Pi Pico as a picoprobe by downloading picoprobe.uf2 from the Github repository and dragging it to a mounted Pico. As soon as I unmounted the Pico, I got this in /var/log/messages:

Oct 15 17:23:35 kg-bsbox kernel: ugen0.10: <Raspberry Pi Picoprobe (CMSIS-DAP)> at usbus0
Oct 15 17:23:35 kg-bsbox webcamd[51366]: webcamd: Cannot find USB device
Oct 15 17:23:35 kg-bsbox kernel: umodem0 on uhub5
Oct 15 17:23:35 kg-bsbox kernel: umodem0: <CDC-ACM UART Interface> on usbus0
Oct 15 17:23:35 kg-bsbox kernel: umodem0: data interface 2, has no CM over data, has no break

and usbconfig reports

root@kg-bsbox:~ # usbconfig -d ugen0.10
ugen0.10: <Raspberry Pi Picoprobe (CMSIS-DAP)> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

2023-10-15: Pi pico - if you need to power a DUT Pi Pico, take VSYS

picoprobe   DUT
pin 39 VSYS pin 39 VSYS

or VBUS (if DUT is USB Host). Only needed if the DUT Pico is using USB (to provide +5V on the usb connector)

picoprobe   DUT
pin 40 VBUS pin 40 VBUS

2023-07-04: picoprobe wiring is in Getting started with Raspberry Pi Pico, Appendix A. Basically with the microUSB connector up, pins on the left side

picoprobe           DUT (device under test)
pin 3 GND           GND
pin 4 GP2           SWCLK
pin 5 GP3           SWDIO
pin 6 GP4 UART1 TX  GP1 / UART0 RX  pin 1
pin 7 GP5 UART1 RX  GP0 / UART0 TX  pin 2

on the DUT Pico, the SWD connector (still with the microUSB connector up) is, from left to right:

SWCLK  GND  SWDIO

2023-07-03: I programmed a Raspberry Pi Pico as a picoprobe by mounting the UF2 disk and dragging the picoprobe.uf2 file there. Now it shows up in usbconfig as

ugen3.5: <Raspberry Pi Picoprobe CMSIS-DAP> at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

before it was

ugen3.5: <Raspberry Pi RP2 Boot> at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

create a devd access file

root@kg-core1:~ # cat /usr/local/etc/devd/picoprobe.conf
# allow group (operator) to access the usb connection of Raspberry Pi picoprobe
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor"          "0x2e8a";
        match "product"         "0x000c";
        action "usb_devaddr=`echo $cdev | sed 's#^ugen##'` && chmod g+rw /dev/usb/${usb_devaddr}.*";
};

restart devd

root@kg-core1:~ # service devd restart
Stopping devd.
Waiting for PIDS: 696.
Starting devd.

unplug and re-plug the picoprobe, then check

root@kg-core1:~ # ll /dev/usb/3.5*
crw-rw----  1 root  operator  0x1bd Jul  3 20:31 /dev/usb/3.5.0
crw-rw----  1 root  operator  0x1bf Jul  3 20:31 /dev/usb/3.5.1
crw-rw----  1 root  operator  0x1c1 Jul  3 20:31 /dev/usb/3.5.2
crw-rw----  1 root  operator  0x1c2 Jul  3 20:31 /dev/usb/3.5.3
crw-rw----  1 root  operator  0x1c3 Jul  3 20:31 /dev/usb/3.5.4
crw-rw----  1 root  operator  0x1c4 Jul  3 20:31 /dev/usb/3.5.5

rust - probe-run confirms that the probe is detected

tingo@kg-core1:~/personal/projects/2023/rust/embedded/rp2040/pico $ probe-run --list-probes
the following probes were found:
[0]: Picoprobe CMSIS-DAP (VID: 2e8a, PID: 000c, Serial: E660D4A0A71CA332, CmsisDap)

good.

2023-07-03: I created this page.