Forum: Mikrocontroller und Digitale Elektronik Pi Pico mit VSCode debuggen


von Rudi (rudils)


Lesenswert?

Hallo, nun wollte ich mal ein Picoprojct mit VSCode machen. Da mußte ich 
aber feststellen, dass sich seit letzten Jahr einiges geändert hat. Also 
hab ich alles neu installiert. Dabei bin ich auf die VSCode-Erweiterung 
für den Pico gestoßen.

[[https://github.com/raspberrypi/pico-vscode/releases/download/0.13.1/raspberry-pi-pico-0.13.1.vsix]]

Es kamen zwar Fehermeldungen, die mir nichts sagten, aber irgenwie hats 
funktioniert. Projekterstellung und compilieren geht. Aber Debuggen 
stürzt ab.

[Failed to launch GDB: Truncated register 16 in remote 'g' packet (from 
target-select extended-remote localhost:50000)]

Sagt mir nix und weiß auch nicht wie zu fixen. In der Doku (Starting 
with Pico) ist dazu nichts zu finden. In der vorherigen Version waren 
die .json Files noch beschrieben. Jetzt gibt es weitere und erweiterte.
Das alles scheint neu zu sein und ich hoffe es kennt sich jemand damit 
schon besser aus.
Gruß Rudi

von Harald K. (kirnbichler)


Lesenswert?

Rudi schrieb:
> Es kamen zwar Fehermeldungen, die mir nichts sagten, aber irgenwie hats
> funktioniert.

Dann muss man sich ja auch nicht mit den Fehlermeldungen beschäftigen, 
wie?

Vielleicht hat ja eine der Fehlermeldungen etwas mit dem von Dir 
beschriebenen Folgefehler zu tun, aber wer will das schon wissen?

von J. S. (jojos)


Lesenswert?

OpenOCD muss da in einer sehr frischen Version vorliegen die mit dem 
Dualcore klarkommt.

von Christoph M. (mchris)


Lesenswert?

>Es kamen zwar Fehermeldungen, die mir nichts sagten, aber irgenwie hats
>funktioniert. Projekterstellung und compilieren geht. Aber Debuggen
>stürzt ab.

Kann es sein, dass du für das Debugging ein Pico-Probe benötigst? ( 
zweiter PiPico als PicoProbe):
https://www.heise.de/blog/Raspberry-Pi-Pico-und-C-C-eine-gute-Kombination-5991042.html

von Rudi (rudils)


Lesenswert?

Danke für den Link. Ich muß noch mal genauer durchschauen, aber im 
Prinzip hab ich alles gemacht, Und auf der Kommandozeile geht ja alles. 
VSCode habe ich mit dem .vsix Download eingerichtet. VSCode compiliert 
und läd das Programm in den TestPico über einen Pico als 
Debuggprobeprobe. Nur debuggen geht nicht.
Kann sein das .vsix das offizielle Pico-Probe-Modul oder den Rasperry-Pi 
einrichtet. Aber wie und wo umgeschaltet wird find ich nicht.

von Rudi (rudils)


Lesenswert?

Hallo

jetzt bin ich einen Schritt weiter, oder aber auch in die falsche 
Richtung.

Also: ich will meinen Pico mit einem Pico über SWD debuggen. VSCode 
läuft bei mir über Linux Mind PC mit AMD Prozessor. Die meisten 
Anleitungen beschreiben die Konfig mit VSCode auf dem Raspberry PI mit 
der Debugprobe für SWD. Das macht Unterschiede im Aufbau der launch.json 
Datei.

Das ist meine aktuelle:
1
{
2
            "name": "Pico Debug (Cortex-Debug)",
3
            "cwd": "${workspaceRoot}",
4
            "executable": "${command:raspberry-pi-pico.launchTargetPath}",
5
            "request": "launch",
6
            "type": "cortex-debug",
7
            "servertype": "openocd",
8
            "serverpath": "${userHome}/.pico-sdk/openocd/v0.12.0-2/bin/openocd",
9
            "gdbPath": "${userHome}/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb",
10
            "device": "RP2040",
11
            "configFiles": [
12
                "interface/cmsis-dap.cfg",
13
                "target/rp2040.cfg"
14
            ],
15
            "svdFile": "${userHome}/.pico-sdk/sdk/1.5.1/src/rp2040/hardware_regs/rp2040.svd",
16
            "runToEntryPoint": "main",
17
            "showDevDebugOutput": "raw",
18
            // Give restart the same functionality as runToEntryPoint - main
19
            "postRestartCommands": [
20
                "break main",
21
                "continue"
22
            ],
23
            "openOCDLaunchCommands": [
24
                "adapter speed 5000"
25
            ]
26
        },
Wenn ich nun debuggen aufrufe, wird compiliert, gestartet und im 
Terminal gemeldet:
1
{Waiting for gdb server to start...[2024-05-25T09:29:31.839Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session connected. You can switch to "DEBUG CONSOLE" to see GDB interactions.
2
/home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/rs/pico/fbg/FBG -f /home/rs/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
3
[2024-05-25T09:29:31.886Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session closed
4
GDB server session ended. This terminal will be reused, waiting for next session to start...
und in der Debugger-Console:
1
Launching gdb-server: /home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/rs/pico/fbg/FBG -f /home/rs/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
2
    Please check TERMINAL tab (gdb-server) for output from /home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd
3
Finished reading symbols from objdump: Time: 50 ms
4
/home/rs/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
5
Error: Unable to start GDB even after 5 seconds or it couldn't even start Make sure you can start gdb from the command-line and run any command like "echo hello".
6
    If you cannot, it is most likely because "libncurses" or "python" is not installed. Some GDBs require these
7
GDB session ended unexpectedly. exit-code: 127
8
GDB could not start as expected. Bad installation or version mismatch. See if you can start gdb from a shell prompt and check its version (Must be >= 9)
und sonst geht nichts mehr. GDB Version ist 12.1 und Python ist neueste 
installiert.
siehe auch: https://github.com/raspberrypi/pico-vscode/issues/16 was 
meinen ursprünglichen Fehler behandelt.

Gruß Rudi

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Rudi schrieb:

> /home/rs/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb: error
> while loading shared libraries: libncursesw.so.5: cannot open shared
> object file: No such file or directory

Und was passiert, wenn du dieses Problem behebst?

Tja, die "DLL-hell" gibt's (entgegen der Aussagen der einschlägigen 
Linux-Fanboys) halt nicht nur unter Windows. Na gut, unter Linux würde 
sie natürlich "so-hell" heißen müssen.
Der Rest ist aber exakt dieselbe Soße. Abhängigkeiten, 
Versionskonflikte, Kompitibilitätsprobleme, völlig unzureichende 
Dokumentation.

von Vanye R. (vanye_rijan)


Lesenswert?

> Tja, die "DLL-hell" gibt's (entgegen der Aussagen der einschlägigen
> Linux-Fanboys) halt nicht nur unter Windows.

Tut mir leid deinen Vorurteilen widersprechen zu muessen aber ich sage
oft, regelmaessig und laut das das ganze Libarie Handling die GROSSE
Leiche im Keller von Linux ist und auch Linus T. hat sich da IMHO
schon negativ drueber geaeussert.

Allerdings mit einem jlink unter Linux geht alles, das muss ich dann mal 
loben...

Vanye

von Steve van de Grens (roehrmond)


Lesenswert?

Ob S. schrieb:
> Tja, die "DLL-hell" gibt's
> halt nicht nur unter Windows.

Ob S. schrieb:
> Tja, die "DLL-hell" gibt's (entgegen der Aussagen der einschlägigen
> Linux-Fanboys) halt nicht nur unter Windows.

Erstens ist die "DLL-hell" seit etwa 25 Jahren kein Thema mehr. Zweitens 
wüsste ich gerne, welche konkreten Aussagen von welchen Linux-Fanboys du 
meinst. Ich glaube, du hast das frei erfunden.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Vanye R. schrieb:

> Tut mir leid deinen Vorurteilen widersprechen zu muessen aber ich sage
> oft, regelmaessig und laut das das ganze Libarie Handling die GROSSE
> Leiche im Keller von Linux ist

Das beweist nur, dass du eben kein Fanboy bist. Das sind die, die Linux 
unkritisch hochjubeln, aber im Prinzip überhaupt keine Ahnung haben, wie 
es im Detail funktioniert.

von Rudi (rudils)


Lesenswert?

Hallo, eure antworten helfen mir erstmal nicht weiter, dafür wäre ich 
aber dankbar.
Vielleicht ist ja die große Frage ob es
1
"gdbPath": "${userHome}/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb",
sein muß. Oder
1
"gdbPath": "gdb",
. Oder
1
"gdbPath": "gdb-multiarch",
. Oder sonst noch was. Die vielen Versionen sind doch nicht eindeutig 
dokumentiert.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Steve van de Grens schrieb:

> Erstens ist die "DLL-hell" seit etwa 25 Jahren kein Thema mehr.

Unsinn, ist natürlich nach wie vor Thema. Das einzige, was sich geändert 
hat: es gibt (inzwischen seit Langem) Mechanismen, mit denen man 
Konflikte auflösen kann.

Übrigens sowohl für Windows als auch für Linux. Es sind halt nur nicht 
dieselben.

Und perfekt sind sie ebenfalls weder da noch dort.

von Norbert (der_norbert)


Lesenswert?

Rudi schrieb:
> /home/rs/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb: error
> while loading shared libraries: libncursesw.so.5: cannot open shared
> object file: No such file or directory

aptitude install libncursesw5

von Rudi (rudils)


Lesenswert?

Norbert schrieb:
> aptitude install libncursesw5

Hab ich gemacht. Nächste Fehlermeldung:
1
/home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/rs/pico/fbg/FBG -f /home/rs/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
2
xPack Open On-Chip Debugger 0.12.0+dev-01312-g18281b0c4-dirty (2023-09-04-22:31)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.org/doc/doxygen/bugs.html
6
CDLiveWatchSetup
7
Info : Hardware thread awareness created
8
Info : Hardware thread awareness created
9
adapter speed: 5000 kHz
10
Info : Listening on port 50001 for tcl connections
11
Info : Listening on port 50002 for telnet connections
12
Error: unable to find a matching CMSIS-DAP device
13
14
[2024-05-25T12:28:19.904Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session closed
15
GDB server session ended. This terminal will be reused, waiting for next session to start...
Das ganze sieht hier nach einem Pilgerschrittverfahren aus.

von Norbert (der_norbert)


Lesenswert?

Rudi schrieb:
> Das ganze sieht hier nach einem Pilgerschrittverfahren aus.

Sehe ich völlig anders. Man behebt einfach die Fehler schrittweise.
Ob man sie nun selber gemacht hat oder andere, lassen wir mal dahin 
gestellt.

> Error: unable to find a matching CMSIS-DAP device

von Rudi (rudils)


Lesenswert?

Entschuldigung: Meine Picos waren offline. OnLine kommt das:
1
Launching GDB: /home/rs/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb -q --interpreter=mi2
2
1-gdb-version
3
Launching gdb-server: /home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/rs/pico/fbg/FBG -f /home/rs/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
4
    Please check TERMINAL tab (gdb-server) for output from /home/rs/.pico-sdk/openocd/v0.12.0-2/bin/openocd
5
Finished reading symbols from objdump: Time: 47 ms
6
Error: Unable to start GDB even after 5 seconds or it couldn't even start Make sure you can start gdb from the command-line and run any command like "echo hello".
7
    If you cannot, it is most likely because "libncurses" or "python" is not installed. Some GDBs require these
8
GDB session ended unexpectedly. exit-code: 1
9
Could not find platform independent libraries <prefix>
10
Could not find platform dependent libraries <exec_prefix>
11
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
12
Python path configuration:
13
  PYTHONHOME = (not set)
14
  PYTHONPATH = (not set)
15
  program name = '/usr/local/bld-tools/bld-tools-virtual-env/bin/python'
16
  isolated = 0
17
  environment = 1
18
  user site = 1
19
  import site = 1
20
  sys._base_executable = '/usr/local/bld-tools/bld-tools-virtual-env/bin/python'
21
  sys.base_prefix = '/usr'
22
  sys.base_exec_prefix = '/usr'
23
  sys.executable = '/usr/local/bld-tools/bld-tools-virtual-env/bin/python'
24
  sys.prefix = '/usr'
25
  sys.exec_prefix = '/usr'
26
  sys.path = [
27
    '/usr/lib/python38.zip',
28
    '/usr/lib/python3.8',
29
    '/usr/lib/lib-dynload',
30
  ]
31
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
32
Python runtime state: core initialized
33
ModuleNotFoundError: No module named 'encodings'
34
35
Current thread 0x00007f7a3c693c00 (most recent call first):
36
<no Python frame>
37
Finished reading symbols from nm: Time: 73 ms
38
GDB could not start as expected. Bad installation or version mismatch. See if you can start gdb from a shell prompt and check its version (Must be >= 9)
meine GDB Version 12.1

von Rudi (rudils)


Lesenswert?

Norbert schrieb:

> Sehe ich völlig anders. Man behebt einfach die Fehler schrittweise.
> Ob man sie nun selber gemacht hat oder andere, lassen wir mal dahin
> gestellt.

Hallo, ich wollte damit nicht dich in Verbindung bringen. Ich ackere nun 
schon langen damit herum und meistens gehts halt eher eher 2 Schritte 
zurück als einen vorwärts. Ich blicke jetzt auch nicht mehr, welche 
Schritte mich weiterbrachten.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Norbert schrieb:

> Sehe ich völlig anders. Man behebt einfach die Fehler schrittweise.

Genau so funktioniert das.

>> Error: unable to find a matching CMSIS-DAP device

Dafür wäre wohl als nächstes die Frage zu stellen, was er nun genau als 
Debug-Hardware verwendet. Das ist mir aus dem bisherigen Verlauf des 
Threads nicht klar.

Benutzt er einen als PicoProbe Firmware geflashten PiPico oder eventuell 
ein "Raspberry Pi Debug Probe"?

Nur einer der beiden benutzt tatsächlich CMSIS-DAP.

von Norbert (der_norbert)


Lesenswert?

Rudi schrieb:
> Hallo, ich wollte damit nicht dich in Verbindung bringen.
Kein Problem, niemand zu Schaden gekommen. ;-)

> Ich ackere nun
> schon langen damit herum und meistens gehts halt eher eher 2 Schritte
> zurück als einen vorwärts. Ich blicke jetzt auch nicht mehr, welche
> Schritte mich weiterbrachten.

Zurücklehnen. Verschnaufen. Lesen. LESEN.

Dann immer den zu erst auftretenden Fehler (samt Hinweisen) beheben.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Rudi schrieb:

Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Python path configuration:
  PYTHONHOME = (not set)

Problem steht doch im Klartext da. Musst du bloß lösen.

von Andreas M. (amesser)


Lesenswert?

Rudi schrieb:
> Fatal Python error: init_fs_encoding: failed to get the Python codec of
> the filesystem encoding
> Python runtime state: core initialized
> ModuleNotFoundError: No module named 'encoding

Irgendwas stimmt mit dem python nicht. Sieht für mich so aus, als ob Du 
nicht das bei deiner Distri beiliegende Python sondern irgendwas eigenes 
benutzt:
1
  PYTHONHOME = (not set)
2
  PYTHONPATH = (not set)
3
  ...
4
  sys._base_executable = '/usr/local/bld-tools/bld-tools-virtual-env/bin/python'
5
  sys.base_prefix = '/usr'
6
  sys.base_exec_prefix = '/usr'
7
  sys.executable = '/usr/local/bld-tools/bld-tools-virtual-env/bin/python'
8
  sys.prefix = '/usr'
9
  sys.exec_prefix = '/usr'

Sieht für mich so aus, als ob da in Deinem System so einiges kaputt 
ist.Der gdb von 
"/home/rs/.pico-sdk/toolchain/13_2_Rel1/bin/arm-none-eabi-gdb" versucht 
ein python von '/usr/local/bld-tools/bld-tools-virtual-env/bin/python' 
zu verwenden, die Pfade passen jedoch hinten und vorne nicht.

von Rudi (rudils)


Lesenswert?

Ich habe mich an "Getting started with Raspberry Pi Pico" gehalten.
Mit 2 Picos und "debugprobe_on_pico.uf2".
Dan Chapter 7.2 install mit VSCode Pico Extension
dann 7.2.2 Create Projekt wobei dann in VS die lauch.json vier 
verschiedene Debug Versionen enthielt, von den keine beim Debuggen 
funktionierte.
Compilieren und das Testprogramm hochladen auf den Testpico tut er.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Rudi schrieb:

> Ich habe mich an "Getting started with Raspberry Pi Pico" gehalten.
> Mit 2 Picos und "debugprobe_on_pico.uf2".
> Dan Chapter 7.2 install mit VSCode Pico Extension
> dann 7.2.2 Create Projekt wobei dann in VS die lauch.json vier
> verschiedene Debug Versionen enthielt, von den keine beim Debuggen
> funktionierte.
> Compilieren und das Testprogramm hochladen auf den Testpico tut er.

Liest du auch mal, was andere Leute hier schreiben? Zwei haben dir 
gezeigt, wo das aktuelle Problem liegt. Dazu von dir: keinerlei 
Feedback.

Ich hab' kein Lust mehr.

von Rudi (rudils)


Lesenswert?

Ob S. schrieb:
> Ich hab' kein Lust mehr.

Das ist schade. Leider bin nach Wochen auch bald soweit. Dann muß ich 
halt im Terminal debuggen, was natürlich nicht so schön ist. Das ging 
schon mal. Das Problem ist, dass erst am 2.4.2024 eine neue fimware für 
debugprobe rauskam, und noch kaum Posts in der Community zu finden sind.
Auch das mit der VSCode Extension ist wohl zu neu. Meine Probleme 
begannen mit dem was auch hier ist: 
https://github.com/raspberrypi/pico-vscode/releases/download/0.13.1/raspberry-pi-pico-0.13.1.vsix.

Ich glaube aber, das hat mich erst recht in Bockshorn gejagt, als ich 
versuchte das zu beachten.

Leute ich steh' echt aufn schlauch. Ich tät ja auch alles mal neu 
aufsetzen, aber ich wüßte immer noch nicht was ich bei der Installation 
von Pyton anders machen könnte.

von Bernd S. (wirrer_haarschopf)


Lesenswert?

Bei meinem neuesten Projekt benutze ich auch einen Pico und VSCode. Ich 
hatte am Anfang auch echt Probleme und hab lange rumgesucht, aber jetzt 
läuft es zuverlässig. Ich benutze Ubuntu 22.04 und das VSCode aus dem 
Microsoft Repository (also nicht als Snap oder so, das fügt meiner 
Erfahrung nach, eine komplett neue Dimension an Fehlermöglichkeiten 
hinzu).

Hier die Schritte, die bei mir zum Erfolg führten:
- VSCode Deb-Paket von Microsoft herunterladen und installieren wie dort 
beschrieben.
- Das ist der richtige GDB:
1
sudo apt install gdb-multiarch
- Falls openocd aus den Ubuntu-Repos installiert ist:
1
sudo apt remove openocd
- Installation des pico-sdk nach Anleitung in der "Getting started with 
Pico" Pdf 
(https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf) 
Appendix A, Seite 61. Einfach genau diese Befehle eingeben. Auch das 
"sudo make install" von Seite 62. :) Funktioniert auch unter Ubuntu.
- Von hier 
https://github.com/raspberrypi/debugprobe/releases/tag/debugprobe-v2.0.1 
die Datei debugprobe_on_pico.uf2 und auf dem als Debugprobe zu verwenden 
Pico installieren.
- Verkabelung wie hier: 
https://www.digikey.de/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-2-debugging-with-vs-code/470abc7efb07432b82c95f6f67f184c0 
(Achtung, diese Seite ist recht veraltet, hat mir aber sehr geholfen)
- In VSCode die Extensions: "Cortex-Debug" und "Serial Monitor" 
installieren.
- Im .vscode im Projektverzeichnis eine Datei launch.json mit folgendem 
Inhalt anlegen:
1
{
2
    "version": "0.2.0",
3
    "configurations": [
4
        {
5
            "name": "Pico Debug",
6
            "cwd": "${workspaceRoot}",
7
            "executable": "${command:cmake.launchTargetPath}",
8
            "request": "launch",
9
            "type": "cortex-debug",
10
            "servertype": "openocd",
11
            // This may need to be arm-none-eabi-gdb depending on your system
12
            "gdbPath" : "gdb-multiarch",
13
            "device": "RP2040",
14
            "configFiles": [
15
                "interface/cmsis-dap.cfg",
16
                "target/rp2040.cfg"
17
            ],
18
            "svdFile": "${env:PICO_SDK_PATH}/src/rp2040/hardware_regs/rp2040.svd",
19
            "runToEntryPoint": "main",
20
            // Work around for stopping at main on restart
21
            "postRestartCommands": [
22
                "break main",
23
                "continue"
24
            ],
25
            "searchDir": ["/usr/local/share/openocd/scripts"],
26
            "showDevDebugOutput": "raw",
27
        }
28
    ]
29
}
- Im Serial Monitor des Terminalfensters als Device /dev/ttyACM0 
auswählen, um eventuelle Debugmeldungen zu sehen.

Übrigens, falls diese Meldung (vom Debugger, nicht vom Serial Terminal) 
kommt:
1
Error: unable to find a matching CMSIS-DAP device

Dann hat er zwar die Debugprobe gefunden, diese aber kein Device. Dann 
stimmt meist etwas mit der Verkabelung nicht.

: Bearbeitet durch User
von Rudi (rudils)


Lesenswert?

Danke, schon mal vorab. Ich probiers heut noch aus.....

von Rudi (rudils)


Lesenswert?

Bernd S. schrieb:
> Bei meinem neuesten Projekt benutze ich auch einen Pico und VSCode. Ich
> hatte am Anfang auch echt Probleme und hab lange rumgesucht, aber jetzt
> läuft es zuverlässig. Ich benutze Ubuntu 22.04 und das VSCode aus dem
> Microsoft Repository (also nicht als Snap oder so, das fügt meiner
> Erfahrung nach, eine komplett neue Dimension an Fehlermöglichkeiten
> hinzu).
Darauf bin ich auch schon reingefallsen

> Hier die Schritte, die bei mir zum Erfolg führten:
> - VSCode Deb-Paket von Microsoft herunterladen und installieren wie dort
> beschrieben.
Bei sudo apt update kommt bei mir:
1
Fehl:1 http://repo.mysql.com/apt/ubuntu disco InRelease      
2
  Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY B7B3B788A8D3785C
3
OK:9 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
4
OK:10 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
5
Paketlisten werden gelesen… Fertig
6
W: GPG-Fehler: http://repo.mysql.com/apt/ubuntu disco InRelease: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY B7B3B788A8D3785C
7
E: Das Depot »http://repo.mysql.com/apt/ubuntu disco InRelease« ist nicht signiert.
8
N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
9
N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).
install cmake....  ist aktuell

> - Das ist der richtige GDB:
>
1
sudo apt install gdb-multiarch
ist aktuell

> - Falls openocd aus den Ubuntu-Repos installiert ist:
>
1
sudo apt remove openocd
> - Installation des pico-sdk nach Anleitung in der "Getting started with
> Pico" Pdf
> (https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf)
> Appendix A, Seite 61. Einfach genau diese Befehle eingeben. Auch das
> "sudo make install" von Seite 62. :) Funktioniert auch unter Ubuntu.
Appendix A ist in getting-started-with-pico.pdf Version 2.4 auf Seite 67

> - Von hier
> https://github.com/raspberrypi/debugprobe/releases/tag/debugprobe-v2.0.1
> die Datei debugprobe_on_pico.uf2 und auf dem als Debugprobe zu verwenden
> Pico installieren.
> - Verkabelung wie hier:
> 
https://www.digikey.de/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-2-debugging-with-vs-code/470abc7efb07432b82c95f6f67f184c0
> (Achtung, diese Seite ist recht veraltet, hat mir aber sehr geholfen)
Bei mir nicht ganz. 2 Fehler bei make (lange Liste), ich mach trotzdem 
weiter

> - In VSCode die Extensions: "Cortex-Debug" und "Serial Monitor"
> installieren.
hab ich schon

> - Im .vscode im Projektverzeichnis eine Datei launch.json mit folgendem
> Inhalt anlegen:
Hab ich
__________________________________
Hurrah...Debuggen geht nun.
Jetzt muß ich nur noch herausfinden wie ein printf() über USB angeszeigt 
wird. Der serialmonitor tuts nicht. Ich versuch mal eine 2.USB an dem 
Test-pico.

Danke Bernd

von Bernd S. (wirrer_haarschopf)


Angehängte Dateien:

Lesenswert?

Freut mich, dass ich ein bisschen helfen konnte.

Die Fehler bei apt update kommen davon, dass das mysql-Repo, das du 
irgendwann mal eingerichtet hast, nicht mehr funktioniert. Hat nichts 
mit VSCode zu tun und ist auch nicht weiter schlimm, nur unschön und 
falls du mysql von da noch installiert hast, wird es nicht mehr 
aktualisiert.

Das mit dem Terminal und dem printf funktioniert bei mir reibungslos von 
VSCode aus. Wie gesagt, das Serial Monitor Plugin in VSCode 
installieren, das Terminal mit öffnen und auf den Serial Monitor Tab 
gehen. Dort muss /dev/ttyACM0 als Device ausgewählt sein. Und dann muss 
noch die Verkabelung stimmen... :) Siehe auch angehängtes Bild.

von Rudi (rudils)


Lesenswert?

So, lieber Bernd

jetzt geht Terminal auch. Ich hatte vorher die Ports umgekehrt in 
cmakelist stehen:
1
pico_enable_stdio_usb(fbg 0)
2
pico_enable_stdio_uart(fbg 1)
Im endgültigen Projekt will ich aber, dass alles über die USB-Buchse 
rausgeht.

Als abschließende Erkenntnis bleibt, dass die VSCode-Extension zur 
Erstellung eines Pico Projektes, die Raspberry neu anbietet und erst 
Beta ist, auf Linux Mind noch nicht funtioniert.

von Steve van de Grens (roehrmond)


Lesenswert?

Rudi schrieb:
> Linux Mind

Es heisst Mint mit T

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.