STM32F0,ST链路v2,OpenOCD 0.9.0:打开失败

STM32F0,ST链路v2,OpenOCD 0.9.0:打开失败,stm32,openocd,Stm32,Openocd,我正在使用gcc arm none eabi 4.9-2015q2为STM32F0编译,现在我想使用该集合中的arm none eabi gdb进行调试。我的ST Link v2是NucleoF411RE板的一部分,连接有外部硬件(STM32F0目标)。刷新F0工作正常,因此我认为我的社署连接良好 现在我想开始,但失败了: $ openocd -f interface/stlink-v2.cfg -f target/stm32f0x.cfg Open On-Chip Debugger 0.9.0

我正在使用gcc arm none eabi 4.9-2015q2为STM32F0编译,现在我想使用该集合中的arm none eabi gdb进行调试。我的ST Link v2是NucleoF411RE板的一部分,连接有外部硬件(STM32F0目标)。刷新F0工作正常,因此我认为我的社署连接良好

现在我想开始,但失败了:

$ openocd -f interface/stlink-v2.cfg -f target/stm32f0x.cfg
Open On-Chip Debugger 0.9.0 (2015-07-26-16:02)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
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: open failed
in procedure 'init'
in procedure 'ocd_bouncer'
$openocd-f interface/stlink-v2.cfg-f target/stm32f0x.cfg
打开片上调试器0.9.0(2015-07-26-16:02)
根据GNU GPL v2获得许可
有关错误报告,请阅读
http://openocd.org/doc/doxygen/bugs.html
信息:自动选择第一个可用的会话传输“hla_swd”。要覆盖,请使用“传输选择”。
信息:所选传输接管了低级目标控制。与普通JTAG/SWD相比,结果可能有所不同
适配器速度:1000 kHz
适配器\u nsrst\u延迟:100
不分开
信息:无法匹配请求的速度1000 kHz,使用950 kHz
信息:无法匹配请求的速度1000 kHz,使用950 kHz
信息:时钟速度950 kHz
错误:打开失败
在“init”过程中
“强迫症保镖”程序中
这里可能出了什么问题


我也无法使用st-util建立连接,它报告超时,最后总是会因错误而崩溃。

我找到了修复方法。stlink-v2.cfg中的VID/PID对错误。他们有:

hla_vid_pid 0x0483 0x3748

但应该是这样的:

hla_vid_pid 0x0483 0x374B


字母“B”,而不是数字“8”。

核仁F411重新嵌入stlink v2-1而不是stlink v2

因此,按如下方式更改脚本文件:

source [find interface/stlink-v2-1.cfg]

transport select hla_swd

source [find target/stm32f4x.cfg]

reset_config srst_only

文件
stlink-v2.cfg
可能正常。您可能应该使用
stlink-v2-1.cfg
文件(该文件中是
hla\u vid\u pid 0x0483 0x3748
)。

在我的情况下,我也得到了
错误:打开失败
,但所有配置都正常。然后我做了
dmesg | grep usb
,看看为什么它不能通过usb(在Ubuntu上)连接。dmesg告诉我有电源问题,可能是电缆故障。由于我在同一天早些时候使用了同一根电缆,并且电路板上的一些指示灯仍然闪烁,我首先忽略了这条消息。但后来我终于决定试试,买了另一条电缆,瞧!这是一根有毛病的电缆——有了新的,一切都正常。所以,毕竟不总是软件问题

尽管如果您使用lsusb(或在Windows中使用设备管理器),并且电路板的列表很好,这可能不是电缆问题。如果缺少,则可能是。

1.in EclipseIDE-->project-->inc-->{project\u name}debug.cfg->source[find interface/stlink.cfg]

检查接口调试器是否为stlink.cfg或stlink-v2.cfg或stlink-v2-1.cfg 并更改[find interface/stlink.cfg]

{或}试试看

2.C:\Ac6\SystemWorkbench\plugins\fr.Ac6.mcu.debug\u 2.5.0.201904120827\resources\openocd\st\u scripts\interface\stlink.cfg(或stlink-v2.cfg或stlink-v2-1.cfg)


添加hla_vid_pid 0

似乎是stlink usb连接有问题。首先检查USB电缆,尝试另一个USB端口,或者查看dmesg(如果您使用的是linux,windows可能是因为您没有来自ST的驱动程序)。在搜索STM32F4-DISCO板的相同问题时,出现了这个问题。似乎在某个时候,ST转而在该板上使用STLink V2-1(参见@sprhawk的答案)。注意这一点,任何人发现自己在这里的原因。设置为软件重置工作为我。请参阅链接:有一个类似的问题:想用stm32f0discovery调试stm32f429芯片,但它不适用于
-f board/stm32f0discovery.cfg
无论我使用
-f interface/stlink-{v2,v2-1}.cfg,但最后只使用
-f board/stm32f429discovery.cfg
-f interface/stlink-v2.cfg
。因此,这可能取决于目标(这里是一个stm32f429x芯片)?正如@sprhawk在他们的回答中指出的,还有另一个配置文件具有正确的0x374B PID。这对我(STM32F4)有所帮助。我正在使用STM32L031,这为我解决了连接问题。我花了一个晚上试图解决这个问题。原来是usb电缆出了问题。谢谢分享