Forum: Mikrocontroller und Digitale Elektronik ESP32-S3-ZERO debugging


von Zo R. (hsch1978)


Lesenswert?

Hallo,

auf meinem Tisch habe ich ein ESP32-S3-ZERO Board. Die S3 Varianten hat
internen einen Debugger. Diesen möchte ich in VSCode mit PlatformIO
nutzen. Leider ist dies mir noch nicht gelungen, dass ich debuggen kann.

platformio.ini:
[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino

Hat hier jemand damit bereits Erfahrungen sammeln können?

von Harald K. (kirnbichler)


Lesenswert?

Zo R. schrieb:
> Die S3 Varianten hat
> internen einen Debugger.

Wie kommst Du darauf?

Das sieht hier anders aus:
https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-guides/jtag-debugging/index.html#how-it-works

von Ralf X. (ralf0815)


Lesenswert?

Harald K. schrieb:
> Zo R. schrieb:
>> Die S3 Varianten hat
>> internen einen Debugger.
>
> Wie kommst Du darauf?
>
> Das sieht hier anders aus:
> 
https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-guides/jtag-debugging/index.html#how-it-works

Ich kann mir nicht vorstellen, dass sich Zo R. lange Texte durchlesen 
und verstehen möchte.
Also bitte gebratene Tauben schmeissen.
😊

von Harald K. (kirnbichler)


Lesenswert?

Ach, da hatte ich gar nicht drauf geachtet ...

von Andreas B. (andreas-ab)


Lesenswert?

@kirnbichler, unter "intern" versteht Espressif, dass der ESP32-S3 im 
Gegensatz zum ESP32 auch über den internen USB Anschluß debugged werden 
kann. Beim ESP32 ging das nur über die JTAG Pins mit einem passenden 
Adapter.

Schau mal hier: 
https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-guides/jtag-debugging/configure-builtin-jtag.html

@hsch1978, ich würde einfach mal hier nachlesen:
https://community.platformio.org/t/esp32-debugging-setup-and-troubleshooting/28648

und dann weiter forschen:
https://community.platformio.org/search?q=esp32%20s3%20debug%20order%3Alatest

Für den ESP32 mit FT232HL Adapter hab ich unter vscode+platformio den 
Debugger zum laufen bekommen.

Den Esp32-S3 hab vor längerer Zeit auch mal ausprobiert, aber der 
Debugger wollte sich nicht verbinden, dann hatte ich das Projekt erst 
mal beiseite gelegt. Wäre halt schick gewesen ein Devboard per USB-Kabel 
direkt zu debuggen.

von Harald K. (kirnbichler)


Lesenswert?

Andreas B. schrieb:
> @kirnbichler, unter "intern" versteht Espressif, dass der ESP32-S3 im
> Gegensatz zum ESP32 auch über den internen USB Anschluß debugged werden
> kann.

Danke für Hinweis und Link.

von Zo R. (hsch1978)


Lesenswert?

Laut Recherche müsste der ESP32C3 auch einen integrierten JTAG Debugger 
besitzen. Áuch mit dem ESP32C3 hab ich den internen Debugger bisher 
nicht erfolgreich zum Laufen bekommen.

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?

Zo R. schrieb:
> auf meinem Tisch habe ich ein ESP32-S3

Zo R. schrieb:
> Laut Recherche müsste der ESP32C3

Was denn nun?

von Zo R. (hsch1978)


Lesenswert?

Guten Morgen,

irgendwie will das nicht so mit dem debuggen. Ich habe einen esp32c3, da 
soll nur der debugger in vscode + platformio laufen. Das mit dem esp32s3 
sollte ja eigentlich auch mit dem internen debugger funktionieren. Tut 
es aber nicht.

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?


von Zo R. (hsch1978)


Angehängte Dateien:

Lesenswert?

Ich habe alles mögliche schon gesucht und probiert. Ich verenne mich da 
komplett. Geht überhaupt der interne Debugger auf dem esp32C3?

ini file:
[env:seeed_xiao_esp32c3]
platform = espressif32
board = seeed_xiao_esp32c3
framework = arduino
upload_protocol = esp-prog
debug_tool = esp-prog
debug_init_break = tbreak setup

Ich habe auch schon auf der Kommandozeile versucht mit openoced und gdp 
das zum laufen zu bringen. Ohne Erfolg.

Im Windows Gerätemanager ist der Treiber auch korrekt installiert und 
vorhanden.

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?

Gemini sagt "debug_tool = esp-builtin". Steht aber auch bei meinem 
zweiten Google Ergebnis.

von Zo R. (hsch1978)


Angehängte Dateien:

Lesenswert?

Ja das habe ich auch schon getestet. Das geht auch nicht.
Siehe Fehlermeldung

von Zo R. (hsch1978)


Lesenswert?

openocd -f interface/esp_usb_jtag.cfg -f target/esp32c3.cfg
1
Open On-Chip Debugger v0.12.0-esp32-20241016 (2024-10-16-14:17)
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; autoselecting 'jtag'
6
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
7
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
8
adapter speed: 40000 kHz
9
Info : Listening on port 6666 for tcl connections
10
Info : Listening on port 4444 for telnet connections
11
Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
12
Error: esp_usb_jtag: could not find or open device!
13
Error: [esp32c3] Unsupported DTM version: -1
14
Error: [esp32c3] Could not identify target type.

von Zo R. (hsch1978)


Lesenswert?

Was kann ich jetzt tun damit ich den internen Debugger nutzen kann?

von J. S. (jojos)


Lesenswert?

Zo R. schrieb:
> Error: esp_usb_jtag: could not find or open device!

Muss man unter Windows da nicht auch mit Zadig die libusb für das device 
als Treiber ersetzen? So ist es auch wenn man den esp-prog verwendet.

von Zo R. (hsch1978)


Lesenswert?

Das Tool habe ich bereits im Einsatz. Ich hab ja den WinUSB Treiber 
installiert.

von Zo R. (hsch1978)


Lesenswert?

Ich habe die Vermutung das irgendwas nicht korrekt installiert oder auch 
in Windows was zerschossen wurde.

von J. S. (jojos)


Lesenswert?

Zo R. schrieb:
> Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
> Error: esp_usb_jtag: could not find or open device!

da ist nichts zerchoßen. Die Fehlermeldung ist doch eindeutig, es wird 
libusb verwendet und damit wird ein device mit vid:pid gesucht. Und die 
wird nicht gefunden.

von Zo R. (hsch1978)


Lesenswert?

Ok wie kann ich das nun so hinbekommen, dass auch der interne Debugger 
funktioniert?

PlatformIO.ini:
1
[env:seeed_xiao_esp32c3]
2
platform = espressif32
3
board = seeed_xiao_esp32c3
4
framework = arduino
5
monitor_speed = 115200
6
debug_tool = esp-builtin     ; oder esp-prog
7
build_type = debug
8
debug_init_break = tbreak setup
9
debug_speed = 1000

: Bearbeitet durch User
von Zo R. (hsch1978)


Lesenswert?

Keine Chance ich bekomme den internen Debugger wirklich nicht zum 
Laufen.

von Zo R. (hsch1978)


Lesenswert?

So wie es aussieht werde ich einen externen JTag Debugger benutzen.

von Richard (user1234567890)


Lesenswert?

Zo R. schrieb:
> openocd -f interface/esp_usb_jtag.cfg -f target/esp32c3.cfg
>
>
1
> Open On-Chip Debugger v0.12.0-esp32-20241016 (2024-10-16-14:17)
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; autoselecting 'jtag'
6
> Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
7
> Info : esp_usb_jtag: capabilities descriptor set to 0x2000
8
> adapter speed: 40000 kHz
9
> Info : Listening on port 6666 for tcl connections
10
> Info : Listening on port 4444 for telnet connections
11
> Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
12
> Error: esp_usb_jtag: could not find or open device!
13
> Error: [esp32c3] Unsupported DTM version: -1
14
> Error: [esp32c3] Could not identify target type.
15
>


Das ist doch ein Berechtigungsproblem.
Dieselbe Fehlermeldung kommt unter Linux, wenn der Benutzer nicht die 
nötigen Rechte hat.
Unter Linux passt man dann die udev-Regeln an.
Wie es unter Windows geht, weiss ich leider nicht.

von Dirk E. (dirk_1980)


Lesenswert?

Also der interne USB Debugger funktioniert eigentlich recht gut.
Habe darüber schon gut 500 esp32s3 programmiert.

Aber es ist unter Windows eine Qual, weil jeder esp als neues device 
erkannt wird mit dem üblichen Treiber gesuche.

Es werden 3 Geräte erkannt und sollten alle mit Treiber lauffähig sein.

Den einzurichten hatte schon mir einiges an Nerven gekostet. Im Grunde 
war es aber genauso wie in der Anleitung vom Hersteller.

Ich schau mal ob ich das wieder finde.

von Harald K. (kirnbichler)


Lesenswert?

Dirk E. schrieb:
> weil jeder esp als neues device
> erkannt wird

Wenn in dessen Devicedescriptor eine eindeutige Seriennummer steht, ist 
das nicht weiter verwunderlich. Windows unterscheidet USB-Geräte mit 
identischer VID/PID anhand der Seriennummer und/oder anhand der Adresse 
im USB-Gerätebaum (die sich ändert, wenn das Gerät in eine andere Buchse 
gesteckt wird).

FTDI kennt die Einstellungsmöglichkeit "ignoriere Seriennummer", so daß 
jeder FT232, der in die selbe USB-Buchse gesteckt wird, als das selbe 
Gerät erkannt wird, d.h. ohne weitere Treiberinstallation und ohne 
Durcheinander bei den virtuellen Schnittstellnnummern.

https://ftdichip.com/utilities/, "Ignore Hardware Serial Number Registry 
Editor Utility"

von Zo R. (hsch1978)


Lesenswert?

Ok und was bringt mir diese Erkenntnis. Bei mir ist es mittlerweile so, 
dass nun nichts mehr geht. Kein COM Port wurde mehr gefunden. Ich musste 
alle USB Komponenten im Gerätemanager deinstallieren.
Mit dem Tool zadiag.exe kann ich trotz Installation WinUSB keinen 
Eintrag im Gerätemanager finden mit "USB JTAG/Serial debug unit 
(Interface 0) (COMX)".
Ich verstehe das ganze nicht mehr.

: Bearbeitet durch User
von Zo R. (hsch1978)


Lesenswert?

An den ESP32C3 habe ich auch mal den Segger JLink Plus Debugger 
angeschlossen. Auch da funktioniert die JTAG Verbindung nicht.
Kann mir hierzu jemand helfen?

JTAG Signal  XIAO ESP32-C3 Pin
TMS Pin7     D4
TDI Pin5     D5
TDO Pin13    D7
TCK Pin9     D6
GND Pin4     GND
VREF Pin1    3V3

JTAG Signal => Sub-D 20polig

: Bearbeitet durch User
von Dieter B. (nichtgedacht)


Lesenswert?

Zo R. schrieb:
> An den ESP32C3 habe ich auch mal den Segger JLink Plus Debugger
> angeschlossen. Auch da funktioniert die JTAG Verbindung nicht.
> Kann mir hierzu jemand helfen?
>
> JTAG Signal  XIAO ESP32-C3 Pin
> TMS Pin7     D4
> TDI Pin5     D5
> TDO Pin13    D7
> TCK Pin9     D6
> GND Pin4     GND
> VREF Pin1    3V3
>
> JTAG Signal => Sub-D 20polig

Bei dem C3 ist der Trick mit dem eingebauten Debugger, den GPIO8 pin (D8 
beim XIAO) auf 3,3V zu legen. Dann braucht man keinen externen Debugger 
in PlatformIO.
Gruß Dieter

von Zo R. (hsch1978)


Lesenswert?

Hi Dieter, wo hast du diese Information her?
Ich muss D8 zusätzlich auf 3.3V legen, dann funktioniert auch der 
interne Debugger?

Da mit den Treibern für USB einige Änderungen durchgeführt wurden, sehe 
ich den COM im Gerätemanager als USB serial com. Ich bekomme es nicht 
mehr hin, dass der COM auf USB Jtag/Serial COM gestellt wird.

: Bearbeitet durch User
von Dieter B. (nichtgedacht)


Lesenswert?


von Zo R. (hsch1978)


Lesenswert?

Danke ich arbeite unter Windows.

von Harald K. (kirnbichler)


Lesenswert?

Zo R. schrieb:
> Danke ich arbeite unter Windows.

Und? Wo ist jetzt das Problem?

Erwartest Du eine freundliche Oberfläche mit drei sanften, in 
beruhigenden Farben getönten Buttons, die erkennen, was Du meinst zu 
wollen?

Die relevanten Dinge - Espressif-IDF, OpenOCD und GDB existieren 
allesamt auch für Windows.

Und auch unter Windows kann man Dinge in eine Kommandozeile eingeben; 
man muss nur dran denken, daß der Pfadtrenner \ und nicht / ist.

Und wenn Du ein bisschen nach unten scrollst, siehst Du auch, daß der 
Kram für PlatformIO beschrieben wird. Und das gibt es erst recht für 
Windows.

Ein bisschen Transferleistung muss man hinbekommen, insbesondere, wenn 
man Programmierer und nicht "Gamer" sein will.

: Bearbeitet durch User
von Zo R. (hsch1978)


Lesenswert?

Bei scheitert schon dieser Schritt:
>openocd -f board/esp32c3-builtin.cfg
1
Open On-Chip Debugger v0.12.0-esp32-20241016 (2024-10-16-14:17)
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; autoselecting 'jtag'
6
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
7
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
8
Info : Listening on port 6666 for tcl connections
9
Info : Listening on port 4444 for telnet connections
10
Error: esp_usb_jtag: could not find or open device!
11
C:/platformio/packages/openocd-esp32/bin/../share/openocd/scripts/target/esp_common.cfg:9: Error:
12
at file "C:/platformio/packages/openocd-esp32/bin/../share/openocd/scripts/target/esp_common.cfg", line 9
13
Error: [esp32c3] Unsupported DTM version: -1
14
Error: [esp32c3] Could not identify target type.

ich habe auch den GPIO8 an GND verbunden.

von Harald K. (kirnbichler)


Lesenswert?

Zo R. schrieb:
> Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001

Hast Du geprüft, ob die stimmen?

(Im "Gerätemanager" nachsehen, welche VID/PID das USB-Ding hat)

Was steht in Zeile 9 von

"C:/platformio/packages/openocd-esp32/bin/../share/openocd/scripts/targe 
t/esp_common.cfg"?

von Zo R. (hsch1978)


Angehängte Dateien:

Lesenswert?

Zeile 9 esp_common.cfg:
1
catch {[source [find target/esp_version.cfg]]}

esp_servion.cfg:
1
set EXPECTED_VER "v0.12.0-esp32-20241016"

Gerätemanager:
=> Anschlüsse (COM & LPT)
    => USB Serial Device (COM16)

: Bearbeitet durch User
von Zo R. (hsch1978)


Lesenswert?

Keine Chance das mit dem Debugger. Auch mit einem esp-prog wird das wohl 
nix. Ich vermute bei mir ist im Windows irgendwas nicht in Ordnung.

: Bearbeitet durch User
von Zo R. (hsch1978)


Angehängte Dateien:

Lesenswert?

Auch mit dem ESP32-S3-ZERO keine Chance

von Harald K. (kirnbichler)


Lesenswert?

1
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

Das ist bedenklich. Da ist wirklich was im Argen.

von Zo R. (hsch1978)


Angehängte Dateien:

Lesenswert?

So ich habe nun zahlreiche Informationen im Netz gelesen.
Ich habe mit zadiag nun für das Interface 0 den WinUSB treiber 
installiert und für das Interface 1 den libusbK Treiber. Jetzt konnte 
ich mit dem internen Debugger zunächst mal eine Verbindung herstellen 
(ESP32S3-ZERO).
Jetzt wird in vscode in die Datei "panic:abort.dbgasm" gesprungen aber 
nicht in die main Datei, wo ich einen Breakpoint in setup gesetzt habe. 
Das wiederum versteh ich auch nicht ganz. Was kann ich verdammt tun 
damit dieser Mist erflogreich läuft.

platformio.ini:
1
[env:esp32-s3-devkitm-1]
2
platform = espressif32
3
board = esp32-s3-devkitm-1
4
framework = arduino
5
monitor_speed = 115200
6
debug_tool = esp-builtin
7
debug_init_break = tbreak setup
8
build_type = debug

: Bearbeitet durch User
von Andreas B. (andreas-ab)


Lesenswert?

Zo R. schrieb:

> platformio.ini:
>
1
> [env:esp32-s3-devkitm-1]
2
> platform = espressif32
3
> board = esp32-s3-devkitm-1
4
> framework = arduino
5
> monitor_speed = 115200
6
> debug_tool = esp-builtin
7
> debug_init_break = tbreak setup
8
> build_type = debug
9
>

Ich denke das ist nur die halbe Miete. Ich hab grad mal nachgeschaut wie 
ich das damals gemacht hab. Wichtig waren die "build parameter" von 
unten, d.h. die debug_build_flags.
1
;##### Build parameters #####
2
build_type = debug
3
debug_build_flags = 
4
  -O0 -ggdb3 -g3

von Zo R. (hsch1978)


Lesenswert?

Wenn ich das so in meine ini datei einsetze erhalte ich während des 
build Prozesses diese Meldungen:
1
Configuring upload protocol...
2
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
3
CURRENT: upload_protocol = esp-builtin
4
Uploading .pio\build\esp32-s3-devkitm-1\firmware.bin
5
Open On-Chip Debugger  v0.11.0-esp32-20220706 (2022-07-06-15:48)
6
Licensed under GNU GPL v2
7
For bug reports, read
8
        http://openocd.org/doc/doxygen/bugs.html
9
debug_level: 1
10
11
adapter speed: 40000 kHz
12
13
Warn : Transport "jtag" was already selected
14
adapter speed: 5000 kHz
15
16
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
17
Error: Unexpected OCD_ID = 00000000
18
Error: Unexpected OCD_ID = 00000000
19
Error: Unexpected OCD_ID = 00000000
20
Warn : target esp32s3.cpu1 examination failed
21
Error: Unexpected OCD_ID = 00000000
22
Error: Unexpected OCD_ID = 00000000
23
Error: Unexpected OCD_ID = 00000000
24
Error: Unexpected OCD_ID = 00000000
25
Error: Target not examined yet
26
** Programming Started **
27
** Programming Finished in 7406 ms **
28
** Verify Started **
29
** Verify OK **
30
** Programming Started **
31
** Programming Finished in 1653 ms **
32
** Verify Started **
33
** Verify OK **
34
** Programming Started **
35
** Programming Finished in 1394 ms **

Ich bin echt am verzweifeln. Das kann doch nicht sein. Ich habe auch die 
Befürchtung, dass wenn ich den esp-prog anschließe, das mit dem 
Debubgging auch nicht gescheit funktionieren wird. Das ist so ein 
Billigscheiss.
Man will eigentlich nur eine Anwendung entwickeln. Ich will nicht die 
ganze IDE Scheisse durchkauen und schaune wo und warum das nicht geht.

: Bearbeitet durch User
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.