Skip to content

【ESP32-C3/JTAG Built-In Invalid】Jtag Built-in invalid after burning JTAG_SEL_ENABLE bit (OCD-404) (IDFGH-6159) #7836

@xiaolongba

Description

@xiaolongba

Environment

Development Kit: Custom Board
Module or chip used: ESP32-C3-WROOM-02
Debug Adapter: Jtag Built-in
OpenOCD version: v0.10.0-esp32-20210721
Operating System: Win10
Using an IDE?: Vscode + ESP-IDF Extension
OpenOCD command line:

openocd-esp32\\bin\\openocd.exe -s tcl -f board/esp32c3-builtin.cfg

JTAG Clock: default
ESP-IDF version: ESP-IDF v4.4-dev-1849-g8e3e65a47

Problem Description

Steps to reproduce the behavior:

  1. Type in the OpenOCD command line: openocd-esp32\bin\openocd.exe -s tcl -f board/esp32c3-builtin.cfg
  2. Error occurred

Debug Logs

 F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\openocd-esp32\\v0.10.0-esp32-20210721\\openocd-esp32\\bin\\openocd.exe -s tcl -f board/esp32c3-builtin.cfg
Open On-Chip Debugger  v0.10.0-esp32-20210721 (2021-07-21-13:35)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
Warn : Transport "jtag" was already selected
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : esp_usb_jtag: Device found. Base speed 40000KHz, div range 1 to 255
Info : clock speed 40000 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32c3.cpu: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Error: dtmcontrol is 0. Check JTAG connectivity/board power.
Info : Listening on port 3333 for gdb connections

Expected behavior

I followed the instructions mentioned here, as @igrr Bro said, it could be switched to USB_SERIAL_JTAG again if GPIO10 is low on reset, but the actual situation is impossible to use the Jtag Bulit-in any more. also, the JTAG via GPIOs is always enabled no matter which GPIO10 levels after burning the JTAG_SEL_ENABLE bit. again, I looked into the datasheet of ESP32-C3, it described as below:

EFUSE_STRAP_JTAG_SELSet this bit to enable selection between usb_to_jtag and pad_to_jtagthrough strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0. (RO)

However, I tried to burn this bit, the error occurred, as below:

PS F:\BLE_WIFI\Espressif\SDK\blink\blink> F:/Tools/Espressif/IDF_Tools/.espressif/python_env/idf4.4_py3.8_env/Scripts/python.exe F:\BLE_WIFI\Espressif\SDK\esp-idf-c3\components\esptool_py\esptool\espefuse.py -p COM50 burn_efuse STRAP_JTAG_SEL 1
Connecting....
Detecting chip type... ESP32-C3

A fatal error occurred: Invalid the efuse name 'STRAP_JTAG_SEL'. Available the efuse names: ['WR_DIS', 'RD_DIS', 'DIS_RTC_RAM_BOOT', 'DIS_ICACHE', 'DIS_USB_JTAG', 'DIS_DOWNLOAD_ICACHE', 'DIS_USB_DEVICE', 'DIS_FORCE_DOWNLOAD', 'DIS_USB', 'DIS_CAN', 'JTAG_SEL_ENABLE', 'SOFT_DIS_JTAG', 'DIS_PAD_JTAG', 'DIS_DOWNLOAD_MANUAL_ENCRYPT', 'USB_EXCHG_PINS', 'VDD_SPI_AS_GPIO', 'BTLC_GPIO_ENABLE', 'POWERGLITCH_EN', 'POWER_GLITCH_DSENSE', 'WDT_DELAY_SEL', 'SPI_BOOT_CRYPT_CNT', 'SECURE_BOOT_KEY_REVOKE0', 'SECURE_BOOT_KEY_REVOKE1', 'SECURE_BOOT_KEY_REVOKE2', 'KEY_PURPOSE_0', 'KEY_PURPOSE_1', 'KEY_PURPOSE_2', 'KEY_PURPOSE_3', 'KEY_PURPOSE_4', 'KEY_PURPOSE_5', 'SECURE_BOOT_EN', 'SECURE_BOOT_AGGRESSIVE_REVOKE', 'FLASH_TPUW', 'DIS_DOWNLOAD_MODE', 'DIS_LEGACY_SPI_BOOT', 'UART_PRINT_CHANNEL', 'FLASH_ECC_MODE', 'DIS_USB_DOWNLOAD_MODE', 'ENABLE_SECURITY_DOWNLOAD', 'UART_PRINT_CONTROL', 'PIN_POWER_SELECTION', 'FLASH_TYPE', 'FLASH_PAGE_SIZE', 'FLASH_ECC_EN', 'FORCE_SEND_RESUME', 'SECURE_VERSION', 'MAC', 'SPI_PAD_CONFIG_CLK', 'SPI_PAD_CONFIG_Q', 'SPI_PAD_CONFIG_D', 'SPI_PAD_CONFIG_CS', 'SPI_PAD_CONFIG_HD', 'SPI_PAD_CONFIG_WP', 'SPI_PAD_CONFIG_DQS', 'SPI_PAD_CONFIG_D4', 'SPI_PAD_CONFIG_D5', 'SPI_PAD_CONFIG_D6', 'SPI_PAD_CONFIG_D7', 'WAFER_VERSION', 'PKG_VERSION', 'BLOCK1_VERSION', 'OPTIONAL_UNIQUE_ID', 'BLOCK2_VERSION', 'BLOCK_USR_DATA', 'BLOCK_KEY0', 'BLOCK_KEY1', 'BLOCK_KEY2', 'BLOCK_KEY3', 'BLOCK_KEY4', 'BLOCK_KEY5', 'BLOCK_SYS_DATA2']

so what I expected is that the Jtag Built-in functionality can be switched through GPIO10, as said as here

Screenshots

image

Complain

In terms of environment setup, I encountered lots of issues, and took me lots of time sometimes, the deeper research, the more questions. I tried to resolve the issues by myself, but I found that it is difficult to do that as the contents docs mentioned are wrong or missing sometimes. also, the debug issue for ESP32-C3 with Jtag Built-in, & esp-idf extension, I found that lots of guys faced this issue and it still exists until now. but it is very strange for me as it is general for users for this issue. anyway, I'm going crazy.

At last, Can you help me double-check this situation?

big thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions