Aggiornamento
In realta' il Jtag USB funziona anche sui moduli cinesi
Il problema risiede nell'ID USB della porta Jtag. Nel modulo Espressif originale si trova in 303a:1001 mentre nel modulo cinese si trova in 303a:4001
/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240821/openocd-esp32/share/openocd/scripts/interface/esp_usb_jtag.cfg
espusbjtag vid_pid 0x303a 0x4001
espusbjtag caps_descriptor 0x2000
modificando Pid da 1001 a 4001 ed aggiungendo la regola in udev
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="4001", MODE="664", GROUP="plugdev", TAG+="uaccess
--------------------------------------------------------------------------------------------------------
La Esp32S3 espone sui pin 19 e 20 una porta USB che puo' essere usata per fare debug....ma attenzione...questo e' valido per il DevKit ufficiale di Espressif ma non funziona con i moduli cinesi (ci sono impazzito dietro a questa cosa)
Si deve creare un cavo usb tagliandone uno, giuntando dei cavi Dupount femmina e connettendo
D+ (verde) a GPIO19
D- (bianco) a GPIO20
GND (nero) a GND (forse non necessario)
a questo punto connettendo la scheda con lsusb si legge Espressif USB Jtag Serial (che si e' andato su /dev/ttyACM0) come debugger e CP210x UART Bridge come /dev/ttyUSB0 per la normale connessione con Esp32
a questo punto si ha il seguente errore nell'avviare il server OpenOCD
libusb_open() failed with LIBUSB_ERROR_ACCESS
prima di tutto si deve inserire l'utente nel gruppo plugdev
sudo usermod -a -G plugdev luca
poi si crea un file 99-jtag.rules con contenuto
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="664", GROUP="plugdev", TAG+="uaccess"
e lo si copia in /etc/udev/rules.d. (i valori sono ripresi da comando lsusb). Si aggiorna plugdev
sudo udevadm control --reload-rules & sudo udevadm trigger
si avvia il server OpenOcd
openocd -f board/esp32s3-builtin.cfg
e poi da dentro Visual Code plugin ESP-IDF si clicca su Flash (se il progetto e' configurato bene inizia anche il debug) Select Flash Mode JTAG port /dev/ttyUSB0
ed ecco alla fine avviata la sessione di debug usando l'esempio Fibonacci