My ultimate goal is to be able to program, burn eFuses and debug running code without the presence of a USB connector.
For context, I'm using the IDF-SDK v5.4 extension inside VSCode on Windows 11. As I mentioned in the subject, I'm using an ESP-Prog.
I've used Zadig to install WinUSB on Interface 0 of my Dual RS-232 device. (I've tried libusbK as well.) I've managed to get two consecutive COM ports to show up. (Sometimes...)
I've burned the DIS_USB_JTAG eFuse.
Sometimes, I can get OpenOCD to start; whether by clicking the [OpenOCD Server] link in the IDF extension, or by running
Code: Select all
openocd -f interface/ftdi/esp32_devkitj_v1.cfg -f target/esp32s3.cfgI am really fuzzy on which drivers actually need to be installed via Zadig to make everything work just right every time, and it's more than a bit confusing that the COM ports assigned keep changing. It also seems like switching to a different USB port on my machine is a no-no.
As for UART debugging, I haven't been able to get that working at all. I've read that I should leave the USB driver for Interface 1 on the default ETFI, and I'm working on the assumption that JTAG is on the lower COM port and UART is on the higher one.
I was even able to flash an image using the JTAG interface, once, although it seemed to take forever. And I haven't been able to replicate it since.
I could live with slow speed, but the really problem is the eFuse. If there's no USB port, you need to be able to reliably connect over the UART so that you can burn the DIS_USB_JTAG eFuse. Otherwise, you're in a catch-22. I learned this the hard way when I received a PCB order where I broke out the JTAG interface but not the serial lines.
Anyhow, I feel like I'm within kicking distance of getting this all working, but I'm feeling pretty demoralized given all of the hours invested in trying to wrap my head around this and get all of the infrastructure set up just so. If you have solved some of these challenges in a relatable way, I would love to hear from you.
Yes, the ESP32-S3-DevKitM-1 obviously has USB ports. I am trying to work out the process on a dev board before I apply the same techniques to my own board, which will not have USB.