Forum: Mikrocontroller und Digitale Elektronik STM32 - IDE, Toolchain, HAL, Libs, etc.


von Bernd (Gast)


Lesenswert?

Ja oben im Betreff steht es ja.

Was nutzt ihr denn so um eure STM32 Controller zu programmieren?

Ich mache hier mal eine Frage-Liste dir ihr durchgehen könnt und 
kommentiert grad drunter.


Nutzt ihr eine IDE? Ja / Nein


Wenn ja, welche? Wie war die Konfiguration?


Welche Toolchain ist in Betrieb?


Wie handhabt ihr es mit dem debuggen und flashen?



Nutzt ihr CubeMX seit es die Hal-Libs gibt?



Wie sind eure Erfahrungen mit CubeMX?


Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern 
(ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf 
die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus 
fertigen Beispielen?



Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL 
bieten?



Wenn ja, welche und woher habt ihr diese?




Gruß

von CAN-Fan (Gast)


Lesenswert?

Bernd schrieb:
> Nutzt ihr eine IDE? Ja / Nein

Teils teils. Meist nur KWrite, zum debuggen ist Eclipse doch ganz 
praktisch.

> Wenn ja, welche? Wie war die Konfiguration?

Eclipse war Ok. Bis das mit dem JLink und allem funktioniert hat, muss 
man die Parameter richtig einstellen. Teils durch probieren.

SW4STM32 ging eigentlich direkt. Das JLink-Plugin nachgeladen, ging ohne 
Probleme.


> Welche Toolchain ist in Betrieb?

Bei beiden gibt es ab und zu Probleme mit Breakpoints, ob es an der 
gdb-Schnittstelle von Segger liegt ka. Da sind ab und zu noch die alten 
gesetzt, also nach dem kompilieren.

SW4STM32 nutzt Ressource in Eclipse und das geht nur mit absoluten 
Pfaden in der Makefile. Sprich ich brauch ein Eclipse um das zu 
kompilieren und kann nicht einfach 'make' in der Konsole eingeben (wenn 
ich es verschoben hab). Ist aber eine Sache von Eclipse.


> Wie handhabt ihr es mit dem debuggen und flashen?

Auf den Käfer klicken :P
(Plugin für Segger JLink)

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?
Ja auch die alte HAL davor. Mit Cube ist vieles einfacher. Bin echt kein 
Fan von so etwas, aber ob ich das strukt von Hand befülle oder einfach 
den Clock-Tree zusammen klicken kann, spricht nichts dagegen. Kommt das 
gleiche raus.

> Wie sind eure Erfahrungen mit CubeMX?
Sehr gut

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
> (ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
> die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
> fertigen Beispielen?

USB gibts mittlerweile direkt von Cube. Läuft ganz gut. Ethernet auch.
Z.B. das STMWin einfach zum Projekt hinzu gefügt. Oder andere Sachen 
(z.B. Bootloader-API etc) ist bei meinen Projekten immer so, dass ich 
das Projekt nur einmal mit Cube erstelle und bei Änderungen nur noch die 
entsprechenden Dateien kopiere, bzw. das direkt selbst ändere.

> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?

Ne so viele Nerven habe ich dann auch wieder nicht.



RTOS geht übrigends auch direkt mit Cube. Hab bei einem Projekt davor 
das noch von Hand zusammen gestellt und in mein Projekt kopiert.

von Andreas R. (daybyter)


Lesenswert?

Nehm Arduino IDE mit stm32duino Libs. STLink v2 zum Flashen.

von rüdiger (Gast)


Lesenswert?

Keine IDE, Texteditor + Makefile.
Als Toolchain arm-none-eabi aus den Distributionsrepos.
Programmieren und Debuggen mit openocd + gdb für die Boards mit STLink 
v2, oder Programmieren mit stm32flash und dem seriellen Bootloader.

Mit Cube und HAL hab ich mich noch nicht allzu sehr befasst. Dafür 
funktioniert es inzwischen mit den 'alten' libs und einigen 
Zusatzbibliotheken ganz annehmbar.

von Little B. (lil-b)


Lesenswert?

Meine ersten Schritte mit dem STM32F4 habe ich mit Atollic gemacht.
Vorteile: Bekannte Umgebung von Eclipse, alles in einem Paket, keine 
Konfiguration nötig.
Nachteil: Codebeschränkung von 32kByte

Hier habe ich mich auch mit der HAL auseinander gesetzt. Nicht nur, wie 
man diese verwendet, sondern was auch für ein SourceCode dahinter steht. 
Die ineffizienz des Codes hat mich erschreckt, die 
Initialisierungsroutinen fand ich zu verwirrend. Da habe ich mich 
entschlossen, wieder direkt auf Register-Ebene zu arbeiten. CubeMX habe 
ich mir noch nicht genauer angeschaut, scheint aber sehr komfortabel zu 
sein (vor allem Clock Tree und PinMux).

Seit kurzem arbeite ich mit eclipse, Gnu GCC und OpenOCD. Die 
Installation klappte ohne Probleme nach dieser Anleitung:
Beitrag "STM32-Toolchain mit Eclipse CDT 4.3, GnuArmEclipse, OpenOCD 0.8.0, Gnu Arm GCC 4.8, STM32CubeMX"

Als Middleware benutze ich bisher meine eigenen Libs. Im Rahmen von 
Forschung und Entwicklung habe ich mir angeschaut, wie Ethernet und 
Bluetooth funktioniert. USB kommt als nächstes, bis dahin nutze ich noch 
die STM VCP Bibliothek.
lwIP kam für mich nicht in Frage, da ich mir den Source Code angeschaut 
habe. Diesen Programmierstil möchte ich nicht unterstützen!
Da ich nun meine Projekte auf FreeRTOS migriere, werde ich meine eigene 
Bluetooth Library verwerfen und auf BtStack setzen. Das ist aber zur 
Zeit noch in Arbeit.
Mit FreeRTOS kann ich nun meine Applikation modular erweitern, ohne 
etwas am StartupCode zu ändern. Ein angepasstes Linkerskript lässt 
automatisch alle Initialisierungen aufrufen und Tasks erstellen, ohne 
den Startup Code anfassen zu müssen.

Ich debugge mit einem STlink V2, wobei das Programm aus dem RAM läuft. 
Dabei wird zwar gerne der Speicher knapp, aber es reicht, um einzelne 
Module zu testen und zu debuggen. Das endgültige Programm wird dann 
ebenfalls mit dem STlink ins Flash geschrieben.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> Nutzt ihr eine IDE? Ja / Nein
MDK-ARM

> Wenn ja, welche? Wie war die Konfiguration?
CMSIS-Pack, durch CPU Auswahl

> Welche Toolchain ist in Betrieb?
armcc

> Wie handhabt ihr es mit dem debuggen und flashen?
ULINK pro, Analyzer der IDE

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?
aktuell nein

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
> (ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
> die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
> fertigen Beispielen?
CMSIS-RTOS, ARM middleware

> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?
nur CMSIS Headerfile-Standard.
Da ich an dieser Stelle oft am CPU Limit arbeite, schreib ich die 
Treiber lieber selber


VG,
/th.

von Joachim (Gast)


Lesenswert?

Random .. schrieb:
> MDK-ARM

Klar! :-))

von Ben W. (ben_w)


Lesenswert?

Bernd schrieb:

> Nutzt ihr eine IDE? Ja / Nein
Beruflich: MDK µVision (leider)
Privat: aktuell das neue Attolic Truestudio, jetzt ohne CodeSize limit

> Welche Toolchain ist in Betrieb?
arm-gcc oder GCC
hab noch nicht geschafft llvm ans laufen zu bekommen

> Wie handhabt ihr es mit dem debuggen und flashen?
bequem von der IDE aus


> Nutzt ihr CubeMX seit es die Hal-Libs gibt?
Nur für die neusten STM32 die keine Stdlib mehr haben.
Will aber noch die HAL von dem ChinbiOS projekt mal ausprobieren
oder die open-cm3 lib


> Wie sind eure Erfahrungen mit CubeMX?
bisher eher wechselhaft



> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?
Ja, diese werden dann aber für meien zwecke angepasst


> Wenn ja, welche und woher habt ihr diese?
betriebs intern entwickelt

von Steffen R. (steffen_rose)


Lesenswert?

Little B. schrieb:
> Meine ersten Schritte mit dem STM32F4 habe ich mit Atollic gemacht.
> Vorteile: Bekannte Umgebung von Eclipse, alles in einem Paket, keine
> Konfiguration nötig.
> Nachteil: Codebeschränkung von 32kByte

Atollic ist mittlwerweile nicht mehr Codegrößenbeschränkt.

> Nutzt ihr eine IDE? Ja / Nein

> Wenn ja, welche? Wie war die Konfiguration?

uVision5 / MDK-ARM
IAR
Atollic
openSTM32
CooCox (1.7)

Irgendwo sind sie alle gleich.

> Welche Toolchain ist in Betrieb?

Die jeweilige Hersteller Toolchain.

> Wie handhabt ihr es mit dem debuggen und flashen?

per Debugger

ULink2
ST-Link

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?

erst in letzter Zeit

> Wie sind eure Erfahrungen mit CubeMX?

Bisher gut. Kann diese leider nicht durchgängig nutzen, da nicht alle 
benötigten Änderungen unverändert gelassen werden.

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
> (ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
> die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
> fertigen Beispielen?

Entweder setze ich es selbst auf und nehme Beispiele/CubeMX als Vorlage 
oder lasse CubeMX gleich die Arbeit der Initialisierung machen.

Warum willst Du es wissen? Machst Du als nächstes die gleiche Umfrage 
auch für die anderen Prozessorfamilien?

von Justus S. (jussa)


Lesenswert?

Als totaler STM32-Anfänger hab ich "System Workbench for STM32" mit 
CubeMX benutzt (für ein SMM32 F3 Discovery Board), und eigentlich keine 
Probleme gehabt...

CooCox hingegen hat bei mir extrem rumgezickt...

von Bernd (Gast)


Lesenswert?

Erstmal danke für eure Antworten!

Ich bin gerade dabei meine ersten Erfahrungen mit dem STM32 zu sammeln.

Habe unter Anderem schon cocox ausprobiert, genauso wie das OpenSTM32.


Wirklich warm geworden bin ich mit keinem.
Komplexere Sachen wie z.B. USB, die ich mit CubeMX generiert hatte habe 
ich nicht ans laufen bekommen. OpenSTM32 kannte teilweise Datentypen wie 
uint_xy nicht, teilweise Compilerfehler weil er irgendwelche 
Header-Dateien nicht auflösen konnte obwohl explizit der Pfad dazu 
angegeben war.
Genauso in OpenSTM32. Ich öffne ein frisch erstelltes Projekt von CubeMX 
und zeigt erstmal > 1000 Fehler an.

Im großen und ganzen für mich bisher relativ frustrierend, also nicht 
der STM32 an sich sondern dass die IDEs so viel Probleme machen.

Werde aber bald ein größeres Projekt mit einem F407 machen müssen und 
will eine IDE auf die ich mich verlassen kann.


Aber wie sagt man so schön: 99,9% der Computerfehler sitzen vor dem 
Computer. Wahrscheinlich liegt es an meiner Unfähigkeit.


Aber das Atollic werde ich mal antesten, danke für den Tipp!

von Bernd (Gast)


Lesenswert?

Genauso das Toolchain tutorial mit Eclipse wo jemand den Link gepostet 
hat, werde ich auch mal versuchen.

Danke ebenfalls hierfür!

von Steffen R. (steffen_rose)


Lesenswert?

Bernd schrieb:
> Genauso in OpenSTM32. Ich öffne ein frisch erstelltes Projekt von CubeMX
> und zeigt erstmal > 1000 Fehler an.

Kann ich so nicht bestätigen. Ich vergesse aber schonmal gerne die 
Projektsettings zu setzen.

von iwoasesned (Gast)


Lesenswert?

Das atollic studio ist auch ganz brauchbar. Seit kurzen gibt es
keine Codesizebegrenzung in der lightversion mehr.....

von Guest (Gast)


Lesenswert?

> Nutzt ihr eine IDE?
Ja


> Wenn ja, welche? Wie war die Konfiguration?
SEGGER Embedded Studio
https://www.segger.com/embedded-studio.html

Konfiguration? Das funktioniert einfach out of the box


> Welche Toolchain ist in Betrieb?
SES benutzt den GCC Comppiler


> Wie handhabt ihr es mit dem debuggen und flashen?
Auch mit SES und natürlich J-Link.

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?

Wenn es geht, dann lieber alles selber machen.
Brauche aber da auch meistens nicht viel.

> Wie sind eure Erfahrungen mit CubeMX?

Leider wenig Erfahrung damit.

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
> (ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
> die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
> fertigen Beispielen?

Middleware benutze ich embOS und die anderen Middleware Produkte von 
Segger. Klar, ist nicht kostenlos, aber funktioniert einwandfrei und vor 
allem auch out of the box. Kein doofes Rumgebastel.


> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?
Nö.

von Markus M. (adrock)


Lesenswert?

Bernd schrieb:

> Nutzt ihr eine IDE? Ja / Nein

Ja, em::Blocks: http://http://www.emblocks.org/

Nachfolger ist EmBitz

> Wenn ja, welche? Wie war die Konfiguration?

Einfach, eigentlich nur installieren und loslegen.

> Welche Toolchain ist in Betrieb?

GCC vom em::Blocks.

> Wie handhabt ihr es mit dem debuggen und flashen?

Wird von der IDE erledigt. Adapter: ST-LINK/V2 clone (über USB).

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?

Nein, bis jetzt nicht.

> Wie sind eure Erfahrungen mit CubeMX?

Mal kurz angeschaut, nur für die Berechnung der Clocks zu aufgeblasen. 
Andere Funktionen noch nicht probiert.

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
> (ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
> die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
> fertigen Beispielen?

Bis jetzt nicht gemacht.

> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?

Nein.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Bernd schrieb:
> Was nutzt ihr denn so um eure STM32 Controller zu programmieren?

Warum so beengt?
Ich benutze in der ARM-Liga fast alles, was sich benutzen läßt und was 
mir gefällt, also von NXP, ST, Nuvoton bis Freescale. Kein Atmel, die 
waren mir bei den alten M40xxxx und Konsorten zu blöd. Idst aber schon 
15 Jahre her. Auch keine Stellaris, auch keine Infineon's - die sind mit 
ihrem ab 0 beginnenden ROM mir einfach zu blöd. Wenn die ihre Kunden 
unbedingt an ihren DAVE anketten wollen, dann eben OHNE MICH.

Also mein Vorschlag: "Was nutzt ihr denn so um eure ARM/Cortex 
Controller zu programmieren"

Antwort: zumeist den eingebauten Bootlader, denn den hat es immer und 
kostenlos.

> Nutzt ihr eine IDE? Ja / Nein

NEIN. definitiv. Man macht sich damit nur zu abhängig.

> Welche Toolchain ist in Betrieb?

Keil.

> Wie handhabt ihr es mit dem debuggen und flashen?

Ich schreibe normalerweise fehlerfreien Code - oder zumindest solchen, 
den ich durch schlichtes Nachdenken debuggen kann. Nur dort, wo das 
Manual mißverständlich ist oder gar schweigt, bin ich auf's Probieren 
angewiesen. Kurzum, wenn ich debuggen will, dann per 
Mini-Postmortem-Debugger, der direkt auf dem Zielsystem läuft.

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?

Nö. Sowas würde ich freiwillig auch nie tun, weil es nach meiner 
Erfahrung nur alles aufbläht und nicht wirklich und nachhaltig nützt. 
Also lieber die Low-Level-Treiber selber schreiben. Wenn man das für ein 
paar Chips gemacht hat, sieht man die Ähnlichkeien und es wird geradezu 
simpel.

> Wie sind eure Erfahrungen mit CubeMX?

siehe oben.

> Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern

Für einiges Zeugs habe ich mittlerweile genug eigenes Zeugs im 
Portfolio. Wenn das mal nicht ausreicht, z.B. komplexere Menüsysteme, 
Fonts oder so, dann schreib ich mir ein Entwurfsprogramm mit Delphi.


> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?

Hä?
Entweder ist ein Low-Level-Treiber das, was sein Name sagt, und dann 
abstrahiert er die Hardware gut genug - oder er taugt nur für die 
Mülltonne.

W.S.

von Franz F. (franzman)


Lesenswert?

Hallo,

ich werde auch demnächst wieder ein bisschen zum Programmieren kommen, 
vermutlich ein STM32F3.
Habe früher mal CooCox gearbeitet, komme allerdings mit der neuesten 
Version nicht mehr ganz zurecht. Deswegen wollt ich mir eigentlich was 
neues suchen.

Vom Schreiben würd ich VisualStudio vorziehen, ich überlege ob ich mir 
die Studentenversion von VisualGDB kaufen soll. Hat jemand Erfahrung 
damit?

von Mehmet K. (mkmk)


Lesenswert?

W.S. schrieb:
> Ich schreibe normalerweise fehlerfreien Code - oder zumindest solchen,
> den ich durch schlichtes Nachdenken debuggen kann.

Ich hatte schon immer den Verdacht, dass ich nicht der Hellste bin. 
Jetzt weiss ich es.

von Kopfschuettel (Gast)


Lesenswert?

Nutzt ihr eine IDE? Ja / Nein
Visual Studio 2015 mit VisualGDB - Benutze das VS noch für andere .Net 
Projekte und da ich für AVRs das Atmel Studio ist die Bedienung überall 
gleich. Kostet zwar Geld aber lässt sich je nach Version auch für Linux 
bzw. Raspberry Projekte verwenden. Der Preis (74€) für die 
Embedded-Version ist nicht unverschämt.

http://visualgdb.com/

Wenn ja, welche? Wie war die Konfiguration?

Plug and Play

Welche Toolchain ist in Betrieb?

Ich glaube arm-none-eabi

Wie handhabt ihr es mit dem debuggen und flashen?

Direkt im Studio auf debuggen drücken und hü

Nutzt ihr CubeMX seit es die Hal-Libs gibt?

Nur um mir die Clock-Konfiguration anzuschauen

Wie sind eure Erfahrungen mit CubeMX?

keine

Wie handhabt ihr es mit komplexen Dingen, die middleware erfordern
(ethernet, usb, etc..) konfiguriert ihr euch selber die middleware auf
die hal-lib oben drauf, nutzt ihr CubeMX oder doch copy&paste aus
fertigen Beispielen?

Erledigt VisualGDB gleich mit beim anlegen eines neuen Projekts mit

Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
bieten?

nö

Wenn ja, welche und woher habt ihr diese?

von Max (Gast)


Lesenswert?

Bernd schrieb:
> Nutzt ihr eine IDE? Ja / Nein

Keine IDE. Meist gedit, seit kurzem auch gnome-builder.

> Welche Toolchain ist in Betrieb?

arm-none-eabi-* 5.2 (aus den Fedora Paketquellen)

> Wie handhabt ihr es mit dem debuggen und flashen?

Zum Flashen:
openocd 0.9, mit Pseudotarget in den Buildskripten
(`scons program`)

Zum Debuggen:
openocd + arm-none-eabi-gdb

(siehe auch 
https://github.com/roboterclubaachen/xpcc/blob/bdb717048ddee044d13660328762c004d40fbe4f/examples/stm32f3_discovery/gdb/Readme.md)

> Nutzt ihr CubeMX seit es die Hal-Libs gibt?

Nein.

> Nutzt ihr Libraries die nochmals eine weitere Abstraktion als HAL
> bieten?

Benutze für alles xpcc welches u.a. C++ Streams zur Ausgabe über UART 
und Treiber für diverse externe Chips bietet. 
(https://github.com/roboterclubaachen/xpcc)

Max

von Bernd (Gast)


Lesenswert?

Hallo, ich nochmal (Threadersteller)


Mit dem TrueStudio bin ich warm geworden.
Habe auf dem STM32F7 Discovery Board jetzt das LCD und USB-CDC zum 
Laufen bekommen.
War zwar jetzt auch ein Nachmittag dran aber irgendwie kann ich mich 
damit anfreunden!

Mit CubeMX habe ich gar nix mehr gemacht (inzwischen vom PC gelöscht).

Habe mir ein leeres Projekttemplate für den F7 runtergeladen und habe 
darauf weiter aufgebaut.

Für LCD habe ich die Libs eingebunden die beim F7-Hands-On mitgegeben 
wurden und für das USB-CDC habe ich das hier genutzt:
http://stm32f4-discovery.com/2015/08/hal-library-21-multi-purpose-usb-library-for-stm32fxxx/

Geht alles
Danke euch nochmals!

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.