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
Was ich noch rausgefunden habe ist, dass normalerweise der USB (IO19 und IO20) direkt auf den integrierten JTAG führt. Ich sehe aber noch nicht, wie ich den nun programmieren kann, denn einen Reset muss ich sicher auch noch triggern können.
ü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.
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ß.
:
Bearbeitet durch User
Vincent H. schrieb: > 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ß. Ok, danke dir. Also kann ich direkt über USB den Controller flashen wenn der so ab Fabrik kommt?
Ja, das funktioniert (entgegen meinen ersten Befürchtungen) eigentlich recht gut. Ein Beispiel dafür findet sich auch im Link:
1 | openocd -f board/esp32s3-builtin.cfg -c "program_esp filename.bin 0x10000 verify exit" |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.