为啥在尝试使用 openocd 连接 stlink-v2 时出现通信故障
Posted
技术标签:
【中文标题】为啥在尝试使用 openocd 连接 stlink-v2 时出现通信故障【英文标题】:why am I getting a communication failure when trying to connect with stlink-v2 using openocd为什么在尝试使用 openocd 连接 stlink-v2 时出现通信故障 【发布时间】:2021-06-06 13:18:18 【问题描述】:我正在尝试使用 stlink-v2 连接到 'stm32' 'bluepill' 以向其写入一些代码
每当我运行 openocd 时,它都无法连接 我的 openocd.cfg 文件是这样的
source [find interface/stlink-v2.cfg]
source [find target/stm32f3x.cfg]
当我运行 openocd 时,这是我收到的响应:
Open On-Chip Debugger 0.10.0
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
Info : STLINK v2 JTAG v35 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.166623
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Info : Previous state query failed, trying to reconnect
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 300ms
Info : Previous state query failed, trying to reconnect
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 700ms
Info : Previous state query failed, trying to reconnect
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 1500ms
Info : Previous state query failed, trying to reconnect
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 3100ms
Info : Previous state query failed, trying to reconnect
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f3x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 6300ms
^C
我之前在bluepill
上的stm32f103
上写了一些代码,当我连接到我的PC 时,代码运行(它导致pc13 上的LED 闪烁)
我还没有更改 openocd.cfg 文件,因为它上次运行良好
【问题讨论】:
您之前编程时是否设置了 RDP(读出保护)?您可以使用st.com/en/development-tools/stsw-link004.html 连接并读取设备吗?如果不使用相同的工具来重置选项字节禁用 RDP(将批量擦除芯片)。 注意 - PC13 仅提供 ~3mA 的电流,可能不适合驱动 LED。查看数据表:“PC13、PC14 和 PC15 [...] 这些 IO 不得用作电流源(例如驱动 LED)。” . ...除了我看到 PC13 连接到板载 LED 外——我猜有人没有阅读数据表。 510R 电阻器被指定为将电流保持在 3mA 以下,但它仍然是 IMO 的一个糟糕的设计选择。 此问题可能与接线错误(重新检查所有接线及其连续性)、SWDIO 和 SWDCLK 引脚的复位或重新配置有关。 NRST 是否连接,如果连接到哪个引脚?同时尝试在 OpenOCD 连接时按下复位按钮(以防 SWDIO 和 SWDCLK 引脚已重新配置)。 @Clifford ,尽管更改了设置,stlink 实用程序仍无法读取我的 stlink 连接器 【参考方案1】:在 OpenOCD 尝试连接时按住重置按钮。
我在 STM32F3DISCOVERY 板上遇到了完全相同的错误。 这样做让我可以再次连接。
【讨论】:
以上是关于为啥在尝试使用 openocd 连接 stlink-v2 时出现通信故障的主要内容,如果未能解决你的问题,请参考以下文章