STM32F0,ST-link v2,OpenOCD 0.9.0:打开失败
Posted
技术标签:
【中文标题】STM32F0,ST-link v2,OpenOCD 0.9.0:打开失败【英文标题】:STM32F0, ST-link v2, OpenOCD 0.9.0: open failed 【发布时间】:2015-10-16 18:26:18 【问题描述】:我正在使用Launchpad'sgcc-arm-none-eabi 4.9-2015q2 为 STM32F0 进行编译,现在我想使用该集合中的 arm-none-eabi-gdb 进行调试。我的 ST-Link v2 是 Nucleo F411RE 板的一部分,连接了外部硬件(STM32F0 目标)。闪烁 F0 工作正常,因此我得出结论认为我的 SWD 连接良好。
现在我想启动OpenOCD,但是失败了:
$ 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'
这里可能有什么问题?
我也无法使用 st-util 建立连接,它报告超时,最后总是以 segmentation fault 崩溃。
【问题讨论】:
看来是stlink usb连接的问题。首先检查 USB 电缆,尝试另一个 USB 端口,或者如果您在 linux 中查看 dmesg,对于 windows 可能是您没有 ST 驱动程序的问题。 这个问题是在搜索与 STM32F4-DISCO 板相同的问题时出现的。似乎在某个时候,ST 转而使用该板上的 STLink V2-1(请参阅@sprhawk 的回答)。为任何因此而发现自己在这里的人注意这一点。 设置为软件重置对我有用。见链接:openstm32.org/forumthread418#threadId5193 有一个类似的问题:想用 stm32f0discovery 调试 stm32f429 芯片,但不管我是否使用-f interface/stlink-v2,v2-1.cfg
,它都不能与-f board/stm32f0discovery.cfg
一起工作,但最后只使用-f board/stm32f429discovery.cfg
和-f interface/stlink-v2.cfg
工作.所以也许这取决于目标(这里是 stm32f429x 芯片)?
【参考方案1】:
Nucleo F411RE 嵌入了 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
【讨论】:
【参考方案2】:文件stlink-v2.cfg
可能没问题。您可能应该使用stlink-v2-1.cfg
文件(该文件内是hla_vid_pid 0x0483 0x3748
)。
【讨论】:
这对我有帮助(STM32F4)。 我使用的是 STM32L031,这解决了我的连接问题。【参考方案3】:在我的情况下,我也得到了Error: open failed
,但所有配置都没有问题。然后我做了dmesg | grep usb
看看为什么它不能通过 USB 连接(在 Ubuntu 上)。 dmesg 告诉我有电源问题,可能电缆有故障。由于我在同一天早些时候使用了同一根电缆,并且板上的一些 LED 仍然闪烁,所以我首先忽略了该消息。但后来我终于决定试一试,买了另一条电缆,瞧!这是一根有故障的电缆 - 新的电缆一切正常。所以,毕竟不是软件问题。
虽然如果您使用lsusb
(或在 Windows 中使用设备管理器)并且该板很好地列出,则可能不是电缆问题。如果它丢失了,它可能是。
【讨论】:
我花了一个晚上试图解决这个问题。原来usb电缆是问题所在。感谢分享【参考方案4】:我找到了解决办法。 stlink-v2.cfg 中的 VID/PID 对是错误的。他们有这个:
hla_vid_pid 0x0483 0x3748
但应该是这样的:
hla_vid_pid 0x0483 0x374B
字母“B”,而不是数字“8”。
【讨论】:
正如@sprhawk 在他们的回答中指出的那样,还有一个带有 ST Link v2-1 的配置文件具有正确的 0x374B PID。【参考方案5】:1.in eclipse ide-->project-->inc --> project_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_2.5.0.201904120827\resources\openocd\st_scripts\interface\stlink.cfg(或stlink-v2.cfg或stlink-v2-1 .cfg)
添加 hla_vid_pid 0
【讨论】:
以上是关于STM32F0,ST-link v2,OpenOCD 0.9.0:打开失败的主要内容,如果未能解决你的问题,请参考以下文章