ESP32-S3 - JTAG/USB Flash

OP #7131828
Hi,

Ich habe beim ESP32 bisher immer den UART mit einem CP2102 zum flashen 
verwendet, was soweit auch prima klappt, aber eher teuer ist.

Nun möchte ich einmal JTAG ausprobieren, so dass ich auch noch gleich 
debuggen kann. Vor etwa 1 Jahr habe ich das schon einmal probiert, 
konnte mich aber über JTAG mit einem JLINK nicht verbinden und ich weiss 
nicht mehr sicher, was damals wirklich der Grund war.

Angehängt ist eine Beispielverschaltung aus dem Datenblatt wobei hier 
IO39-IO42 für den JTAG sind. Wenn ich nun über den JTAG programmieren 
will, reicht es einfach diese 4 Pins zu verbinden und dann einen Reset 
über EN zu triggern? Kann ich da evtl. sogar den RST vom JLINK 
verwenden?

Datenblatt ESP32: 
https://media.digikey.com/pdf/Data%20Sheets/Espressif%20PDFs/ESP32-S3-WROOM-1_1U_v0.5.1_Preliminary.pdf
Angehängte Dateien:
#7131865
über JTAG kommt der Debugger an den CPU Kern, auch ohne Reset. Bei den 
Cortex-M ist das auch so, ausser die CPU ist im Tiefschlaf. Wenn das 
beim ESP auch so ist, dann braucht man für diesen Fall vermutlich auch 
die Reset Leitung.
#7131871
EN bzw. NRST auf der JTAG Seite ist nicht notwendig um den ESP32 via 
JTAG zu flashen. Der S3 besitzt aber wie du richtig erkannt hast einen 
internen JTAG-Debugger der via USB angebunden ist und der ist per Fuses 
als Default verbunden.

Das heißt um einen externen Debugger an GPIO39-42 anhängen zu können 
musst du Fuses brennen:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/jtag-debugging/configure-other-jtag.html

Meiner Erfahrung nach ist das ganze Espressif typisch noch im Alpha 
Zustand. Die Namen der Fuses ändern sich grad von Version zu Version und 
ich kann auch noch nicht bestätigen dass die verlässlich funktionieren.

Ich hab gestern zum ersten Mal erfolgreich einen S3 via JLink debugged. 
Dazu hab ich als einzige Fuse "JTAG_SEL_ENABLE" gebrannt. GPIO3 wird 
dann verwendet um zw. USB und ext. Debugger umzuschalten. Bei einem 
anderen Eval-Board hab ich zusätzlich noch "DIS_USB_JTAG" gebrannt... 
ich test gleich mal ob das auch funktioniert.

/edit
Ok, "DIS_USB_JTAG" funktioniert ebenfalls. Ich würde trotzdem empfehlen 
nur "JTAG_SEL_ENABLE" zu brennen um einem die Option auf USB offen zu 
lassen... wer weiß.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.