openocd **错误:libusb_open() 失败,LIBUSB_ERROR_NOT_SUPPORTED**

Rap*_*023 8 eclipse openocd nucleo

我正在尝试设置一个 eclipse 开发环境来使用 stm32f303 nucleo 32 板。 http://www.st.com/en/evaluation-tools/nucleo-f303k8.html

到目前为止,所有工具似乎都已正确安装并正常工作:我已经成功编译并启动了用于 stm32f4 发现的 openocd 调试器,当我连接 stm32f303 nucleo 32 板并启动 openocd 时,板上的 LED 指示它已连接。(我已经刷了黑板。)

当我逐步调试时,问题是 openocd 丢失了,这似乎与 openocd 开始时给我的消息有关(查找粗线):

Open On-Chip Debugger 0.9.0 (2015-05-19-12:09)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
**Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED**
Info : STLINK v2 JTAG v27 API v2 SWIM v15 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.239293
Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoints
Run Code Online (Sandbox Code Playgroud)

在这种情况下,有人知道如何修复 USB 驱动程序,还是可能是其他原因导致了问题?

kal*_*iya 9

如果您在 Linux 上遇到此问题,则必须配置 udev 规则才能使用该设备。在“贡献”下找到 openOCD 源分发中包含的 99-openocd.rules。连接您的 ST-Link USB 设备并从终端运行“lsusb”,它会列出如下内容:

Bus 004 Device 009: ID 0483:3748 STMicroelectronics ST-LINK/V2

注意 ID 后面的值,您要检查 99-openocd.rules 以查看是否有支持该设备的匹配条目,在上述情况下是这个:

# STLink v2
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="664", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

将此文件复制到您的 /etc/udev/rules.d 配置目录并重新启动您的机器。然后再次尝试调试。

  • 您不需要重新启动,只需:`sudo udevadm control --reload` (3认同)
  • @hesham_EE - 在发出您提到的命令后,您需要断开并重新连接设备 (3认同)

小智 5

OpenOCD 发行版包含一些 libusb 驱动程序,建议运行 zadig.exe 工具来激活它们。这将解决您的问题。

http://zadig.akeo.ie/