Hello,
I’ve built a custom board with the ESP32-C3 and I intended to program( and debug) the ESP32-C3 only via USB.
Although it seems that to program the device the actually first time I need to hold the IO9 pin low. Indeed reading around in the forum it seems their people have to do it as well.
I would like to understand if it’s required and why it’s that, as I allowed the USB_JTAG core could directly flash the new firmware.
If verified this will slow down and complicate the mass production process of the final product as we need to drive an extra pin during programming (or perhaps add a button just for this reason).
Thanks for your help!!!
Nidhi
It's not required per se, but it's helpful. The issue is that an empty ESP32-C3 usually will try to boot from flash and fail. After some attempts, the RTC watchdog will protest in to reset the entire chip. This is useful as it may clear any transient error that would stop a properly flashed chip froRead more
It’s not required per se, but it’s helpful. The issue is that an empty ESP32-C3 usually will try to boot from flash and fail. After some attempts, the RTC watchdog will protest in to reset the entire chip. This is useful as it may clear any transient error that would stop a properly flashed chip from booting. However, it also resets the USB-serial- JTAG device, causing the OS tore-enumerate it. Going into download mode (either by pulling low GPIO9 or by successfully connecting using the flashing app) stops that from passing, allowing the chip to be flashed as normal.
Not having GPIO9 accessible will generally work (depending on how fast your OS is in detecting USB devices) but may need several tries in flashing for the timing to be right.
Another thing is that without forcing the chip into download mode, for old performances of the esp tool, a watchdog will keep running during the flashing process, which may interrupt flashing if the firmware is fairly large. Using a newer version of the esp tool should fix that, however.)
See less