Skip to content

ESP32-C3 USB JTAG

1. 简介

ESP32-C3 的 USB JTAG 是一种调试接口,它允许开发人员通过 USB 连接将调试器连接到 ESP32-C3,从而进行代码调试和固件更新。USB JTAG 接口支持 JTAG 和 SWD(Serial Wire Debug)两种调试协议。

2. 硬件连接

ESP32-C3 的 USB JTAG 接口通常包括以下引脚:

引脚名称描述颜色ESP32-C3
15.0V电源红色3.3V
2D-Data -白色GPIO18
3D+Data +绿色GPIO19
4GND黑色GND
plaintext

                  +-------+
+------+          |       |
| 5.0V |          |3.3V   |
| D-   |--------->|GPIO18 |
| D+   |--------->|GPIO19 |
| GND  |--------->|GND    |
+------+          |       |
                  +-------+

3. openocd的安装与配置

当你正常安装好esp-idf后,openocd会自动安装。但是却还不能正常使用,需要设置一下usb的权限才行。

第一步:让用户加入dialout和plugdev组,这样就可以使用usb了。

bash
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER

第二步:给ESP32-C3的USB JTAG接口添加权限。

​确认设备识别:

bash
lsusb | grep -i "303a:1001"  # ESP32-C3的默认VID/PID

ESP32-C3的默认VID/PID为:0x303a:0x1001
将USB接口与ESP32-c3连接后:

  • 如果能显示出对应的条目,说明设备已被识别。
  • 若设备未列出,检查USB连接或硬件状态。

创建配置文件

创建文件 /etc/udev/rules.d/99-esp32-usb-jtag.rules,内容:

plaintext
SUBSYSTEM=="usb", ATTR{idVendor}=="303a", ATTR{idProduct}=="1001", MODE="0666", GROUP="plugdev"

这里面的 303a 和 1001 是 ESP32-C3 的默认 VID 和 PID。

说明

  • 作用范围:
    Udev 规则是 Linux 系统中用于动态管理设备文件的规则。它可以根据设备的属性(如供应商 ID、产品 ID 等)来设置设备文件的权限和所属组。
  • 目的:
    为特定的 USB 设备设置访问权限,确保只有特定的用户组(plugdev)可以访问该设备。
  • 适用场景:
    适用于需要精确控制访问权限的设备,尤其是那些不直接属于传统串行端口设备的 USB 设备。

第三步:然后重启udev服务:

bash
sudo udevadm control --reload-rules 
sudo service udev restart

4. openocd的使用

第一步:启动openocd服务:

在VSCODE中,首先点击"打开openocd Server",然后选择 /dev/ttyACM0,选择 芯片esp32-c3后选择 ESP32-C3(via builtin USB-JTAG)即可。

第二步:所有的操作与串口命令完全一样。