Forum: Mikrocontroller und Digitale Elektronik Einstieg in STM32(L4)


von Gerd K. (gerd_knese)


Lesenswert?

Hallo liebe STM32 Experten,

Nach vielen Jahren Erfahrung mit MSP430/IAR EW430 möchte ich gerne mein 
Wissen erweitern und den Einstig in die Welt des STM32 vollziehen.

Leider scheint der Weg dorthin ein wenig steinig zu sein.

Ich bin im Besitz diverser Nucleo Boards u.a NUCLEO-L452RE und 
NUCLEO-L4R5ZI.

Mit letzterem würde ich gerne loslegen.

Ich habe mir die aktuelle Version des STM32CubeMX (v5.2.0) und die 
aktuellen Versionen des TrueStudios (v9.3.0) und der System Workbench 
for STM32 (v2.9) heruntergeladen und installiert.

Leider habe ich bei beiden so meine Probleme.

a) STM32CubeMX und System Workbench for STM32. Leider scheint das 
Projekt nachdem es vom CubeMX erzeugt wurde immer leer zu sein.

b) STM32CubeMX und TrueStudio. Hier kann ich alle Files sehen und auch 
compilieren aber leider startet der Debugger nicht.

Hier nun meine Frage:

Kennt jemand ein gutes Tutorial, dass mir den Einstieg erleichtert?

Gruss
Gerd

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
> Leider scheint das
> Projekt nachdem es vom CubeMX erzeugt wurde immer leer zu sein.

Ist es denn leer? Schau mit dem Dateimanager deines Betriebssystems 
nach.

Um hier Probleme zu vermeiden, würde ich auf Leerzeichen in 
Verzeichnisnamen und Dateinamen verzichten.

> aber leider startet der Debugger nicht.

Er wird sicher irgendeine Fehlermeldung im "Output" View ausgeben.

von Gerd K. (gerd_knese)


Lesenswert?

Hallo,

Sorry, dass mein Post so lang geraten ist.

Hier nochmals der Kern meiner Anfrage:

Gerd K. schrieb:

> Kennt jemand ein gutes Tutorial, dass mir den Einstieg erleichtert?


Gruss
Gerd

von Gerd K. (gerd_knese)


Lesenswert?

Hallo Stefanus

Stefanus F. schrieb:
> Gerd K. schrieb:
>> Leider scheint das
>> Projekt nachdem es vom CubeMX erzeugt wurde immer leer zu sein.
>
> Ist es denn leer? Schau mit dem Dateimanager deines Betriebssystems
> nach.
Habe ich schon kontrolliert. Nein, das Projekt ist nicht leer. Es wird 
in der IDE lediglich nicht angezeigt.


> Um hier Probleme zu vermeiden, würde ich auf Leerzeichen in
> Verzeichnisnamen und Dateinamen verzichten.
Jup, habe ich.


>> aber leider startet der Debugger nicht.
>
> Er wird sicher irgendeine Fehlermeldung im "Output" View ausgeben.
Ja, er kann die CPU/Debugger nicht finden. (Error in initializing 
ST-LINK device.
Reason: No device found on target.)

Gruss
Gerd

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
>>> Leider scheint das
>>> Projekt nachdem es vom CubeMX erzeugt wurde immer leer zu sein.
>> Ist es denn leer? Schau mit dem Dateimanager deines Betriebssystems
>> nach.
> Habe ich schon kontrolliert. Nein, das Projekt ist nicht leer. Es wird
> in der IDE lediglich nicht angezeigt.

Beide IDE basieren auf Eclipse. Bei Eclipse gehören immer alle Dateien 
zum Projekt, die innerhalb des Projektverzeichnisses liegen. Wenn mal 
eine "neue" Datei nicht angezeigt wird, drücke ich F5, danach wird sie 
sichtbar.

Es gibt dazu zwei unterschiedliche Ansichten "Files" und "Project 
Explorer". Im "Project Explorer" werden die Dateien anders gruppiert 
angezeigt. In den Projekteinstellungen legst du (bzw Cube MX) fest, 
welche Verzeichnisse sourcen und includes enthalten). Vielleicht stimmt 
dort etwas nicht.

Was den ST-Link angeht, installiere mal das ST-Link Utility von ST. 
Dabei wird der nötige Windows Treiber mit installiert.

Mit einem Tutorial kann ich nicht dienen.

von pegel (Gast)


Lesenswert?

Hast du den gleichen workspace für CubeMX und SW4STM32 benutzt?
Das Projekt dann importiert? Win oder Linux?
In einem Beitrag hatte ich mal meinen Ablauf dargestellt.

von pegel (Gast)


Lesenswert?

Stefanus F. schrieb:
> Mit einem Tutorial kann ich nicht dienen.

youtube hat einige davon.

von W.S. (Gast)


Lesenswert?

Gerd K. schrieb:
> Gerd K. schrieb:
>
>> Kennt jemand ein gutes Tutorial, dass mir den Einstieg erleichtert?

Nein. So etwas, das dir die Eigeninitiative abnimmt, ist mir noch nicht 
untergekommen. Wohl aber schlechte Tutorials, aus denen man nichts 
wirklich gutes hätte lernen können.

Was genau willst du denn wissen?
- wie man Cube bedient?
- oder wie man selber mit dem Chip klarkommt?
- oder wie man selber mit dem Compiler klarkommt?
- oder wie man den Code vom PC in den Chip bekommt?

Also: wozu willst du ein Tutorial: Um deinen eigentlichen Chip zu 
verstehen - oder um mit der von dir genannten Software klarzukommen?

Mein Rat wäre ein ganz anderer:
Lerne deinen Chip auf deinem Board zuerst einmal selbst und aus erster 
Hand kennen, also per Datenblatt und Referenzmanual. Und dann gehe 
deinen Weg erstmal ohne die genannten Helferlein von ST, dabei lernst du 
am schnellsten und am gründlichsten, weil du dich auf deinen 
eigentlichen Chip konzentrieren kannst und dich nicht noch mit all den 
Befindlichkeiten der diversen "Studios" dazwischen befassen mußt.

Und für den Anfang hätte ich dir auch erstmal zu einem kleineren und 
einfacheren Chip und Board geraten. Sowas wie die berüchtigten BluePill 
Dinger etwa. Die sind noch etwas überschaubarer.

W.S.

von Gerd K. (gerd_knese)


Lesenswert?

Hallo W.S.

W.S. schrieb:
> Mein Rat wäre ein ganz anderer:
> Lerne deinen Chip auf deinem Board zuerst einmal selbst und aus erster
> Hand kennen, also per Datenblatt und Referenzmanual. Und dann gehe
> deinen Weg erstmal ohne die genannten Helferlein von ST, dabei lernst du
> am schnellsten und am gründlichsten, weil du dich auf deinen
> eigentlichen Chip konzentrieren kannst und dich nicht noch mit all den
> Befindlichkeiten der diversen "Studios" dazwischen befassen mußt.

Das wäre perfekt für mich.

Mit welcher Tool-Chain kann man das?

Gruss
Gerd

von Johnny B. (johnnyb)


Lesenswert?

Gerd K. schrieb:
> aktuellen Versionen des TrueStudios (v9.3.0) und der System Workbench
> for STM32 (v2.9) heruntergeladen und installiert.

Ich würde derzeit ausschliesslich TrueStudio verwenden, weil Atollic 
inzwischen von ST übernommen wurde und diese Entwicklungsumgebung daher 
supportmässig wohl am besten versorgt wird. Ausserdem sind sie dran, 
verschiedene Tools miteinander zu verschmelzen.

von Max G. (l0wside) Benutzerseite


Lesenswert?

Gerd K. schrieb:
> Nach vielen Jahren Erfahrung mit MSP430/IAR EW430 möchte ich gerne mein
> Wissen erweitern und den Einstig in die Welt des STM32 vollziehen.

An dem Schritt bin ich auch gerade (allerdings komme ich von CCS, nicht 
von IAR). Mein erster Punkt zum Umgewöhnen: während beim CCS 
"Installieren - anstöpseln - läuft" angesagt war, will das STM32-Setup 
mehr Betüddelung. Grobe Faustregel: wenn der GDB das erste Mal Kontakt 
zum Board aufgenommen hat, ist die halbe Miete geschafft. Dann muss noch 
der Make-Prozess funktionieren, und das Entwickeln kann beginnen.

Nach diversem Ärgern über CubeMX, zueinander inkompatible Bibliotheken 
von ST usw. habe ich die Reißleine gezogen und bin auf ChibiOS 
umgestiegen. Die Doku zum Einstieg ist zwar eher untermittelprächtig, 
dafür wird der STM32 gut unterstützt, und der sich ergebende Code ist 
kompakt und gut zu lesen.
Das mitgelieferte ChibiStudio habe ich als hilfreich empfunden (Hint: 
unbedingt das mitgelieferte Make verwenden, der im Netz zu findende Tipp 
mit MSYS2 ist NICHT hilfreich), man kann aber auch selbst basteln.

Insgesamt habe ich die Entwicklungsumgebung beim MSP430 viel mehr als 
Rundum-Sorglos-Paket empfunden als die beim STM32 (auch im Vergleich zu 
Atollic TrueStudio). Dafür ist das Preis-/Leistungs-Verhältnis der STM32 
wesentlich besser. Wenn du halbwegs stressfrei mehr Performance haben 
willst und die Stückkosten keine große Rolle spielen, sind die MSP432 
für dich vielleicht auch einen Blick wert.

von Gerd K. (gerd_knese)


Lesenswert?

Hallo Leute,

Ich bin zunehmend der Ansicht, dass mein Ansatz in meinem Bemühen mich 
mit dem STM32 zu beschäftigen grundsätzlich falsch oder zu old school 
ist.

Ich weis, dass sich der MSP430 hier im Forum nicht alzu grosser 
Beliebtheit erfreut aber für Neueinsteiger wird es einem in der MSP430 
Welt deutlich leichter gemacht.

- Development board bestellen
- Datenblatt und Handbuch bei TI herunterladen
- Software Beispiele bei TI herunterladen
- IDE herunterladen (z.B. IAR EW430 Kickstart, CCS usw.)

Und man kann sofort loslegen.

Geht das nicht auch bei STM32?

Ich konnte nicht mal einfache Software Beispiele finden.

Bitte helft mir!


Gruss
Gerd

von Gerd K. (gerd_knese)


Lesenswert?

Hi Max

Max G. schrieb:
> An dem Schritt bin ich auch gerade (allerdings komme ich von CCS, nicht
> von IAR). Mein erster Punkt zum Umgewöhnen: während beim CCS
> "Installieren - anstöpseln - läuft" angesagt war, will das STM32-Setup
> mehr Betüddelung.
Das Gefühl habe ich auch.

> Grobe Faustregel: wenn der GDB das erste Mal Kontakt
> zum Board aufgenommen hat, ist die halbe Miete geschafft. Dann muss noch
> der Make-Prozess funktionieren, und das Entwickeln kann beginnen.
Dafür brauche ich aber erstmal einen Startpunkt z.B. eine Sammlung von 
einfachen Programmbeispielel a la MSP430


> Nach diversem Ärgern über CubeMX, zueinander inkompatible Bibliotheken
> von ST usw. habe ich die Reißleine gezogen und bin auf ChibiOS
> umgestiegen. Die Doku zum Einstieg ist zwar eher untermittelprächtig,
> dafür wird der STM32 gut unterstützt, und der sich ergebende Code ist
> kompakt und gut zu lesen.
Schau ich mir mal an.

> Insgesamt habe ich die Entwicklungsumgebung beim MSP430 viel mehr als
> Rundum-Sorglos-Paket empfunden als die beim STM32 (auch im Vergleich zu
> Atollic TrueStudio).
Wohl war!

> Dafür ist das Preis-/Leistungs-Verhältnis der STM32
> wesentlich besser. Wenn du halbwegs stressfrei mehr Performance haben
> willst und die Stückkosten keine große Rolle spielen, sind die MSP432
> für dich vielleicht auch einen Blick wert.
MSP432 kenne ich schon. Ist mit CCS und den tollen TI Beispielen leicht 
in der Griff zu bekommen.

Aber, ich wollte halt genug Power um auch mal z.B. ein Kamerabild zu 
verarbeiten ohne gleich auf spezielle FIFO boards oder Boards mit 
eigenem spezialisierten Prozessor zurückgreifen zu müssen.

Hey, der STM32 ist auch nur eine MCU. Das muss doch einfacher gehen, 
oder?


Gruss
Gerd

von Johnny B. (johnnyb)


Lesenswert?

Gerd K. schrieb:
> - Development board bestellen
> - Datenblatt und Handbuch bei TI herunterladen
> - Software Beispiele bei TI herunterladen
> - IDE herunterladen (z.B. IAR EW430 Kickstart, CCS usw.)
>
> Und man kann sofort loslegen.
>
> Geht das nicht auch bei STM32?

Geht doch ebenso!

- Development Board bestellen (Irgendein Nucleo oder Disco oder wenns 
billig sein soll von Aliexpress BluePill und ST-Link V2 Clone)
- Atollic TrueStudio runterladen/installieren
- CubeMX runterladen/installieren

...und schon kannst Du loslegen.
Natürlich ist ein STM32 ungemein komplexer als ein MSP430, aber mann 
kann ja mal klein anfangen und nur mal eine LED blinken lassen.
Wenn Du ein Board von ST hast, kannst Du das in CubeMX auswählen und 
alle Pins und Clocks sind schon richtig vorkonfiguriert. Das heisst, 
eine LED blinken zu lassen benötigt höchstes noch ein paar wenige Zeilen 
Code.

von Gerd K. (gerd_knese)


Lesenswert?

Hallo Jonny B.

Johnny B. schrieb:
> Geht doch ebenso!
>
> - Development Board bestellen (Irgendein Nucleo oder Disco oder wenns
> billig sein soll von Aliexpress BluePill und ST-Link V2 Clone)
> - Atollic TrueStudio runterladen/installieren
> - CubeMX runterladen/installieren
>
> ...und schon kannst Du loslegen.
> Natürlich ist ein STM32 ungemein komplexer als ein MSP430, aber mann
> kann ja mal klein anfangen und nur mal eine LED blinken lassen.
> Wenn Du ein Board von ST hast, kannst Du das in CubeMX auswählen und
> alle Pins und Clocks sind schon richtig vorkonfiguriert. Das heisst,
> eine LED blinken zu lassen benötigt höchstes noch ein paar wenige Zeilen
> Code.

Wie du vermutlich in meinem ersten Post gelesen hast, habe ich genau das 
gemacht und bin leider nicht weiter gekommen.

Mir fehlen für den STM32 einfach die Grundlagen und diese wollte ich mir 
aneignen. Eben z.B. durch die Nutzung eines Tutorials oder einfacher 
Beispiele (die leider nicht zu finden waren).


Gruss
Gerd

von google (Gast)


Lesenswert?

Klick doch einfach mal auf das blaue STM32 hier in den Beiträgen. Ganz 
ohne Lesen wird es nicht gehen. Es gibt einen IAR-Demo für STM32, ist 
aber codegrößenbeschränkt. Fürs einfache Kennenlernen reicht der aber.

von Gerd K. (gerd_knese)


Lesenswert?

Hallo Gast

google schrieb:
> Klick doch einfach mal auf das blaue STM32 hier in den Beiträgen. Ganz
> ohne Lesen wird es nicht gehen. Es gibt einen IAR-Demo für STM32, ist
> aber codegrößenbeschränkt. Fürs einfache Kennenlernen reicht der aber.

Wie oben zu lesen, ist mir natürlich die IAR Kickstart Version bekannt.

Aber diese bringt mich nicht wirklich weiter weil sie eben 
codegrößenbeschränkt ist und gerade STM32 Code kann sehr schnell, wg. 
der oben schon erwähnten Komplexität der MCU, recht gross werden.

Ausserdem mangelt es hauptsächlich an Beispielen

Gruss
Gerd

von Vincent H. (vinci)


Lesenswert?

Gerd K. schrieb:
> Hallo Gast
>
> google schrieb:
>> Klick doch einfach mal auf das blaue STM32 hier in den Beiträgen. Ganz
>> ohne Lesen wird es nicht gehen. Es gibt einen IAR-Demo für STM32, ist
>> aber codegrößenbeschränkt. Fürs einfache Kennenlernen reicht der aber.
>
> Wie oben zu lesen, ist mir natürlich die IAR Kickstart Version bekannt.
>
> Aber diese bringt mich nicht wirklich weiter weil sie eben
> codegrößenbeschränkt ist und gerade STM32 Code kann sehr schnell, wg.
> der oben schon erwähnten Komplexität der MCU, recht gross werden.
>
> Ausserdem mangelt es hauptsächlich an Beispielen
>
> Gruss
> Gerd


Die Beispiele sind Teil der Bibliothek die man via CubeMX herunterladen 
kann. Man kann ST vieles vorwerfen, aber dass die Anzahl der Beispiele 
zu gering ist stimmt mit absoluter Sicherheit nicht. Allein die aktuelle 
L4-Lib hat Beispiele für 17(!!!) verschiedene Development Boards.

von Daniel_S (Gast)


Lesenswert?

Gerd K. schrieb:
> Ja, er kann die CPU/Debugger nicht finden. (Error in initializing
> ST-LINK device.
> Reason: No device found on target.)

Das könnte auch am Nucleo-Board liegen; da gibt es einige Jumper, die 
richtig gesetzt sein müssen: Am "ST-Link-Teil" müssen beide Jumper m.w. 
gesetzt sein, und der Jumper für die Versorgungsspannung muss auf USB 
gestellt sein (falls du es darüber betreibst, wovon ich ausgehe). Und 
dann gibt es noch einen Jumper, um den Strom am Mikrocontroller zu 
messen (IDD), der muss auch gesteckt sein.

Gruß Daniel

von NichtWichtig (Gast)


Lesenswert?

AtollicTRUEStudio liefert doch Beispiele.
Menu File - New - Download new example project ....

von W.S. (Gast)


Lesenswert?

Gerd K. schrieb:
> Das wäre perfekt für mich.
>
> Mit welcher Tool-Chain kann man das?

Gerd K. schrieb:
> - Development board bestellen
> - Datenblatt und Handbuch bei TI herunterladen
> - Software Beispiele bei TI herunterladen
> - IDE herunterladen (z.B. IAR EW430 Kickstart, CCS usw.)
>
> Und man kann sofort loslegen.
>
> Geht das nicht auch bei STM32?

Uff.. also zwischen deinen beiden Posts klafft eine Riesenlücke. Klingt 
mir nach "ich will alles und zwar sofort, aber es muß mir fertig 
gebraten in den Mund fliegen".

Ich schildere dir mal, wie das bei mir aussieht:

Als IDE nehme ich den TotalCommander. Ist natürlich keine IDE, aber ein 
hervorragendes Navigationstool auf dem PC.

Für ein neues Projekt mache ich mir ein Verzeichnis, wo alles 
hineinkommt.

Zum Editieren der Quellcodes nehme ich nen normalen Editor, derzeit den 
schweizer Notetab.

Als Toolchain benutze ich den Keil. Den hab ich sowieso in der Firma und 
daheim tut es auch die freie Version bis 32K, die man erstmal voll 
kriegen muß. Vor Jahren hab ich für die Lernbetty auch den GCC benutzt 
(yagarto ..). Geht auch, ist ein Stück hakeliger bei der link.xcl, macht 
etwa 20% längern Code als der Keil. Wer will, kann auch den IAR 
benutzen, ist bis 32K auch frei.

Zum Aufrufen der Toolchain benutze ich ne simple Batchdatei. Ein Klick 
im TC und nach ein paar Sekunden je nach Codegröße ist alles fertig.

Zum Brennen der Firmware in den Chip benutze ich bei LPC und STM32 den 
jeweiligen Bootlader, bei LPC FlashMagic und bei STM32 mein eigenes 
Brennprogramm, gibt's hier bei Projekt&Code herunterzuladen. Als 
Programmieradapter fungiert ein simpler FTDI-Usb nach serial Konverter 
oder dasselbe mit so einem CH340nochwas aus China für zwofuffzich.

Zum Ausprobieren hab ich ein kleines Netzteil dabei (so etwa 15V/1A).

Gerade für die simpleren STM32 Controller hab ich mir mal eine Handvoll 
Minimal-Leiterplatten machen lassen, wo ein STM32F103C8T6 drauf ist, 
dazu miniUSB und Programmieranschluß (JST-Verbinder mit 1mm Pitch). Über 
den kann man (per UART) auch ganz bequem mit dem PC über den 
Programmieradapter kommunizieren. Ne quasi Standard-Firmware hab ich 
auch dafür, so daß das Environment auf dem Controller bereits fertig 
ist. Einfach in config.c die gewünschte Pin-Konfiguration eintragen (ist 
ein #define.. Konstrukt) und das Konfigurieren ist fast fertig - die 
Teile für die konkrete Aufgabe müssen natürlich noch dazugeschrieben 
werden. Aber sowas wie ne Kommandozeile über USB, Systemuhr, 
Konvertierungen, Geräte-IO usw. sind schon da. Und dieser Firmware-Rumpf 
kostet grad mal 11.5 K an Code. Da sind noch über 20 K für die konkrete 
Aufgabe frei. Hab das Ganze hier auch mal vor Jahren gepostet - auch mit 
Eagle-Files für die LP.

In dem Fall heißt das also
- gepostetes Projekt hier runterladen
https://www.mikrocontroller.net/attachment/316790/STM32F103C8T6.ZIP
- USB nach serial Adapter (ttl-Pegel) kaufen
- Brennprogramm herunterladen
https://www.mikrocontroller.net/attachment/383626/Stm32Prog_R1.0.6.zip
- LP und Bauteile bestellen
- zusammenlöten
- Keil, IAR oder GCC installieren
- nen Editor aussuchen
- loslegen.

Ich denk mal, die im Projekt enthaltenen Quellen sind ausreichend 
veständlich, so daß sie deinen Lesebedarf für den Anfang abdecken. Dazu 
solltest du dir aber auf jeden Fall 2 PDF's besorgen: das Datenblatt zum 
STM32F103C8T6 und das Referenzmanual dazu. Und warum gerade dieser 
Chip? Wel er noch einigermaßen übersichtlich ist und billig ist und für 
kleinere Basteleien völlig ausreicht.

Und wenn du keine Hardware löten willst, geht auch so ein 
"BluePill"-Brettl. Dort müßtest du dann aber die paar Strippen RxD, TxD, 
/BOOT, /Reset und GND selber anlöten.

Ein Binärfile ist mit dabei, kannst du als erstes in den Chip flashen 
und anschließend das Board am USB ausprobieren. Es ist "ab Werk" nur ein 
Kommando eingebaut:
d anf end
= Zeige den Speicher von anf bis end an.

W.S.

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
> Man kann sofort loslegen.
> Geht das nicht auch bei STM32?

Eigentlich schon. Bei mir standen "nur" zwei Bugs im CubeMX dem Glück im 
Weg. Deswegen habe ich es dann ohne CubeMX versucht und dabei gemerkt, 
ich ohne dieses Tool prima klar komme.

Ich habe dazu Anleitungen geschrieben, allerdings beziehen diese sich 
auf andere STM32 Serien. Falls du trotzdem reinschauen willst: 
http://stefanfrings.de/stm32/index.html

So richtig spannendes wirst du da aber kaum finden, denn soweit ich 
einschätzen kann hast du keinen groben Fehler gemacht. Die verwendeten 
Programme funktionierten einfach out-of-the-Box. Auch CubeMx (in einer 
späteren Version).

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
> Nein, das Projekt ist nicht leer. Es wird
> in der IDE lediglich nicht angezeigt.

Dann musst du es in den Workspace importieren.

Ich glaube, dein Hauptproblem ist, dass du mit der Bedienung von Eclipse 
noch nicht vertraut bist. Das würde dann sowohl die System Workbench als 
auch das Atollic Studio gleichermaßen betreffen.

Ich hatte Glück, weil ich diese IDE schon seit vielen Jahren beruflich 
für Java Entwicklung nutze.

Dazu gibt es sicher Videos bei Youtube.

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
> No device found on target.

Klingt nach fehlender Stromversorgung oder falschen Verbindungen. 
Vergleich deinen Aufbau mal mit meine Anleitung: 
http://stefanfrings.de/stm32/stm32l0.html#swj

von Stefan F. (Gast)


Lesenswert?

Gerd K. schrieb:
> Ich konnte nicht mal einfache Software Beispiele finden.

Die findest du im Cube L4 Firmware Paket: 
https://www.st.com/en/embedded-software/stm32cubel4.html

von Max G. (l0wside) Benutzerseite


Lesenswert?

Ich versuche mal, grob zusammenzuschreiben, wie ich das ChibiOS samt 
Studio ans Laufen bekommen habe. Ziel war, an einem STM32L152-Nucleo64 
einen VL53L0X mit Hilfe dessen API ans Laufen zu bekommen. Hat so 
mittelprächtig geklappt (woran es liegt, weiß ich noch nicht so genau).

Anmerkung: Nahezu jeder Schritt lässt sich auch mit anderen Ansätzen und 
anderen Tools lösen. Die Migration ist ein bisschen wie von WIndows auf 
Linux: es wird flexibler, aber komplizierter.

1. ChibiStudio runterladen. Das will unbedingt in C:\ChibiStudio 
installiert werden, man kann es aber genauso gut an einer anderen Stelle 
speichern. Man muss dann nur über die .bat starten anstatt über die .lnk 
(oder letztere anpassen).

2. Devel-Board anstecken und erst mal schauen, ob OpenOCD mit dem Board 
reden mag. OpenOCD ist die Schnittstelle zwischen Board/USB und dem GDB. 
Start in tools\openocd\scripts mit ..\bin\openocd -f 
board/stm32fwasweissich.cfg (passende Config nehmen).
OpenOCD sollte dann erzählen, dass es auf Port 3333 zuhört.

3. ChibiStudio anwerfen (start_gcc70.bat) und beim Start einen 
sinnvollen Workspace angeben. Das defaultmäßige C:\ChibiStudio ist nicht 
unbedingt sinnvoll. Irgendwas in deinem Userverzeichnis ist vermutlich 
sinnvoller.

4. Mit File->Import, dann "Import existing project into workspace", dann 
"Root directory" die zu deinem Board gehörige Demo laden (liegt in 
chibios182\demos\STM32).

5. Rechtsklick aufs Projekt, "Properties", dann unter "C++ Build" -> 
"Environment" die PATH-Variable setzen. Sie muss die Verzeichnisse 
c:\ChibiStudio\tools\GNU Tools ARM Embedded\7.0 2017q4\bin (für den gcc) 
und c:\ChibiStudio\tools\gnutools\bin (für make) enthalten. Pfade so 
anpassen, dass die zu deinem Installationsverzeichnis und deiner Version 
passen.

6. Project -> Build Project starten. Kann ggf. ein bisschen dauern, bis 
make die ganzen Abhängigkeiten aufgelöst hat. Wenn es Fehler hagelt, 
stimmen irgendwelche Pfade nicht. Wenn ganz komische Fehler kommen, hast 
du das falsche make.exe genommen...

7. Run -> Debug Configurations... aufrufen. Dort sollte unter "GDB 
Hardware Debugging" ein Eintrag auftauchen, der wie dein Projekt heißt. 
Diesen auswählen. Im "Debugger"-Tab sollte nun stehen:
"GDB Command" = arm-none-eabi-gdb
"Use remote target" = Haken gesetzt
"JTAG Device" = "Generic TCP/IP"
"Host name..." = localhost
"Port number" = 3333

8. Nun kommt der OpenOCD aus Schritt 2 auch tatsächlich zum Einsatz, am 
besten das zugehörige Fenster auf den zweiten Bildschirm schieben. Nun 
unten auf "Debug" drücken. Die Kette ChibiStudio (Eclipse) -> GDB -> 
OpenOCD -> USB -> STM32 sollte nun funktionieren.
Was ich bislang nicht hinbekommen habe: das Programm neu zu starten. 
"Terminate and Relaunch" tut´s aber auch und geht aber zum Glück relativ 
fix.

9. Demo läuft (LED blinkt), nun lässt sich die Board-Konfiguration 
anpassen:
Die Verknüpfung auf "board" im Demoprojekt löschen, dann über File -> 
Import -> File System die Dateien aus 
C:\ChibiStudio\chibios182\os\hal\boards\DEINBOARD in ein Verzeichnis 
"board" importieren. Jetzt kannst du mit Doppelklick auf das .mk-File 
die Boardkonfiguration anpassen. In der Menüleiste sollte nun ein Punkt 
"Configuration" auftauchen, damit lassen sich board.h und board.c 
generieren.
Zusätzlich im Makefile die Zeile "include 
$(CHIBIOS)/os/hal/boards/DEINBOARD/board.mk" ersetzen mit "include 
./board/board.mk". Nun kann die Spielerei losgehen.

: Bearbeitet durch User
von Johnny B. (johnnyb)


Lesenswert?

Gerd K. schrieb:
> Mir fehlen für den STM32 einfach die Grundlagen und diese wollte ich mir
> aneignen. Eben z.B. durch die Nutzung eines Tutorials oder einfacher
> Beispiele (die leider nicht zu finden waren).

Schau Dich mal auf der Website von ST um; die haben tonnenweise super 
Beschreibungen und sogar Videos.
Hier mal nur die Präsentationen zum L4, welchen Du verwenden möchtest:
https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32l4-online-training.html

Sehr zu empfehlen, besonders für den Einstieg, die "STM32 MOOCs" 
(Massive Open Online Courses)
https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs.html

Das meiste ist auf YouTube verfügbar. Hier die Grundlagen:
https://www.youtube.com/playlist?list=PLnMKNibPkDnGtuIl5v0CvC81Am7SKpj02

: Bearbeitet durch User
von poode (Gast)


Lesenswert?


von dasrotemopped (Gast)


Lesenswert?

Warum nicht gleich das Tutorial von STmicro ?
In Youtube nach
stm32cubemx basics 01.1
suchen und dann alle Folgevideos in der Reihenfolge schauen.


Gruß,
dasrotemopped.

von dasrotemopped (Gast)


Lesenswert?


von Gerd K. (gerd_knese)


Lesenswert?

Hi Leute,

Da sag noch einmal jemand, dieses Forum sein unfreundlich.

Ganz lieben Dank an alle.

Ich werde die umfangreichen Informationen die ihr alle zur Verfügung 
gestellt habt durcharbeiten und dann natürlich Erfolg vermelden oder 
euch mit weiteren Fragen nerven ;-).

An alle einen schönen 1. Mai

Gruss
Gerd

von W.S. (Gast)


Lesenswert?

Max G. schrieb:
> Ich versuche mal, grob zusammenzuschreiben, wie ich das ChibiOS samt
> Studio ans Laufen bekommen habe.

Ach herrje, das ist ja noch umständlicher, als ich es befürchtet habe.
Wozu brauchst du da eigentlich TCP/IP und dergleichen? geht sowas auf 
dem eigenen PC nicht direkter?

W.S.

von Stefan F. (Gast)


Lesenswert?

W.S. schrieb:
> geht sowas auf dem eigenen PC nicht direkter?

Die Software ist halt dafür ausgelegt, dass man auch remote debuggen 
kann. Und wenn man das schon so programmiert hat, kann man die selbe 
Verbindung auch lokal nutzen.

von W.S. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Die Software ist halt dafür ausgelegt, dass man auch remote debuggen
> kann.

nun denne, wer's braucht...
Meine Art ist das aber nicht. Bei mir sedimentieren die Debug-Adapter in 
der Bastelkiste.

W.S.

von Ruppie (Gast)


Lesenswert?

Hallo,
1.
schon älter undnicht für das Cube Framework sondern die älteren Standard 
peripheral libraries:

http://diller-technologies.de/stm32.html

2.
https://www.elektor.de/programming-with-stm32-nucleo-boards#preview


3. Buch
https://www.elektor.de/arm-microcontroller-projects

4. Sammlung von referenzen:
http://mikrocontroller.bplaced.net/wordpress/?page_id=57

Schau dir mal die STM32 Sachen an.
Gruß
Marc

von Stefan F. (Gast)


Lesenswert?

Hallo Gerd,

die STM32F4 sind ziemlich starke Boliden und daher unter 
Hobbyelektronikern eher wenig verbreitet. Die STM32L4 sind noch 
spezieller. Es gibt kaum Boards mit diesen Chips zu kaufen.

Daher findest du dafür auch wenig Einsteiger taugliche Anleitungen. Ich 
rate daher dazu, für die ersten Versuche einen wesentlich häufiger 
verwendetes Modell zu verwenden. Das Nucleo-F103RB oder ein Blue-Pill 
Board (ebenfalls mit STM32F103) ist sicher eine gute Wahl. Denn weil der 
STM32F103 recht alt ist, findest du reichlich Anleitungen.

Damit kannst du den "Style" von STM erlernen, sowie den Umgang mit den 
Arbeitsmitteln (was scheinbar zur Zeit dein größtes Problem ist).

Wenn du damit klar kommst, kannst du immer noch auf den STM32L4 
wechseln.

Die ersten Schritte mit einem Blue-Pill Board sind hier beschrieben: 
http://stefanfrings.de/mikrocontroller_buch2/index.html Falls du das 
Tutorial für Kinderkacke hältst, dann schaue Dir meine Anleitungen auf 
dieser Seite an: http://stefanfrings.de/stm32/index.html Ich nehem an, 
dass du sie bereits gesehen hast.

Wie du siehst, habe ich mit den F4 und L4 Modellen noch keine Erfahrung 
gesammelt. Aber ein kurzer Blick ins Referenzhandbuch sagt mir, dass da 
wohl (im Vergleich zu den mir bekannten (F1/F3/L0) keine schrecklich 
komplizierten Unterschiede zu erwarten sind.

Wir helfen Dir gerne bei konkreten Fragen.

von GEKU (Gast)


Lesenswert?

Gerd K. schrieb:
> Leider scheint das Projekt nachdem es vom CubeMX erzeugt wurde immer
> leer zu sein

Fehler beim Compilieren, sodass kein exekutierbarer Code erzeugt wird?

von Lothar J. (black-bird)


Lesenswert?

Gerd K. schrieb:
> Hallo Leute,
>
> Ich bin zunehmend der Ansicht, dass mein Ansatz in meinem Bemühen mich
> mit dem STM32 zu beschäftigen grundsätzlich falsch oder zu old school
> ist.
>
> Ich weis, dass sich der MSP430 hier im Forum nicht alzu grosser
> Beliebtheit erfreut aber für Neueinsteiger wird es einem in der MSP430
> Welt deutlich leichter gemacht.
>
> - Development board bestellen
> - Datenblatt und Handbuch bei TI herunterladen
> - Software Beispiele bei TI herunterladen
> - IDE herunterladen (z.B. IAR EW430 Kickstart, CCS usw.)
>
> Und man kann sofort loslegen.
>
> Geht das nicht auch bei STM32?
>
> Ich konnte nicht mal einfache Software Beispiele finden.
>
> Bitte helft mir!
>
> Gruss
> Gerd

Ja, geht. Mit EFM32.

Blackbird

von Christopher J. (christopher_j23)


Lesenswert?

Stefanus F. schrieb:
> Das Nucleo-F103RB oder ein Blue-Pill Board (ebenfalls mit STM32F103) ist
> sicher eine gute Wahl. Denn weil der STM32F103 recht alt ist, findest du
> reichlich Anleitungen.

Ich finde den F103 dank der Bluepill-Boards nach wie vor für Bastler
sehr interessant, würde aber zum "warm werden" eher die F0- oder
L0-Serie empfehlen. Der Grund dafür sind die "STM32 Snippets". Das sind
ordentlich kommentierte Codebeispiele für jegliche Peripherie, einzig
auf Basis von Registerzugriffen durch den CMSIS-Header. Das ganze würde
dann wie folgt aussehen:

> - Development board bestellen
Zum Beispiel STM32F072 Discovery oder STM32L053 Discovery bestellen

> - Datenblatt und Handbuch bei TI herunterladen
Reference Manual und Datenblatt für den jeweiligen Chip bei ST
herunterladen

> - Software Beispiele bei TI herunterladen
"STM32F0 Snippets" oder "STM32L0 Snippets" herunterladen:
https://www.st.com/en/embedded-software/stm32snippetsl0.html

> - IDE herunterladen (z.B. IAR EW430 Kickstart, CCS usw.)
AC6/SW4STM32 herunterladen

Dann arbeitest du dich mit dem entsprechenden Handbuch einmal quer durch
die Snippets. Wichtig ist vor allem auch unterschiedliche Konzepte bei
den Peripherie-Treibern zu verstehen ("blocking" vs "interrupt driven"
vs "DMA driven"). Danach erst würde ich anfangen mich mit Cube/HAL
auseinanderzusetzen (mit dem F0/L0). Dann kennst du aber auch die
Peripherie und kannst besser nachvollziehen was da unter der Haube
passiert. Dann erst würde ich auf den L4 umsatteln. Du kannst natürlich
auch später TrueStudio statt SW4STM32 nehmen aber für TrueStudio sind
bei den Snippets leider keine Projektdateien dabei.

Als ergänzende Literatur würde ich den "Definitive Guide to ARM
Cortex-M0 and Cortex-M0+" bzw. den "Definitive Guide to ARM Cortex-M3
and Cortex-M4" von Joseph Yiu empfehlen. Den benötigt man wenn man sich
mit den Befindlichkeiten des Kerns auseinandersetzen will oder muss. Für
die ersten Schritte ist der aber nicht unbedingt nötig. Später ist er
aber sehr hilfreich, wenn es z.B. um den NVIC geht oder du etwa einen
eigenen Bootloader schreiben willst.

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.