Got pulled in as secondary consultant for a head-scratcher of a problem flashing an ESP32 from a Linux SoC embedded in a product.
The ESP32 flashes perfectly from a USB/Serial adapter, but would never flash from the SoC's onboard UART.
Waveforms on the scope looked absolutely perfect, all the transitions happen at the right time and we see the ESP32 go into its serial bootloader mode. However, it never sends any reply to the packets sent from esptool.
Several hours of head-scratching and triple-checking signals ensue.
Eventually I zoomed in on the packets sent by the SoC's onboard UART. esptool sends these SYNC packets with 0x55 square wave payload, and the ESP32 auto-bauds based on what it receives.
The problem is there, but its not exactly easy to spot...