Finalización del proceso hijo de OpenOCD: se detectó un dispositivo incorrecto

3

Configurar

Tengo una placa de evaluación mínima STM32F103C8T6 (consulte STM32F103C8T6 ).

Y estoy usando un enlace ST como en 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, Memoria ROM: 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 ok:

  * @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 mediante OpenSTM32

Cuando creo una configuración de ejecución (no se realizan 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

  • 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
  • USB - > USB (STlink 3.3V pin 8 no conectado, ni todos los demás pins STlink)

Schematic

 

Depurarelarchivodeconfiguración

#ThisisanF103C8T6_SimpleboardwithasingleSTM32F103C8Txchip##GeneratedbySystemWorkbenchforSTM32#Takecarethatsuchfile,asgenerated,maybeoverriddenwithoutanyearlynotice.Pleasehavealooktodebuglaunchconfigurationsetup(s)source[findinterface/stlink.cfg]setWORKAREASIZE0x5000transportselect"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íaenviarunprogramaatravésdelautilidaddeenlace,vermásabajo.Noveounaluzparpadeante,perotalvezelprogramaseaincorrecto.

Sinembargo,estaformanoesmuycómoda(ynoveoningúnprogramaenejecución).Además,todavíanopuedodepurardeestamanera.

SOLUCIÓN DE PROBLEMAS

Vea mi respuesta (para ayudar a otros con el problema similar)

Muchas gracias a todos por sus respuestas y numerosos comentarios útiles.

    
pregunta Michel Keijzers

4 respuestas

2
  

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 reinicio no sucede misteriosamente. En realidad, es una conexión directa al pin de restablecimiento de MCU desde el jtag / swd que falta en su configuración.

editar: Eso estaba mal. Ver comentario de Chris.

* update *

El reinicio de la emulación necesita los parámetros de configuración correctos de openocd, que están configurados para el reinicio del hardware actualmente. "srst" tiene que ver con el reinicio del sistema que no se trata de la emulación. También lea el manual en el github con cuidado: Author realiza el reinicio manualmente, presionando el botón de reinicio antes de emitir el comando de reinicio y liberando dentro del período de espera-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 un restablecimiento manual o parámetros correctos para la emulación (si su chip realmente lo tiene; tuve que golpear el texto anterior debido al error de concepción, no sé si su chip lo tiene) o adaptando la señal de reinicio de su enlace en la placa.

    
respondido por el Ayhan
2

El problema está resuelto.

Se soluciona yendo a Configuraciones de ejecución, pestaña Depurador, pestaña Depurador, Configuración de modo, Modo de reinicio: cambiar al 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.

    
respondido por el Michel Keijzers
1

Parece que su archivo de configuración de OpenOCD tiene un número de Id. de producto 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

Observa la diferencia que he resaltado. ¡Es difícil distinguir la diferencia entre un 8 y una B a veces!

Dado que los clones de ST-LINK deberían funcionar igual, dudo que este sea tu problema. Pero dejaré la información aquí en caso de que ayude a alguien.

    
respondido por el bitsmack
0

Para trabajar con chips ARM en Eclipse, uso enlace yo mismo.

La configuración para STM32F103C8T6 usando un stick 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 utiliza un complemento de eclipse diferente, no sé dónde y cómo configurar eso, pero eche un vistazo a la interfaz del depurador seleccionado.

    
respondido por el André van Schoubroeck

Lea otras preguntas en las etiquetas