Aufstellen
Ich habe ein STM32F103C8T6-Minimal-Evaluierungsboard (siehe STM32F103C8T6 ).
Und ich verwende einen ST-Link wie das Bild unten.
Ich habe System Workbench für Eclipse installiert. Ich habe mein eigenes Projekt erstellt (C++, Leeres Projekt, Toolchains: Ac6 STM 32 MCU GCC), Serie: STM32F1, Mcu: STM32F103C8Tx, Kern: ARM Cortex-M3, Paket: LQFP48, Speicher-RAM: Größe 0x5000, Speicher-ROM: Größe 0x10000 .
Code
Der Code enthält eine system_stm32f10x.c-Datei, die von der IDE generiert (oder automatisch eingebunden) wurde.
Das Programm lässt sich gut kompilieren:
* @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);
}
}
Hochladen durch OpenSTM32
Wenn ich eine Run-Konfiguration erstelle (keine Änderungen vorgenommen) und Ausführen auswähle, erhalte ich die folgende Fehlermeldung (in der Konsole):
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
Verbindungen
Schema
Debug-Konfigurationsdatei
# 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]
Konfigurationsbildschirm ausführen
Aktualisieren
Ich könnte ein Programm über das Link-Dienstprogramm senden, siehe unten. Ich sehe kein blinkendes Licht, aber vielleicht ist das Programm falsch.
Allerdings ist dieser Weg nicht sehr komfortabel (und ich sehe kein laufendes Programm). Außerdem kann ich auf diese Weise immer noch nicht debuggen.
PROBLEM GELÖST
Siehe meine Antwort (um anderen mit dem ähnlichen Problem zu helfen)
Vielen Dank für Ihre Antworten und zahlreichen nützlichen Anmerkungen.
Verbindungen hergestellt: STlink SWDIO Pin 2 -> Pin 7 von JTAG STlink GND Pin 4 GND -> Pin 4 von JTAG STlink SWCLK Pin 6 -> Pin 9 von JTAG STlink 3.3V Pin 8 -> Pin 2 von JTAG
Das Zurücksetzen geschieht nicht auf mysteriöse Weise. Es ist tatsächlich eine direkte Verbindung zum MCU-Reset-Pin von jtag/swd, die in Ihrer Konfiguration fehlt.
edit: Das war falsch. Siehe Kommentar von Chris.
* aktualisieren *
Das Zurücksetzen der Emulation erfordert korrekte openocd-Konfigurationsparameter, die derzeit für das Zurücksetzen der Hardware eingestellt sind. Bei "srst" dreht sich alles um das Zurücksetzen des Systems, nicht um die Emulation. Lesen Sie auch das Handbuch auf dem Github sorgfältig durch: Der Autor führt das Zurücksetzen manuell durch, drückt die Reset-Taste, bevor er den Reset-Befehl ausgibt, und lässt ihn innerhalb der Wait-the-Reset-Periode von openocd los.
Auch das Entfernen des Parameters "reset on connect" aus der Konfigurationsdatei kann die Dinge für ein solches manuelles Zurücksetzen erleichtern.
Die Lösung ist also entweder manuelles Zurücksetzen, oder korrekte Parameter für die Emulation (Falls Ihr Chip es tatsächlich hat; ich musste den Text oben wegen des Konzeptionsfehlers streichen, ich weiß nicht, ob Ihr Chip es hat) oder Anpassen Ihrer Stlinks Reset-Signal in die Platine.
Das Problem ist behoben.
Es wird behoben, indem Sie zu Run Configurations, Debugger tab, Debugger tab, Mode Setup, Reset Mode: Change to Software system reset gehen.
Das zugrunde liegende Problem ist, dass mein STLink V2 ist, nicht V2.1, und dies hat keinen Hardware-Reset.
Es scheint, dass Ihre OpenOCD-Konfigurationsdatei eine falsche ProductID-Nummer hat. Diese Nummer bezieht sich auf den von Ihnen verwendeten ST-LINK-Klonadapter, nicht auf Ihren spezifischen Mikrocontroller.
Sehen Sie dies von Ihrer OpenOCD-Konsole aus:
Info: STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : vid/pid sind nicht identisch: 0x0483/ 0x374B 0x0483/0x3748
Beachten Sie den Unterschied, den ich hervorgehoben habe. Es ist manchmal schwer, den Unterschied zwischen einer 8 und einem B zu erkennen!
Da die ST-LINK-Klone gleich funktionieren sollten, bezweifle ich, dass dies Ihr Problem ist. Aber ich lasse die Info hier, falls es jemandem hilft.
-f filename.cfg
. Es endet wahrscheinlich auf .cfg, aber es kann anders sein. Probieren Sie es auch mit einer Debug-Konfiguration anstelle einer Run-Konfiguration aus.Um mit ARM-Chips auf Eclipse zu arbeiten, verwende ich selbst https://gnu-mcu-eclipse.github.io/ .
Die Konfiguration für STM32F103C8T6 mit einem ST-Link-Stick mit diesem Eclipse-Plugin wäre
-f interface/stlink-v2.cfg -f target/stm32f1x.cfg
Die PID 0x374B ist für ST-Link V2.1. Die chinesischen Sticks sind ST-Link V2. Sie haben also die falsche Debugger-Schnittstelle ausgewählt. Da Sie ein anderes Eclipse-Plugin verwenden, weiß ich nicht, wo und wie ich das konfigurieren soll, aber schauen Sie sich die ausgewählte Debugger-Schnittstelle an.
Chris Stratton
Michel Keijzers
Bence Kaulics
TurboJ
Michel Keijzers
Michel Keijzers
Michel Keijzers
Michel Keijzers