STM32CubeIDE и OpenOCD: ошибка: время ожидания ожидания цели остановлено

Контекст оборудования/IDE:

  • Деталь/плата: Оригинальный STM32F103C8 (BluePill)
  • Программатор: ST-Link V2
  • IDE: STM32CubeIDE 1.5.1 на полностью обновленной Windows 10
  • Утилита/отладчик прошивки: OpenOCD

При попытке собрать/прошить простую программу мигания светодиодов PC_13 на моей плате 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 У меня валяются, но процесс загрузки снова работает, когда я переключаю режим прошивки/отладки зонда в STM32CubeIDE обратно на ST-Link (ST-Link GDB Server) с ST-Link (OpenOCD).

Для меня это своеобразная ошибка, тем более, что я точно помню именно эту конфигурацию (STM32CubeIDE + OpenOCD + ST-Link + STM32F103C8), работавшую пару месяцев назад. У кого-нибудь есть идеи, чем это может быть вызвано? У меня есть отладчик OpenOCD для использования стандартного автоматически сгенерированного файла конфигурации.

Также, пожалуйста, дайте мне знать, если есть какая-либо дополнительная информация/подробности, которые вам понадобятся для диагностики этой проблемы. Буду рад предоставить все необходимое.

РЕДАКТИРОВАНИЕ 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 

person ifconfig    schedule 20.02.2021    source источник
comment
когда gdb подключается к openocd, он ожидает встретить остановленный mcu, можете ли вы поделиться своим файлом cfg или конфигурациями dbg?   -  person Hector Manuel    schedule 22.02.2021
comment
@HectorManuel Для меня это имеет смысл, но я точно не знаю, как бы я это сделал. Есть ли какой-то параметр конфигурации OpenOCD, который я мог бы настроить для сброса соответствующих журналов, чтобы помочь здесь? Скоро выложу свой .cfg файл.   -  person ifconfig    schedule 22.02.2021
comment
@HectorManuel Я отредактировал свой пост, добавив копию файла .cfg.   -  person ifconfig    schedule 23.02.2021


Ответы (1)


В конце концов, после некоторых дальнейших исследований и проб и ошибок, я остановился на исправлении, которое, похоже, работает для меня. Я заметил, что когда появляется ошибка с остановкой процессора, кажется, что правильная программа была загружена, и кнопку RESET просто нужно переключать вручную. Вот настройки OpenOCD, на которых я остановился:

введите здесь описание изображения

Отличия от конфигурации по умолчанию:

  • SWD Frequency: 8 → 4 MHz
    • This is technically not required to work, but OpenOCD will automatically revert back to 4 MHz during the upload anyway
  • Режим сброса: Подключить при сбросе → Нет

Это работает для меня со следующим выводом:

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
person ifconfig    schedule 23.03.2021