Forum: Compiler & IDEs System Workbench for STM32 mit STM32F103C8T6


von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir ein STM32F103 Board auf ebay gekauft. Ich wollte dies nun 
mit System Workbench for STM32 programmieren.

Was ich gemacht habe:

Donwload + installation.
Projekt angelegt, Prozessor angelegt und dann mit viel trickerei die 
Standardbibliothek runtergeladen (ging leider nicht automatisch).
Jetzt habe ich ein einfaches Projekt erstellt und will die LED auf dem 
Board einschalten.

Leider klappt es nicht und es kommt folgende Fehlermeldung:
>>>>
Error in final launch sequence
Failed to execute MI command:
load E:\\xxx\\00_WorkspaceSTM32\\BlinkLED\\Debug\\BlinkLED.elf

Error message from debugger back end:
Error erasing flash with vFlashErase packet
Error erasing flash with vFlashErase packet
<<<<

Ich habe mal meine main.c und mein config file angehängt. Debugger ist 
ein ebay ST-Link V2.

Ich bin etwas ratlos, wäre für Tipps dankbar (auch für brauchbare 
Anleitungen).

Vielen Dank und schönen Abend
Joe

von W.S. (Gast)


Lesenswert?

Joe schrieb:
> Ich bin etwas ratlos, wäre für Tipps dankbar (auch für brauchbare
> Anleitungen).

Also, diese ebay.cfg ist wohl eher ein schlechter Witz.

So, also:
1. besorge dir eine Toolchain, also einen "Klumpen" Software, mit der du 
selbstgeschriebene Quellen für deinen µC auf deiner Leiterplatte 
übersetzen kannst. Das kann (muß aber nicht) eine Toolchain für die 
C-Programmiersprache sein. Soweit ich weiß, gibt's bei 
"http://www.mikroe.com/"; auch Toolchains für Basic und Pascal. Hab 
selbst damit aber keine Erfahrungen. Wenn C, dann würde ich dir zuerst 
zum "Keil" raten, ist bis 32 K frei und wenn viel später dein Zeugs mal 
> 32 K werden sollte, kannst du immer noch auf was Anderes wechseln.

2. Lies das Datenblatt und das Referenzmanual zu deinem Chip. Oder 
überfliege selbige wenigstens

3. Besorge dir ein Programmier-Geschirre. Lies dazu die hoffentlich 
vorhandene Dokumentation zu deiner Leiterplatte. Schau nach, wie es dort 
vorgesehen ist, den Maschinencode in den Controller zu bekommen. Die 
STM32 haben einen fest eingebauten Bootlader, den man über einen COM 
Port benutzen kann, sofern auf der LP vorgesehen, Software für den PC 
dazu gibt es frei. Alternative wäre ein JTAG/SWD-Adapter. Den muß man 
aber erst besorgen und man braucht dafür auch Software auf dem PC. Das 
kostet Geld oder Nerven. Oder beides.

4. Übe mit deinem Programmiergeschirre. Zunächst sowas wie ID-Signatur 
auslesen, Leertest, Chip löschen und so. Wenn das alles klappt, dann 
erst geht es mit all dem Software-Gehampel los. Wie? na je nachdem, was 
du unter 1. dir besorgt hast.

W.S.

von Joe (Gast)


Lesenswert?

Moin ws,


danke für deine Antwort. Das von dir beschriebene mache ich doch genau. 
Es klappt leider nur nicht.

zu 1.
Das System Workbench ist doch eine komplette Toolchain, wird sogar von 
STM empfohlen. Ist halt Eclipse mit Compiler und Debug Unterstützung von 
ST
Und es muss C oder C++ sein, das kann ich ziemlich gut.

zu 2.
Habe ich gemacht, kommt dann später mehr, wenn ich spezielle Sachen in 
Betrieb nehmen will.

zu 3. Ich habe einen ST-Link V2 also einen JTAG/ SWD Adapter, ohne 
Debugging Programmieren will ich nicht. Debugger sollte in dem System 
Workbench Paket enthalten sein.

Warum ist mein cfg ein schlechter Witz... Über den Namen kann man 
streiten :-) Habe das Board halt auf ebay gekauft. Doku zu dem Board 
gibt es nicht, ist aber auch nicht viel drauf.

Hast du noch eine Idee?

Viele Grüße
Joe

von Joe (Gast)


Lesenswert?


von Joe (Gast)


Lesenswert?


von Nop (Gast)


Lesenswert?

Joe schrieb:
> Das System Workbench ist doch eine komplette Toolchain, wird sogar von
> STM empfohlen.

Mit "Toolchain" war nicht "IDE" gemeint, sondern "Compiler und 
Buildscripts". Buildscripts können unter Windows z.B. Batchfiles sein, 
unter Linux Shellscripte.

von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Danke für deine Antwort. Aber die ist doch in dem Paket mit dabei, oder?

Viele Grüße
Joe

von hp-freund (Gast)


Lesenswert?

Passt schon alles.
Das Problem ist die Kommunikation von openocd mit dem ST-Link V2.

Wird fehlerfrei compiliert?
Sieh dir die Debug Configuration genauer an.

von Joe (Gast)


Lesenswert?

Hallo,

bauen tut er fehlerfrei...
1
arm-none-eabi-objcopy -O binary "BlinkLED.elf" "BlinkLED.bin"
2
arm-none-eabi-size -B "BlinkLED.elf"
3
   text     data      bss      dec      hex  filename
4
   2312     1076     1056     4444     115c  BlinkLED.elf
5
' '
6
7
21:15:48 Build Finished (took 2s.294ms)

von Basti (Gast)


Lesenswert?

Bei Systemworkbech kannst du stlink v2 und v2.1 wählen... probier mal 
den anderen...

von hp-freund (Gast)


Lesenswert?

Gut, dann geh auf das Dreieck neben dem Käfer -> Debug Configuration

Mach dann am Besten ein Bildschirmfoto davon.

von B e r n d W. (smiley46)


Lesenswert?

ST-Link V2

Hier gibt es ein Tool mit dem Namen "STM32 ST-LINK utility". Lade es dir 
runter und probier aus, ob der ST-Link überhaupt funktioniert. Damit 
kann man auch die Firmware auf den neuesten Stand bringen.

http://www.st.com/content/st_com/en/products/development-tools/hardware-development-tools/development-tool-hardware-for-mcus/debug-hardware-for-mcus/debug-hardware-for-stm32-mcus/st-link-v2.html

Meiner musste erst geflasht werden, danach hat er funktioniert. 
Allerdings war es ein alter ST-Link 1.

: Bearbeitet durch User
von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

super, das bringt mich schon mal weiter.
ST-Link habe ich heruntergeladen und ein Firmewareupdate gemacht.

Unter den Options habe ich die "Read Out Protection" deaktiviert und 
kann das Teil nun mit ST-Link beschreiben (leider geht die LED nicht an, 
aber das ist erstmal zweitrangig).

Debuggen geht noch nicht....

Danke für eure HIlfe.

von hp-freund (Gast)


Lesenswert?

Bei mir steht bei Debugger -> Script -> Use Default Script

Scheint der einzige Unterschied zu sein.

von Joe (Gast)


Lesenswert?

Hallo,

da sagt er bei mir SCRIPT NOT FOUND.
Wahrscheinlich weil ich kein Evalboard habe.
Wie sieht dein Skript aus?

von hp-freund (Gast)


Lesenswert?

Muss also mit deiner ebay103.cfg zu tun haben...

Joe schrieb:
> da sagt er bei mir SCRIPT NOT FOUND.

Sagt er bei mir auch, geht aber trotzdem.
Müsste bei mir erst suchen was benutzt wird, ist aber Linux.

von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hm man kann es auch direkt eingeben. Funktioniert leider aber auch 
nicht. Den ST-Link findet er auch.

nfo : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_assert_srst
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v27 API v2 SWIM v6 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.244504
Info : stm32f1x.cpu: hardware has 6 b

von hp-freund (Gast)


Lesenswert?

Habe "Manual spec" probiert, funktioniert auch.

Was geht bei dir nicht? Run/Step probiert?

von hp-freund (Gast)


Lesenswert?

Reset Leitung angeschlossen? Ist manchmal nötig.

von Joe (Gast)


Lesenswert?

Reset ist angeschlossen, trotzdem nicht...
Es hat jedoch doch was mit der Resetleitung zu tun.

mit reset_config none separate im config file konnte ich gerade das 
erste mal auf den Controller.

Vielen Dank an alle!!!

von W.S. (Gast)


Angehängte Dateien:

Lesenswert?

Joe schrieb:
> Hast du noch eine Idee?

Ja, selbstverständlich.

Also, das Board ist ein Minimal-Brettl, wo so ziemlich alle Pins einfach 
so herausgeführt sind - jedenfalls sieht es auf dem Ebay-Foto so aus.

Wenn du noch keinen Stromlaufplan dafür hast, dann nimm ihn von der LP 
her auf. Du mußt ja wenigstens herauskriegen, wie du mit den Jumpern 
umgehen mußt - und ein kompletter Stromlaufplan ist immer hilfreich.

So, zur Toolchain: Ich meine damit NICHT irgend eine IDE, sondern das, 
wo die eigentliche Musike spielt. Das ist Compiler, Assembler, Linker, 
RT-Libs, Fromelf und so. Du solltest lernen, selbige selbst aufzurufen, 
damit du nicht auf die 1000 Befindlichkeiten irgendwelcher IDE's 
angewiesen bist. Wenn du mit den eigentlichen Tools flott gekommen bist, 
dann ist immer noch Zeit genug, sich irgend eine IDE auszugucken - 
sofern dir dann immer noch der Sinn danach steht.

Das mit dem Programmiergeschirre und dem PC-Programm dazu meine ich 
bitterernst. Sieh zu, daß du eine funktionable Standalone-Lösung für 
dich zusammenbekommst. Ob dann später deine Lieblings-IDE sowas 
ähnliches auch integriert hat, ist zweitrangig. Ich würde an deiner 
Stelle zuerst mal auf den integrierten Bootlader orientieren, denn das 
Geschirre dazu besteht nur aus einem simplen USB-zu-TTL-Serial-Adapter, 
den es vom Chinesen billigst gibt. Ja - auch ein chinesischer JLink ist 
billig, aber mit dem Bootlader bleibt man anständig. Und mit einem 
ST-Link ist man auf das Zeugs von ST festgenagelt - sehr unschön. Den 
Keil'schen ULINK sollte man lieber vergessen, ist auch ein 
Festnagel-Produkt.

Zum Debuggen:
Was zum Kuckuck willst du debuggen? Wofür willst du den Debugger 
überhaupt haben? Meine Erfahrung ist, daß der Debugger nur dafür gut 
ist, daß jemand bei allzu gewagten C-konstrukten herausbekommt, was der 
Compiler draus gemacht hat.
So etwa in der Art:
const struct Fontheader* const FontPool[FontAnzahl] = {...

Das was du hingegen viel dringender brauchst, ist eben das Zeugs, womit 
man deinen erzeugten Maschinencode in den Controller gebrutzelt bekommt.

Ansonsten brauchst du nen funktionablen Startupcode, ne Headerdatei für 
die Hardware-Register deines µC und ne Batchdatei zum Aufrufen von 
Compiler, Linker etc. Der Rest ist absolut fakultativ.

Ich hänge dir mal ein paar Dateien hier dran, die ich soeben 
zusammengekratzt habe. Einige davon sind HW-unabhängig. Die anderen 
solltest du dir durchsehen und an deinen µC anpassen. Wie die ccc.bat 
funktioniert, sollte klar ersichtlich sein, ebenso beide .xcl, beides 
ist für den Keil ausgelegt. Nimm den Keil für den Anfang, der ist 
wesentlich benutzerfreundlicher als alle GCC-Distributionen die ich 
kenne. Du wirst sehen, daß man mit 32 K an Code ganz schön weit kommt.
Im Paket sind:
- Konfiguration (hier für STM32F3..)
- serielle I/O per USART's und per USB
- Kommandoprogramm
- Systick
- Events
- Konvertierungen
Die beiden STM32Fxx.h solltest du dir kritisch anschauen und ggf. nach 
Refmanual redigieren. Die für den F302 ist neuer, da hab ich den 
häßlichen Zirkus mit struct's bleiben lassen. Nach meiner Erfahrung 
nimmt der Compiler sowieso all diese HW-Struct's komplett auseinander 
und adressiert das Zeugs auf seine Weise.

W.S.

von Johannes S. (Gast)


Lesenswert?

W.S. schrieb:
> Wenn du noch keinen Stromlaufplan dafür hast, dann nimm ihn von der LP
> her auf.

Das 'Brettl' ist hier doch schon lange bekannt, wird zB auch in der 
WordClock verwendet.
Beitrag "STM32F103C8T6 ARM STM32 Minimum System Development Board Module For Arduino"
https://www.mikrocontroller.net/articles/STM32F103C8T6_STM32_Billig_Board

Man kann auch die mbed lib verwenden und den Online Compiler von mbed 
verwenden:
https://developer.mbed.org/users/hudakz/code/STM32F103C8T6_Hello/

von daybyter (Gast)


Lesenswert?

Blue pill board.

Kannst auch gut mit der Arduino ide programmieren.

 http://www.stm32duino.com/

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.