【问题标题】:STM32F0, ST-link v2, OpenOCD 0.9.0: open failedSTM32F0,ST-link v2,OpenOCD 0.9.0:打开失败
【发布时间】: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 芯片)?

标签: stm32 openocd


【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 2016-09-11
      • 2023-04-10
      • 2019-05-11
      • 2021-06-02
      • 2017-04-26
      • 2022-06-13
      • 2021-03-01
      • 1970-01-01
      相关资源
      最近更新 更多