Configuración
Tengo una placa de evaluación mínima STM32F103C8T6 (ver STM32F103C8T6 ).
Y estoy usando un enlace ST como la imagen de abajo.
Instalé System Workbench para Eclipse. Creé mi propio proyecto (C++, Proyecto vacío, cadenas de herramientas: Ac6 STM 32 MCU GCC), Serie: STM32F1, Mcu: STM32F103C8Tx, Núcleo: ARM Cortex-M3, Paquete: LQFP48, Memoria ram: Tamaño 0x5000, ROM de memoria: tamaño 0x10000 .
Código
El código contiene un archivo system_stm32f10x.c que fue generado (o incluido automáticamente) por el IDE.
El programa compila bien:
* @file main.c
* @author Ac6
* @version V1.0
* @date 01-December-2013
* @brief Default main function.
******************************************************************************
*/
#include "stm32f10x.h"
#include <stm32f10x_rcc.h>
void delay(int counter)
{
volatile int i;
for (i = 0; i < counter * 10000; i++) {}
}
int main(void)
{
GPIO_InitTypeDef gpio;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_13;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &gpio);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
while (1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13); // LED ON
delay(400);
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // LED OFF
delay(400);
}
}
Subir por OpenSTM32
Cuando creo una configuración de Ejecutar (sin cambios) y selecciono Ejecutar, aparece el siguiente error (en la consola):
Open On-Chip Debugger 0.10.0-dev-00302-gc211ca5-dirty (2017-07-03-10:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 950 kHz
adapter_nsrst_delay: 100
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748
Info : using stlink api v2
Info : Target voltage: 3.231135
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
adapter speed: 950 kHz
Error: timed out while waiting for target halted
TARGET: STM32F103C8Tx.cpu - Not halted
in procedure 'program'
in procedure 'reset' called at file "embedded:startup.tcl", line 478
in procedure 'ocd_bouncer'
** Unable to reset target **
shutdown command invoked
Conexiones
Esquemático
Archivo de configuración de depuración
# This is an F103C8T6_Simple board with a single STM32F103C8Tx chip
#
# Generated by System Workbench for STM32
# 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.cfg]
set WORKAREASIZE 0x5000
transport select "hla_swd"
set CHIPNAME STM32F103C8Tx
# 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 4000
# 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
source [find target/stm32f1x.cfg]
Ejecutar pantalla de configuraciones
Actualizar
Podría enviar un programa a través de la utilidad Link, ver más abajo. No veo una luz parpadeante, pero tal vez el programa sea incorrecto.
Sin embargo, esta forma no es muy cómoda (y no veo ningún programa ejecutándose). Además, todavía no puedo depurar de esta manera.
PROBLEMA RESUELTO
Ver mi respuesta (para ayudar a otros con el problema similar)
Muchas gracias a todos por sus respuestas y numerosos comentarios útiles.
Conexiones realizadas: STlink SWDIO pin 2 -> pin 7 de JTAG STlink GND pin 4 GND -> pin 4 de JTAG STlink SWCLK pin 6 -> pin 9 de JTAG STlink 3.3V pin 8 -> pin 2 de JTAG
El restablecimiento no sucede misteriosamente. En realidad, es una conexión directa al pin de reinicio de MCU desde el jtag/swd que falta en su configuración.
editar: Eso estuvo mal. Ver comentario de Chris.
* actualizar *
El restablecimiento de la emulación necesita los parámetros de configuración de openocd correctos, que actualmente están configurados para el restablecimiento del hardware. "srst" tiene que ver con el reinicio del sistema, que no tiene que ver con la emulación. También lea atentamente el manual en github: el autor realiza el reinicio manualmente, presionando el botón de reinicio antes de emitir el comando de reinicio y soltándolo dentro del período de espera del reinicio de openocd.
También eliminar el parámetro "restablecer al conectar" del archivo de configuración puede facilitar las cosas para dicho restablecimiento manual.
Entonces, la solución es reiniciar manualmente o corregir los parámetros para la emulación (si su chip realmente lo tiene; tuve que tachar el texto anterior debido al error conceptual, no sé si su chip lo tiene) o adaptar su stlink restablecer la señal en el tablero.
El problema esta resuelto.
Se soluciona yendo a Ejecutar configuraciones, pestaña Depurador, pestaña Depurador, Configuración de modo, Modo de reinicio: Cambiar a reinicio del sistema de software.
El problema subyacente es que mi STLink es V2, no V2.1 y esto no tiene un reinicio de hardware.
Parece que su archivo de configuración de OpenOCD tiene un número de ProductID incorrecto. Este número se refiere al adaptador de clonación ST-LINK que está utilizando, no a su microcontrolador específico.
Vea esto desde su consola OpenOCD:
Información: STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Información: vid/pid no son idénticos: 0x0483/ 0x374B 0x0483/0x3748
Observe la diferencia que he resaltado. ¡A veces es difícil notar la diferencia entre un 8 y una B!
Dado que los clones de ST-LINK deberían funcionar igual, dudo que este sea tu problema. Pero dejo la información aquí por si a alguien le sirve.
-f filename.cfg
. Es probable que termine en .cfg, pero puede ser diferente. Además, pruébelo con una configuración de depuración en lugar de una configuración de ejecución.Para trabajar con chips ARM en Eclipse, yo mismo uso https://gnu-mcu-eclipse.github.io/ .
La configuración para STM32F103C8T6 usando un dispositivo ST-Link usando ese complemento de eclipse sería
-f interface/stlink-v2.cfg -f target/stm32f1x.cfg
El PID 0x374B es para ST-Link V2.1. Los palos chinos son ST-Link V2. Así que ha seleccionado la interfaz de depuración incorrecta. Como usa un complemento de eclipse diferente, no sé dónde y cómo configurarlo, pero eche un vistazo a la interfaz del depurador seleccionado.
chris stratton
michel keijzers
Bence Kaulics
turbo j
michel keijzers
michel keijzers
michel keijzers
michel keijzers