更多踩坑记录,见公众号 「单片机那点事」

问题现象

在 VS Code + ESP-IDF 调试 ESP32-S3 时,OpenOCD 报错,USB-JTAG 无法连接。

典型输出包含:

  • libusb_open() failed with LIBUSB_ERROR_ACCESS
  • esp_usb_jtag: device not found
  • LIBUSB_ERROR_NOT_FOUND

图片

(VS Code 报错输出)

结论:

这是 Windows USB-JTAG 驱动错误,与代码、ESP-IDF 版本无关。


解决思路

ESP32-S3 使用 原生 USB-JTAG

但 Windows 常会自动绑定错误驱动,导致 libusb 无权限访问。

解决方法:先卸载自带驱动,再用 Zadig 将 USB-JTAG 驱动替换为 libwdi


操作步骤

1.连接开发板

USB 直连 ESP32-S3 开发板


2.打开 Zadig

下载并运行(管理员权限):

zadig-2.9.zip


3.显示全部设备(关键)

菜单栏:

Options → List All Devices(勾选)

图片


4.安装 USB-JTAG 驱动

在设备列表中选择:

USB JTAG/serial debug unit (Interface 0)
  • 点击 Replace Driver

  • 等待安装完成

图片


关键检查(最容易出问题的地方)

5.设备管理器确认

打开设备管理器,会看到 两个 设备:

USB JTAG/serial debug unit
USB JTAG/serial debug unit

这是正常现象(Interface 0 / 1)。

图片


6.检查驱动提供商(必须都一致)

分别查看两个设备:

(双击名称)属性 → 驱动程序

驱动程序提供商必须都是:

libwdi

图片


驱动不正确的处理方式

如果其中任意一个不是 libwdi(如 Microsoft / Windows):

图片

  1. 在设备管理器中 卸载设备

  2. 重新使用 Zadig 执行 Replace Driver

图片

重复操作,直到 两个 USB-JTAG 设备的驱动提供商均为 libwdi


验证结果

重新启动 VS Code 调试:

  • USB-JTAG 正常识别

  • OpenOCD 连接成功

  • ESP32-S3 可正常单步、断点调试

图片


总结

ESP32-S3 USB-JTAG 报错,

本质是 Windows 驱动权限问题

  • 出现 LIBUSB_ERROR_ACCESS

  • 出现 device not found

  • 大概率就是 USB-JTAG 驱动没装对

Zadig

libwdi

两个 Interface 都要检查


更多踩坑记录,见公众号 「单片机那点事」

更多推荐