Forum: Compiler & IDEs PiPico Debugger Ubuntu


von chris_ (Gast)


Lesenswert?

Im Moment versuche ich gerade den Debugger für den PiPco auf Ubuntu 
20.04 zum Laufen zu bringen.

Hier gibt es eine Anleitung, um den OpenOCD Debugger zu verwenden.

https://github.com/majbthrd/pico-debug/blob/master/howto/openocd.md

Kompilieren und Installieren klappt scheinbar.

Wenn ich den Debugger aber starten will, scheint nur ein J-Link 
Interface verfügbar:
1
openocd -f interface/cmsis-dap.cfg -c "transport select swd" -c "adapter speed 4000" -f target/rp2040-core0.cfg
2
Open On-Chip Debugger 0.10.0+dev-gb4af1af98-dirty (2021-04-03-19:21)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
  http://openocd.org/doc/doxygen/bugs.html
6
Error: The specified debug interface was not found (cmsis-dap)
7
The following debug adapters are available:
8
1: jlink

von chris_ (Gast)


Lesenswert?

Kommando zurück, ich habe das Problem doch noch gefunden:
Man muss bei der Konfiguration darauf achten, dass auch libusb1-x 
vorhanden ist, sonst wird mittendrin eine Fehlermeldung geworfen, aber 
trotzdem kompiliert.

Die Ausgabe der richtigen Konfiguration muss so aussehen:

OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes (auto)
ST-Link Programmer                      yes (auto)
TI ICDI JTAG Programmer                 yes (auto)
Keil ULINK JTAG Programmer              yes (auto)
Altera USB-Blaster II Compatible        yes (auto)
Bitbang mode of FT232R based devices    yes (auto)
Versaloon-Link JTAG Programmer          yes (auto)
TI XDS110 Debug Probe                   yes (auto)
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Andes JTAG Programmer                   yes (auto)
USBProg JTAG Programmer                 no
Raisonance RLink JTAG Programmer        no
Olimex ARM-JTAG-EW Programmer           no
CMSIS-DAP Compliant Debugger            yes
Nu-Link Programmer                      yes (auto)
Cypress KitProg Programmer              yes (auto)
Altera USB-Blaster Compatible           no
ASIX Presto Adapter                     no
OpenJTAG Adapter                        no
Linux GPIO bitbang through libgpiod     no
SEGGER J-Link Programmer                yes (auto)

von chris_ (Gast)


Lesenswert?

Leider läuft mein Debugger immer noch nicht.

Wenn ich den PiPico anstecke, erhalte ich mit dmesg folgendes:
1
[ 2694.049409] usb 2-1.4.1: new full-speed USB device number 9 using ehci-pci
2
[ 2694.159334] usb 2-1.4.1: New USB device found, idVendor=2e8a, idProduct=0004, bcdDevice= 1.00
3
[ 2694.159338] usb 2-1.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
4
[ 2694.159340] usb 2-1.4.1: Product: Picoprobe
5
[ 2694.159342] usb 2-1.4.1: Manufacturer: Raspberry Pi
6
[ 2694.159344] usb 2-1.4.1: SerialNumber: E66038B7134C1C2F
7
[ 2694.161205] cdc_acm 2-1.4.1:1.0: ttyACM0: USB ACM device

Mit lsusb erscheint zwar die USB ID, aber kein Name des PicoProbe. Woran 
könnte das liegen?
1
christoph@pc:/etc/udev/rules.d$ lsusb
2
Bus 002 Device 005: ID 046d:c534 Logitech, Inc. Unifying Receiver
3
Bus 002 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
4
Bus 002 Device 009: ID 2e8a:0004  
5
Bus 002 Device 003: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
6
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
7
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
8
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
9
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

von Siggi2 (Gast)


Lesenswert?

Bei mir kommen noch die Zeilen:
[  307.848001] usbcore: registered new interface driver cdc_acm
[  307.848002] cdc_acm: USB Abstract Control Model driver for USB modems 
and ISDN adapters

von chris_ (Gast)


Lesenswert?

Jetzt ist die Frage: Kommt der Treiber von OpenOCD oder vom PicoProbe?

Hier steht, dass es eine "precompiled" Debug-Code gibt (pico-debug.uf2):
https://github.com/majbthrd/pico-debug/

von Siggi2 (Gast)


Lesenswert?


von chris_ (Gast)


Lesenswert?

Ich teste OpenOCD folgendermaßen:

openocd -f interface/cmsis-dap.cfg -c "transport select swd" -c "adapter 
speed 4000" -f target/rp2040-core0.cfg

Das Ergebnis ist:
1
Open On-Chip Debugger 0.10.0+dev-gb4af1af98-dirty (2021-04-04-10:50)
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
swd
6
adapter speed: 4000 kHz
7
8
Info : Hardware thread awareness created
9
Info : RP2040 Flash Bank Command
10
Info : Listening on port 6666 for tcl connections
11
Info : Listening on port 4444 for telnet connections
12
Error: unable to find CMSIS-DAP device

Von hier:
https://github.com/majbthrd/pico-debug/blob/master/howto/openocd.md

von Siggi2 (Gast)


Lesenswert?

ich teste mit: src/openocd -f interface/picoprobe.cfg -f 
target/rp2040.cfg -s tcl

von Siggi2 (Gast)


Angehängte Dateien:

Lesenswert?

Dir fehlt vielleicht diese Datei, siehe Anhang.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Hier mein Anschlussschema.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

So, ich weis jetzt, wie man openocd auf Ubuntu 20.04 für den PiPico 
kompiliert:

S.57 im "getting started with Raspberry Pi Pico" Manual

Achtung: Für eine PiPico als Debugger muss der picoprobe branch aus dem 
repository geladen werden!
1
git clone https://github.com/raspberrypi/openocd.git --branch picoprobe --depth=1 --no-single-branch
2
cd openocd
3
./bootstrap
4
./configure --enable-picoprobe
5
make -j4
6
sudo make install

Die Datei picoprobe.rules (im Anhang oben) muss in /etc/udev/rules.d/ 
einfügt werden ( Admin Rechte nötig )!
1
sudo udevadm control -R

Das ganze aus dem openocd Verzeichnis testen mit:
1
src/openocd -f interface/picoprobe.cfg -f target/rp2040.cfg -s tcl

Die richtige Ausgabe ist dann:
1
Open On-Chip Debugger 0.10.0+dev-geb22ace-dirty (2021-04-05-05:51)
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
Info : only one transport option; autoselect 'swd'
6
Warn : Transport "swd" was already selected
7
adapter speed: 5000 kHz
8
9
Info : Hardware thread awareness created
10
Info : Hardware thread awareness created
11
Info : RP2040 Flash Bank Command
12
Info : Listening on port 6666 for tcl connections
13
Info : Listening on port 4444 for telnet connections
14
Info : clock speed 5000 kHz
15
Info : SWD DPIDR 0x0bc12477
16
Info : SWD DLPIDR 0x00000001
17
Info : SWD DPIDR 0x0bc12477
18
Info : SWD DLPIDR 0x10000001
19
Info : rp2040.core0: hardware has 4 breakpoints, 2 watchpoints
20
Info : rp2040.core1: hardware has 4 breakpoints, 2 watchpoints
21
Info : starting gdb server for rp2040.core0 on 3333
22
Info : Listening on port 3333 for gdb connections

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Du kannst auch https://github.com/UweBonnes/blackmagic/tree/rp 
versuchen. Wenn das Flaschen startet, funktioniert es, aber vielleicht 
1/3 der Startversuche brechen noch ab 
(https://github.com/raspberrypi/pico-bootrom/issues/7)

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Nachtrag: Nur blackmagic hosted kann im Moment den RP flashen.

von chris_ (Gast)


Lesenswert?

Hallo Uwe,
so richtig schnell klar wird mir nicht, was blackmagic jetzt genau ist:

Das Stück Hardware hier
https://github.com/blacksphere/blackmagic/wiki
oder eine Firmware, die unter anderem auf der gezeigten Hardware läuft.
Vielleicht könntest Du das etwas klarer auf der Webseite formulieren 
z.B.
"blackmagic is not a peace of hardware. It is a firmware running on 
various platforms .."

Mittlerweile wird mir klarer, welche Interfaces man alle zur 
Programmierung des PiPico über SWD nutzen kann:

1. einen RaspBerry Pi
2. einen PiPico programmiert als SWD-Adapter (PicoProbe hier 
https://github.com/raspberrypi/picoprobe )
3. einen STLINK Adapter, dort fehlt aber dann vermutlich die serielle 
Schnittstelle für das Printf-Debugging, die man dann mit einem FDTI 
machen müsste.

Die Firmware für den PicoProbe sieht ziemlich übersichtlich aus.

Was im Moment noch nicht läuft das kompilieren mit VS-Code und 
eigentlich will ich Microsoft Produkte auch nicht verwenden.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Blackmagic als Firmware laeuft auf der originalen Blackmagic Probe, nach 
Umflashen auf Stlink und anderen Firmware Platformen. Die Firmware 
stellt einen GDB Server bereit, den man ueber das erste serielle Device 
anspricht, die zweite Schnittstelle ist fuer die serielle Kommunikation 
mit dem Target. Den gleichen GDB Server kann man aber auch auf fuer den 
PC kompilieren und auf den PC laufen lassen. Dieser GDB Server kann mit 
BMP Firmware Proben, original Stlinks, FTDI MPSSE, CMSIS-DAP und JLINK 
sprechen (hosted). Da hosted libusb verwendet wird, hat man unter 
Windows die gleichen Probleme mit den USB Treibern wie OpenOCD, bis auf 
BMP Firmware Proben, da da nur Seriell verwendet wird.

Der BMP GDB Server erkennt unterstuetzte Target von sich aus und hosted 
sucht auch von sich aus nach unterstuetzten Proben, ohne Config Files zu 
benoetigen.

Auch picoprobe als CMSIS-DAP Probe wird erkannt.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Korrektur: pico-debug wird als CMSIS-DAP gesehen, picoprobe nicht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.