Failed to burn fw with esp-prog JTAG to esp32 wroom

Hello,

I’m trying w/o success to burn/debug my esp32 wroom module .

Till today I’ve worked on esp32-devkit board - and all works fine.

We received our custom board assembly with same module (esp32 wroom module) but I cant burn it .

  • Using esp-prog board
  • Changed the driver (both ports of the FTDI ) with zagid app.
  • I’m using same project ( ESP-IDF ) only change in platformio.ini the board from esp32doit-devkit-v1 to esp32dev.
  • Currently I’m trying with JTAG ( also i can try using UART0)
  • you can find the LOG error below :

Open On-Chip Debugger v0.10.0-esp32-20190708 (2019-07-08-11:04)
Licensed under GNU GPL v2
For bug reports, read
OpenOCD: Bug Reporting
debug_level: 1
none separate
adapter speed: 20000 kHz
esp32 interrupt mask on
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
** Programming Started **
auto erase enabled
wrote 172032 bytes from file .pio\build\esp32doit-devkit-v1\firmware.bin in 1.362719s (123.283 KiB/s)
** Programming Finished **
** Verify Started **
read 170400 bytes from file .pio\build\esp32doit-devkit-v1\firmware.bin and flash bank 0 at offset 0x00010000 in 0.862267s (192.987 KiB/s)
contents differ
diff 0 address 0x00010000. Was 0xff instead of 0xe9
diff 1 address 0x00010001. Was 0xff instead of 0x06
diff 2 address 0x00010002. Was 0xff instead of 0x02
diff 3 address 0x00010003. Was 0xff instead of 0x20
diff 4 address 0x00010004. Was 0xff instead of 0x68
diff 5 address 0x00010005. Was 0xff instead of 0x13
diff 6 address 0x00010006. Was 0xff instead of 0x08
diff 7 address 0x00010007. Was 0xff instead of 0x40
diff 8 address 0x00010008. Was 0xff instead of 0xee
diff 9 address 0x00010009. Was 0xff instead of 0x00
diff 10 address 0x0001000a. Was 0xff instead of 0x00
diff 11 address 0x0001000b. Was 0xff instead of 0x00
diff 12 address 0x0001000c. Was 0xff instead of 0x00
diff 13 address 0x0001000d. Was 0xff instead of 0x00
diff 14 address 0x0001000e. Was 0xff instead of 0x00
diff 15 address 0x0001000f. Was 0xff instead of 0x00
diff 16 address 0x00010010. Was 0xff instead of 0x00
diff 17 address 0x00010011. Was 0xff instead of 0x00
diff 18 address 0x00010012. Was 0xff instead of 0x00
diff 19 address 0x00010013. Was 0xff instead of 0x00
diff 20 address 0x00010014. Was 0xff instead of 0x00
diff 21 address 0x00010015. Was 0xff instead of 0x00
diff 22 address 0x00010016. Was 0xff instead of 0x00
diff 23 address 0x00010017. Was 0xff instead of 0x01
diff 24 address 0x00010018. Was 0xff instead of 0x20
diff 25 address 0x00010019. Was 0xff instead of 0x00
diff 26 address 0x0001001a. Was 0xff instead of 0x40
diff 27 address 0x0001001b. Was 0xff instead of 0x3f
diff 28 address 0x0001001c. Was 0xff instead of 0x58
diff 29 address 0x0001001d. Was 0xff instead of 0x94
diff 30 address 0x0001001e. Was 0xff instead of 0x00
diff 31 address 0x0001001f. Was 0xff instead of 0x00
diff 32 address 0x00010020. Was 0xff instead of 0x32
diff 33 address 0x00010021. Was 0xff instead of 0x54
diff 34 address 0x00010022. Was 0xff instead of 0xcd
diff 35 address 0x00010023. Was 0xff instead of 0xab
diff 36 address 0x00010024. Was 0xff instead of 0x00
diff 37 address 0x00010025. Was 0xff instead of 0x00
diff 38 address 0x00010026. Was 0xff instead of 0x00
diff 39 address 0x00010027. Was 0xff instead of 0x00
diff 40 address 0x00010028. Was 0xff instead of 0x00
diff 41 address 0x00010029. Was 0xff instead of 0x00
diff 42 address 0x0001002a. Was 0xff instead of 0x00
diff 43 address 0x0001002b. Was 0xff instead of 0x00
diff 44 address 0x0001002c. Was 0xff instead of 0x00
diff 45 address 0x0001002d. Was 0xff instead of 0x00
diff 46 address 0x0001002e. Was 0xff instead of 0x00
diff 47 address 0x0001002f. Was 0xff instead of 0x00
diff 48 address 0x00010030. Was 0xff instead of 0x31
diff 49 address 0x00010031. Was 0xff instead of 0x2e
diff 50 address 0x00010032. Was 0xff instead of 0x30
diff 51 address 0x00010033. Was 0xff instead of 0x2e
diff 52 address 0x00010034. Was 0xff instead of 0x30
diff 53 address 0x00010035. Was 0xff instead of 0x00
diff 54 address 0x00010036. Was 0xff instead of 0x00
diff 55 address 0x00010037. Was 0xff instead of 0x00
diff 56 address 0x00010038. Was 0xff instead of 0x00
diff 57 address 0x00010039. Was 0xff instead of 0x00
diff 58 address 0x0001003a. Was 0xff instead of 0x00
diff 59 address 0x0001003b. Was 0xff instead of 0x00
diff 60 address 0x0001003c. Was 0xff instead of 0x00
diff 61 address 0x0001003d. Was 0xff instead of 0x00
diff 62 address 0x0001003e. Was 0xff instead of 0x00
diff 63 address 0x0001003f. Was 0xff instead of 0x00
diff 64 address 0x00010040. Was 0xff instead of 0x00
diff 65 address 0x00010041. Was 0xff instead of 0x00
diff 66 address 0x00010042. Was 0xff instead of 0x00
diff 67 address 0x00010043. Was 0xff instead of 0x00
diff 68 address 0x00010044. Was 0xff instead of 0x00
diff 69 address 0x00010045. Was 0xff instead of 0x00
diff 70 address 0x00010046. Was 0xff instead of 0x00
diff 71 address 0x00010047. Was 0xff instead of 0x00
diff 72 address 0x00010048. Was 0xff instead of 0x00
diff 73 address 0x00010049. Was 0xff instead of 0x00
diff 74 address 0x0001004a. Was 0xff instead of 0x00
diff 75 address 0x0001004b. Was 0xff instead of 0x00
diff 76 address 0x0001004c. Was 0xff instead of 0x00
diff 77 address 0x0001004d. Was 0xff instead of 0x00
diff 78 address 0x0001004e. Was 0xff instead of 0x00
diff 79 address 0x0001004f. Was 0xff instead of 0x00
diff 80 address 0x00010050. Was 0xff instead of 0x65
diff 81 address 0x00010051. Was 0xff instead of 0x73
diff 82 address 0x00010052. Was 0xff instead of 0x70
diff 83 address 0x00010053. Was 0xff instead of 0x5f
diff 84 address 0x00010054. Was 0xff instead of 0x69
diff 85 address 0x00010055. Was 0xff instead of 0x64
diff 86 address 0x00010056. Was 0xff instead of 0x66
diff 87 address 0x00010057. Was 0xff instead of 0x5f
diff 88 address 0x00010058. Was 0xff instead of 0x73
diff 89 address 0x00010059. Was 0xff instead of 0x74
diff 90 address 0x0001005a. Was 0xff instead of 0x61
diff 91 address 0x0001005b. Was 0xff instead of 0x72
diff 92 address 0x0001005c. Was 0xff instead of 0x74
diff 93 address 0x0001005d. Was 0xff instead of 0x5f
diff 94 address 0x0001005e. Was 0xff instead of 0x75
diff 95 address 0x0001005f. Was 0xff instead of 0x61
diff 96 address 0x00010060. Was 0xff instead of 0x72
diff 97 address 0x00010061. Was 0xff instead of 0x74
diff 98 address 0x00010062. Was 0xff instead of 0x5f
diff 99 address 0x00010063. Was 0xff instead of 0x70
diff 100 address 0x00010064. Was 0xff instead of 0x72
diff 101 address 0x00010065. Was 0xff instead of 0x6f
diff 102 address 0x00010066. Was 0xff instead of 0x74
diff 103 address 0x00010067. Was 0xff instead of 0x6f
diff 104 address 0x00010068. Was 0xff instead of 0x63
diff 105 address 0x00010069. Was 0xff instead of 0x6f
diff 106 address 0x0001006a. Was 0xff instead of 0x6c
diff 107 address 0x0001006b. Was 0xff instead of 0x00
diff 108 address 0x0001006c. Was 0xff instead of 0x00
diff 109 address 0x0001006d. Was 0xff instead of 0x00
diff 110 address 0x0001006e. Was 0xff instead of 0x00
diff 111 address 0x0001006f. Was 0xff instead of 0x00
diff 112 address 0x00010070. Was 0xff instead of 0x31
diff 113 address 0x00010071. Was 0xff instead of 0x37
diff 114 address 0x00010072. Was 0xff instead of 0x3a
diff 115 address 0x00010073. Was 0xff instead of 0x31
diff 116 address 0x00010074. Was 0xff instead of 0x32
diff 117 address 0x00010075. Was 0xff instead of 0x3a
diff 118 address 0x00010076. Was 0xff instead of 0x35
diff 119 address 0x00010077. Was 0xff instead of 0x30
diff 120 address 0x00010078. Was 0xff instead of 0x00
diff 121 address 0x00010079. Was 0xff instead of 0x00
diff 122 address 0x0001007a. Was 0xff instead of 0x00
diff 123 address 0x0001007b. Was 0xff instead of 0x00
diff 124 address 0x0001007c. Was 0xff instead of 0x00
diff 125 address 0x0001007d. Was 0xff instead of 0x00
diff 126 address 0x0001007e. Was 0xff instead of 0x00
diff 127 address 0x0001007f. Was 0xff instead of 0x00
More than 128 errors, the rest are not printed.
embedded:startup.tcl:480: Error: ** Verify Failed **
in procedure ‘program_esp32’
in procedure ‘program_error’ called at file “C:/Users/laptop7/.platformio/packages/tool-openocd-esp32/share/openocd/scripts/target/esp32.cfg”, line 138
at file “embedded:startup.tcl”, line 480
Warn : Flash driver of esp32.flash does not support free_driver_priv()
Warn : Flash driver of irom does not support free_driver_priv()
Warn : Flash driver of drom does not support free_driver_priv()
*** [upload] Error 1
============================================ [FAILED] Took 308.53 seconds ============================================
The terminal process terminated with exit code: 1

Terminal will be reused by tasks, press any key to close it.

Please advise,
Best regards
Moran

Right after being programmed, the flash still reads as “erased” (0xff)? Well somemthing’s fishy there.

Are you able to flash it via the standard UART bootloader? That would rule out JTAG-specific errors.

When you have it connected in bootloader mode via UART, can you still run esptool.py -P <serial port> flash_id for both boards seperately? It should output things like

> python esptool.py -p COM22 flash_id
esptool.py v2.8
Serial port COM22
Connecting........_
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:04:XX:XX
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...

The tool should be in your PlatformIO package folder like C:\Users\<user>\.platformio\packages\tool-esptoolpy.

Your story sounds as if the hardware makes the difference:

  • Are they exactly the same WROOM modules?
  • Are the JTAG pins wired correctly and not used by anything else?
  • Does the WROOM modules have a good stable power supply?
  • Are the JTAG lines ok (not loaded with high resistance or capacitance)?

Thanks for the replies

Yes I’m able to upload program using UART0.

I’m still investigate it.