STM32CubeIDE and OpenOCD: Error: timed out while waiting for target halted
STM32CubeIDE and OpenOCD: Error: timed out while waiting for target halted
Hardware/IDE 上下文:
- Part/board: 正版 STM32F103C8 (BluePill)
- 程序员:ST-Link V2
- IDE: STM32CubeIDE 1.5.1 完全更新 Windows 10
- 闪烁utility/debugger:OpenOCD
在尝试 build/flash 一个简单的 PC_13
LED 闪烁程序到我的 BluePill 板时,我遇到了来自 OpenOCD 的错误,如下所示:
Open On-Chip Debugger 0.10.0+dev-01288-g7491fb4 (2020-10-27-17:36)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.256346
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : clock speed 4000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x1ba01477
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : STM32F103C8Tx.cpu: external reset detected
Info : starting gdb server for STM32F103C8Tx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Error: timed out while waiting for target halted
Error executing event gdb-attach on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Info : device id = 0x20036410
Info : flash size = 64kbytes
Info : accepting 'gdb' connection on tcp/3333
Error: timed out while waiting for target halted
Error executing event gdb-attach on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Error: timed out while waiting for target halted
Error executing event gdb-flash-erase-start on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Error: Target not halted
Error: failed erasing sectors 0 to 5
Error: flash_erase returned -304
shutdown command invoked
Info : dropped 'gdb' connection
shutdown command invoked
我有兴趣在我的项目中使用基于 OpenOCD 的闪烁,以利用一些 STM32F103C8 clone boards 我周围的东西,但是当我切换闪烁模式/“调试探针”时,上传过程再次运行在 STM32CubeIDE 中从 ST-Link (OpenOCD)
.
回到 ST-Link (ST-Link GDB Server)
这对我来说是一个特殊的错误,特别是因为我特别记得这个确切的配置 (STM32CubeIDE + OpenOCD + ST-Link + STM32F103C8 ) 几个月前工作。有没有人知道这可能是由什么引起的?我有 OpenOCD 调试器来使用标准的自动生成的配置文件。
另外,如果您还需要 information/details 帮助诊断此问题,请告诉我。我很乐意提供任何必要的东西。
编辑 2/22/2021:
这是自动生成的(由 STM32CubeIDE)OpenOCD .cfg
文件的副本:
# This is an genericBoard board with a single STM32F103C8Tx chip
#
# Generated by STM32CubeIDE
# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s)
source [find interface/stlink-dap.cfg]
set WORKAREASIZE 0x5000
transport select "dapdirect_swd"
set CHIPNAME STM32F103C8Tx
set BOARDNAME genericBoard
# Enable debug when in low power modes
set ENABLE_LOW_POWER 1
# Stop Watchdog counters when halt
set STOP_WATCHDOG 1
# STlink Debug clock frequency
set CLOCK_FREQ 8000
# Reset configuration
# use hardware reset, connect under reset
# connect_assert_srst needed if low power mode application running (WFI...)
reset_config srst_only srst_nogate connect_assert_srst
set CONNECT_UNDER_RESET 1
set CORE_RESET 0
# ACCESS PORT NUMBER
set AP_NUM 0
# GDB PORT
set GDB_PORT 3333
# BCTM CPU variables
source [find target/stm32f1x.cfg]
#SWV trace
tpiu config disable
最终,经过进一步的研究和反复试验,我确定了一个似乎对我有用的修复方法。我注意到当停止 CPU 的错误出现时,似乎已经加载了正确的程序并且只需要手动切换 RESET 按钮。这些是我最终确定的 OpenOCD 设置:
默认配置的变化:
- SWD 频率:8 → 4 MHz
- 从技术上讲这不是工作所必需的,但 OpenOCD 无论如何都会在上传过程中自动恢复到 4 MHz
- 重置模式:在重置下连接 → None
这对我有用,输出如下:
Open On-Chip Debugger 0.10.0+dev-01288-g7491fb4 (2020-10-27-17:36)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.254751
Info : clock speed 4000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x1ba01477
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : STM32F103C8Tx.cpu: external reset detected
Info : starting gdb server for STM32F103C8Tx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x20036410
Info : flash size = 64kbytes
undefined debug reason 8 - target needs reset
Info : accepting 'gdb' connection on tcp/3333
undefined debug reason 8 - target needs reset
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000474 msp: 0x20005000
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000474 msp: 0x20005000
shutdown command invoked
Info : dropped 'gdb' connection
shutdown command invoked
Hardware/IDE 上下文:
- Part/board: 正版 STM32F103C8 (BluePill)
- 程序员:ST-Link V2
- IDE: STM32CubeIDE 1.5.1 完全更新 Windows 10
- 闪烁utility/debugger:OpenOCD
在尝试 build/flash 一个简单的 PC_13
LED 闪烁程序到我的 BluePill 板时,我遇到了来自 OpenOCD 的错误,如下所示:
Open On-Chip Debugger 0.10.0+dev-01288-g7491fb4 (2020-10-27-17:36)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.256346
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : clock speed 4000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x1ba01477
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : STM32F103C8Tx.cpu: external reset detected
Info : starting gdb server for STM32F103C8Tx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Error: timed out while waiting for target halted
Error executing event gdb-attach on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Info : device id = 0x20036410
Info : flash size = 64kbytes
Info : accepting 'gdb' connection on tcp/3333
Error: timed out while waiting for target halted
Error executing event gdb-attach on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Error: timed out while waiting for target halted
Error executing event gdb-flash-erase-start on target STM32F103C8Tx.cpu:
TARGET: STM32F103C8Tx.cpu - Not halted
Error: Target not halted
Error: failed erasing sectors 0 to 5
Error: flash_erase returned -304
shutdown command invoked
Info : dropped 'gdb' connection
shutdown command invoked
我有兴趣在我的项目中使用基于 OpenOCD 的闪烁,以利用一些 STM32F103C8 clone boards 我周围的东西,但是当我切换闪烁模式/“调试探针”时,上传过程再次运行在 STM32CubeIDE 中从 ST-Link (OpenOCD)
.
ST-Link (ST-Link GDB Server)
这对我来说是一个特殊的错误,特别是因为我特别记得这个确切的配置 (STM32CubeIDE + OpenOCD + ST-Link + STM32F103C8 ) 几个月前工作。有没有人知道这可能是由什么引起的?我有 OpenOCD 调试器来使用标准的自动生成的配置文件。
另外,如果您还需要 information/details 帮助诊断此问题,请告诉我。我很乐意提供任何必要的东西。
编辑 2/22/2021:
这是自动生成的(由 STM32CubeIDE)OpenOCD .cfg
文件的副本:
# This is an genericBoard board with a single STM32F103C8Tx chip
#
# Generated by STM32CubeIDE
# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s)
source [find interface/stlink-dap.cfg]
set WORKAREASIZE 0x5000
transport select "dapdirect_swd"
set CHIPNAME STM32F103C8Tx
set BOARDNAME genericBoard
# Enable debug when in low power modes
set ENABLE_LOW_POWER 1
# Stop Watchdog counters when halt
set STOP_WATCHDOG 1
# STlink Debug clock frequency
set CLOCK_FREQ 8000
# Reset configuration
# use hardware reset, connect under reset
# connect_assert_srst needed if low power mode application running (WFI...)
reset_config srst_only srst_nogate connect_assert_srst
set CONNECT_UNDER_RESET 1
set CORE_RESET 0
# ACCESS PORT NUMBER
set AP_NUM 0
# GDB PORT
set GDB_PORT 3333
# BCTM CPU variables
source [find target/stm32f1x.cfg]
#SWV trace
tpiu config disable
最终,经过进一步的研究和反复试验,我确定了一个似乎对我有用的修复方法。我注意到当停止 CPU 的错误出现时,似乎已经加载了正确的程序并且只需要手动切换 RESET 按钮。这些是我最终确定的 OpenOCD 设置:
默认配置的变化:
- SWD 频率:8 → 4 MHz
- 从技术上讲这不是工作所必需的,但 OpenOCD 无论如何都会在上传过程中自动恢复到 4 MHz
- 重置模式:在重置下连接 → None
这对我有用,输出如下:
Open On-Chip Debugger 0.10.0+dev-01288-g7491fb4 (2020-10-27-17:36)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.254751
Info : clock speed 4000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x1ba01477
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : STM32F103C8Tx.cpu: external reset detected
Info : starting gdb server for STM32F103C8Tx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x20036410
Info : flash size = 64kbytes
undefined debug reason 8 - target needs reset
Info : accepting 'gdb' connection on tcp/3333
undefined debug reason 8 - target needs reset
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000474 msp: 0x20005000
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000474 msp: 0x20005000
shutdown command invoked
Info : dropped 'gdb' connection
shutdown command invoked