Forum: PC Hard- und Software System Workbench für STM32 Anfängerfragen


von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

Hallo Stefan,

ich habe mir die System Workbench für STM32 auf Windows installiert. Das 
ST-LINK Utility funktioniert, aber ich möchte das Blue Pill Dev Board 
über die SW4STM32 flashen.

Als Remote Target kann ich aber nur ein JTAG Device eintragen. Keine der 
Auswahlmöglichkeiten funktioniert. Wie bekomme ich den ST-LINK 
ausgewählt?

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Alexander schrieb:
> Wie bekomme ich den ST-LINK ausgewählt?

Zunächst muss der Treiber für ST-Link installiert sein sonst
wird die IDE dein Teil nicht finden. Schau in den Hardware-
Manager ob der ST-Link dort gelistet ist.

von Alexander (alecxs)


Lesenswert?

Mit dem ST-LINK Utility kann ich flashen. Welche anderen Treiber 
benötige ich?

von Vax W. (Gast)


Lesenswert?

Gibt es einen Grund, warum Du die alte Version von AC6 benutzt und nicht 
das schoenste, groesste und voll unterstuetzte STM32CubeIDE benutzt?

von Alexander (alecxs)


Lesenswert?

STM32CubeMX ist doch ein graphisches Tool oder? Ich will nur etwas 
compilieren, nichts programmieren.

Außerdem ist es nur ein Bedienfehler, ich bin sicher dass es mit der 
System Workbench auch geht.

: Bearbeitet durch User
von Vax W. (Gast)


Lesenswert?

Alexander schrieb:
> STM32CubeMX ist doch ein graphisches Tool oder? Ich will nur etwas
> compilieren, nichts programmieren.

STM32CubeIDE ist die aktuelle, von STM unterstuetzte 
Entwicklungsunterstuetzung, Eclipse basierend. AC6 ist, in a nutshell, 
ein Vorlaeufer.

Vorteile sind: Graphische Code-Generation fuer den Startup, Compile und 
Debugger.

https://www.st.com/en/development-tools/stm32cubeide.html

P.S.: Compilieren ohne Programmieren? Oder willst Du ein vorhandenes HEX 
nur flashen? STM32CubeProgrammer
https://www.st.com/en/development-tools/stm32cubeprog.html

von Alexander (alecxs)


Lesenswert?

Was es sonst noch so gibt schau ich mir irgendwann vielleicht an. Zum 
compilieren benötige ich nur etwas minimalistisches. Ich bin so schon 
überfordert mit dem STM32, automatisch genierter Code, wer soll da noch 
den Code verstehen?

Auf openstm32.org wurde auf System Workbench verwiesen, und um die 
geht's in diesem Thread.

von Alexander (alecxs)


Lesenswert?

Okay jetzt ging es, irgendwas habe ich anders gemacht. Dank einer 
Anleitung "Eine LED zum Blinken bringen in 78 einfachen Schritten"

Allerdings steht dort STM32F103C6Tx aber auf dem Blue Pill ist doch ein 
STM32F103C8T6 drauf. Wo kann ich das ändern?
1
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
2
adapter speed: 4000 kHz
3
adapter_nsrst_delay: 100
4
Info : clock speed 4000 kHz
5
Info : STLINK v2 JTAG v37 API v2 SWIM v7 VID 0x0483 PID 0x3748
6
Info : using stlink api v2
7
Info : Target voltage: 3.232490
8
Info : Stlink adapter speed set to 4000 kHz
9
Info : STM32F103C6Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
10
Info : Listening on port 3333 for gdb connections
11
target halted due to debug-request, current mode: Thread 
12
xPSR: 0x01000000 pc: 0x08005edc msp: 0x20002800
13
Info : Stlink adapter speed set to 4000 kHz
14
adapter speed: 4000 kHz
15
** Programming Started **
16
auto erase enabled
17
Info : device id = 0x20036410
18
Info : flash size = 64kbytes
19
target halted due to breakpoint, current mode: Thread 
20
xPSR: 0x61000000 pc: 0x2000003a msp: 0x20002800
21
wrote 29696 bytes from file Debug/LishuiFOC_01.elf in 2.547146s (11.385 KiB/s)
22
** Programming Finished **
23
** Verify Started **
24
target halted due to breakpoint, current mode: Thread 
25
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002800
26
target halted due to breakpoint, current mode: Thread 
27
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002800
28
verified 28848 bytes in 0.682039s (41.305 KiB/s)
29
** Verified OK **
30
** Resetting Target **
31
shutdown command invoked

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Es scheint keiner zu wissen wie man das ändert, also muss ich ein neues 
Projekt anlegen. Dafür brauche ich dann aber die STM32CubeIDE?

von Cyblord -. (cyblord)


Lesenswert?

Der ST-Link erkennt den STM, da kann man nichts ändern. Die müssen aber 
nicht eindeutig erkannt werden, oft gibt es mehrere Mögliche 
Bestellnummern. z.B. wegen unterschiedlichem Gehäuse.
Flash-Größe sollte halt stimmen.

Für ein Projekt reicht es auch wenn im Linkerscript Flash und RAM 
korrekt sind. Core-Architektur natürlich noch. Mehr muss man aber über 
den STM nicht wissen für eine Minimalentwicklung.

Und tu dir einen gefallen und nimm aktuelle Tools. Der Workbench ist 
uralt. ST-Link Utility auch.

STM32CubeIDE und STM32CubeProgrammer sind aktuell.

Die Wahl der IDE schränkt dich nicht ein komplett ohne HAL zu 
entwicklen. Ich entwickle z.B. ausschließlich auf den HAL Low-Level 
Treibern. Aber auch ganz ohne geht natürlich.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Ich entwickle nichts, das ist fertiger Code bzw. ein fertiges Projekt. 
Allerdings für ein anderes Board. Es blinkt nicht mal die LED auf PC13, 
da die Register anscheinend nicht identisch sind.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Alexander schrieb:
> Es scheint keiner zu wissen wie man das ändert, also muss ich ein neues
> Projekt anlegen. Dafür brauche ich dann aber die STM32CubeIDE?

Du brauchst nicht die STM32CubeIDE um in der System Workbench etwas zu 
ändern. Wie kommt man auf so eine Idee?

Du musst ein neues Projekt anlegen und dabei die richtige MCU angeben. 
Danach kannst du deine Quelltexte hinein kopieren.

Ich würde dir auch raten, die STM32Cube IDE zu verwenden (nicht zu 
Verwechseln mit STM32 Cube MX). Denn die alte System Workbench wird 
nicht mehr gepflegt.

Das könnte dir helfen: http://stefanfrings.de/stm32/cube_ide.html

Alexander schrieb:
> Es blinkt nicht mal die LED auf PC13,
> da die Register anscheinend nicht identisch sind.

Könnte daran liegen, dass dein Board einen gefälschten Mikrocontroller 
hat. Insbesondere wenn es nach 2020 gekauft wurde.

Alexander schrieb:
> da die Register anscheinend nicht identisch sind.

Nicht vermuten, sondern vergewissern. Die relevanten Dateien habe ich 
mal angehängt. Vergleichen musst du sie selbst. (die xb Datei gilt auch 
für x8)

von Alexander (alecxs)


Lesenswert?

Ja gut, bis auf den größeren Speicher 0x0801FFFFUL und zusätzlich TIM4 
I2C2 SPI2 USART3 GPIOE sind die identisch.
1
#define PERIPH_BASE           0x40000000UL
2
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x00010000UL)
3
#define GPIOC_BASE            (APB2PERIPH_BASE + 0x00001000UL)
Das stimmt auch überein mit dem Zeiger aus dem Debugger.
1
Name : LED_GPIO_Port
2
  Details:0x40011000
3
  Default:0x40011000
4
  Decimal:1073811456
5
  Hex:0x40011000
6
  Binary:1000000000000010001000000000000
7
  Octal:010000210000
8
Name : LED_Pin
9
  Details:8192
10
  Default:8192
11
  Decimal:8192
12
  Hex:0x2000
13
  Binary:10000000000000
14
  Octal:020000
In Arduino blinkt die LED. Unter SW4STM32 habe ich es noch nicht 
hinbekommen, habe auch schon an eine Fälschung gedacht.

Den Link habe ich schon entdeckt, danke. Ist halt alles sehr 
ausführlich, da muß ich in Ruhe noch mal lesen.

Ich hatte schon versucht das Projekt neu zu importieren, kam dann auch 
zur Auswahl des Boards, aber dann war ein Fehler und ein Abbruch, da 
wurde der Quellcode nicht übernommen. Ich würd's ja händisch machen, 
aber schlauerweise ist der User Code und der generierte Code in ein- und 
derselben Datei main.c

von Stefan F. (Gast)


Lesenswert?

Alexander schrieb:
> Ja gut, bis auf den größeren Speicher 0x0801FFFFUL und zusätzlich TIM4
> I2C2 SPI2 USART3 GPIOE sind die identisch.

So ungefähr habe ich das auch in Erinnerung. Der größere hat zusätzliche 
Features, aber das was beide haben ist identisch.

von Alexander (alecxs)


Lesenswert?

PC13 kann jetzt auch blinken, GPIOC war nicht aktiviert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.