Forum: Projekte & Code Em::Blocks Template für STM32F429 Discovery (fix und fertig Stand 3.2015)


von Christian J. (Gast)


Lesenswert?

Hallo,

um vielen den Neueinstieg zu erleichtern habe ich ein Template erstellt, 
welches eine vollständig eingerichtete EmBlocks Umgebung enthält um 
eigene Programme zu erstellen. Em::Blocks deswegen weil es schneller und 
stabiler als CooCox ist, deutlich mehr Funktionen hat und fast an 
UVision heranreicht und vor allem auch ohne Internet und auskommmt.

Ein Demoprojekt lädt sich direkt mit, was Zufallszahlen auf dem Display 
ausgibt. Es ist zudem das Flashtool von ST installiert in der IDE 
welches aber vom User noch selbst installiert werden mussm und unter 
Tools/Edit ein Link darauf gelegt werden muss.


Eingebundene Repos:

- CMSIS F4 Stand 3.2015
- StdPeriphLibs Stand 3.2015
- Tilen Majerles Lib´s für STM32F4 Stand 3.2015

Die TM Libs deswegen weil sie trotz Erstellung mit uVIsion MDK von Keil 
ein Compiler und IDE unabhängiges Konzept haben (defines.h beachten fuer 
GCC!), auch ohne das Disco Board auf eigenen Designs anpassbar wären, 
modular aufgebaut sind. Sie basieren noch auf den StdPeriphLibs (letztes 
Update von ST war 3.2015), werden aber derzeit umgearbeitet, so dass sie 
später auch ohne diese auskommen. Regelmässiges Update empfehlenswert. 
Eine Portierung auf CubeMx ist nicht vorgesehen, um den Update Wahn in 
Grenzen zu halten.

AnMerkung: Die Verwendung dieser Middleware macht den STM32 meiner 
Ansicht nach schon etwas zum "Arduino", da die Hardware komplett 
abstrahiert wird.

Linker Script modifiziert, nutzt das SDRAM direkt mit als Datenspeicher
wenn der Variable ein SDRAM vorangestellt wird (Achtung: Kein 
Initializer! Wer das haben will muss den Startup Code anfassen)

Build Options:

- Flash Release (Size Optimized)
- Flash Debug
- RAM Debug

Linker bindet NewLib Nano Branch mit ein und die Math Libs standamaessig 
(ggf. ändern)

Zusatz: Der Startup Code wird von CMSIS Libs fuer Atollic true Studio in 
Asm verwendet. Ich habe unter /src jedoch noch einen in C beigelegt. 
Wird dieser verwendet geschieht die Initialisierung des SDRAM 
automatisch beim Startup mit über die system_stm32f4xx.c -> void 
SystemInit_ExtMemCtl(void) (thanxs to clive1 für den richtigen Code). 
Der dazu nötige GCC Define ist bereits als global definiert.

Die Project Options und alle #Defines sind global und lokal mit Bedacht 
gewaehlt! Wer dran rumfummelt sollte wissen was er tut! Damit schießt 
man
sich schnell das ganze Template ab.

Viel Spass!

Download (25MB)
https://www.dropbox.com/s/9gizmnv8d2t2y25/stm32f429_text_scroller.zip?dl=0

Gruss,
Christian
(der vom STm32F4 "fasziniert" ist und den Z80 drüber fast vergessen hat.

von vcc (Gast)


Lesenswert?

Vielen Dank!!!

von Christian J. (Gast)


Lesenswert?

In der startup_stm32f429_439xx.s im cmsis Ordner ist noch ein Fehler:

  .syntax unified
  .cpu cortex-m4
  .fpu fpv4-sp-d16
  .thumb

muss es heissen.

oder man nimmt die src/startup_stm32f429x.c, völlig wumpe, sind beide 
gleich, eine Asm, die andere C.

von Peter S. (psavr)


Lesenswert?

Hi Christian.
Dein Template Projeckt klingt gut, habe mir eben emBlocks instaliert zum 
ausprobieren und wollte nun auch Dein Projekt downloaden, aber der Link 
funktioniert nicht:

>https://www.dropbox.com/s/9gizmnv8d2t2y25/stm32f429_text_scroller.zip?dl=0
>"Dropbox - Link nicht gefunden"
>"Die von Ihnen gesuchte Datei wurde entweder verschoben oder gelöscht."

von Thomas S. (doschi_)


Lesenswert?

Hallo Christian,

ich bin erst heute auf Deinen Beitrag aufmerksam geworden.
Leider bekomme ich die gleiche Fehlermeldung von Dropbox wie Peter S.

Danke!
Thomas

von Gerhard O. (gerhard_)


Lesenswert?

Danke Christian,

habe leider das gleiche Problem mit Dropbox...

Gruss,
Gerhard

von Christian J. (Gast)


Lesenswert?

Gerhard O. schrieb:
> Danke Christian,
>
> habe leider das gleiche Problem mit Dropbox...
>
> Gruss,
> Gerhard

Sorry.... hatte die Datei gelöscht, kann ich aber gern wieder 
einstellen. ich kann zwar vom Firmenrechner die Datei von zu Hause vom 
NAS holen aber habe hier in Firma keine Hochlademöglichkeit bzw ist das 
verboten.

Wartet daher bitte bis heute abend ca 20 Uhr, dann lade ich die wieder 
hoch.

von Mike (Gast)


Lesenswert?

Naja, ist ja toll wenn du dein Projekt hier zur Verfügung stellst, ist 
dann aber nicht die Idee von der Sache, dass Du die verlinkte Datei 
wieder löschst!

Gegebenenfalls kannst Du einen neuen Link auf eine aktualisiertere 
Version posten.

von Gerhard O. (gerhard_)


Lesenswert?

Christian J. schrieb:
> Gerhard O. schrieb:
>> Danke Christian,
>>
>> habe leider das gleiche Problem mit Dropbox...
>>
>> Gruss,
>> Gerhard
>
> Sorry.... hatte die Datei gelöscht, kann ich aber gern wieder
> einstellen. ich kann zwar vom Firmenrechner die Datei von zu Hause vom
> NAS holen aber habe hier in Firma keine Hochlademöglichkeit bzw ist das
> verboten.
>
> Wartet daher bitte bis heute abend ca 20 Uhr, dann lade ich die wieder
> hoch.

Hallo Christian,

vielen Dank für Deine Mühe. Ich will bald von CooCox auf EM:Blocks 
umsteigen und Deine Vorarbeit ist wirklich ein guter Start.

Gruss,
Gerhard

von Christian J. (Gast)


Lesenswert?

Gerhard O. schrieb:

> von CooCox auf EM:Blocks umsteigen

Die wohl wichtigste Erkenntis seit der Sandkasten-Förmchen-Version 2 
Beta ....  ;-)

Bei Verwendung der TM Libs ist drauf zu achten, dass das ein 
Privatprojekt ist. Es ist nicht jede neue Version kompatibel mit einer 
älteren. Tilen bastelt da täglich dran und bevior man sich was Neues 
einspielt sollte man das alte sichern.

"Kennenlernen" wird man den STM32 damit allerdings nicht, das ist wie 
beim PC nur noch das API Interface.....

von Gerhard O. (gerhard_)


Lesenswert?

Christian J. schrieb:
> Gerhard O. schrieb:
>
>> von CooCox auf EM:Blocks umsteigen
>
> Die wohl wichtigste Erkenntis seit der Sandkasten-Förmchen-Version 2
> Beta ....  ;-)
Ich verwende immer noch störrischerweise die V1.74 IDE und den 4.6 
2012q4 GCC. Damit geht für mich alles 100% bei meinen F10X Projekten. 
Diese Version vom GCC finde ich die Beste für mich.
>
> Bei Verwendung der TM Libs ist drauf zu achten, dass das ein
> Privatprojekt ist. Es ist nicht jede neue Version kompatibel mit einer
> älteren. Tilen bastelt da täglich dran und bevior man sich was Neues
> einspielt sollte man das alte sichern.
Danke für den Hinweis.
>
> "Kennenlernen" wird man den STM32 damit allerdings nicht, das ist wie
> beim PC nur noch das API Interface.....

Das stimmt. Allerdings habe ich viele meiner M3 APIs für den F103 zum 
Teil auch selber gemacht und verwende die Peripheral library nur als 
Beispiel und Referenz am Anfang wenn ich die Funktion noch nicht kenne. 
Der wichtigste Teil der Library ist für mich die "stm32f10x.h" Datei mit 
allen Definitionen der Register. Das meiste mache ich dann mit eigenen 
Routinen und direkter SFR Zugriff. Für mich sind die Erstellung von APIs 
oft der interessanteste Teil der Anwendung;-) Ich möchte allerdings 
heuer auf den F429 umsteigen. Mit dem F407 habe ich auch schon ein paar 
Sachen gemacht.

Ich lernte ursprünglich mit der unbegrenzten Atollic Lite TruStudio 
Version. Die wurde spaeter auf 32KB begrenzt. Im Vergleich zu Atollic 
ist Cooxox leider doch sehr begrenzt. Allerdings, in aller Fairness, 
nicht schlecht wenn man nichts anderes hat. Aber man soll doch immer die 
Augen nach besseren Tools offen halten. Sonst würde mich noch Imagecraft 
ICC-V8 interessieren. Die arbeiten ziemlich intensiv daran.

Gruss,
Gerhard

von Peter S. (psavr)


Lesenswert?

>Ich möchte allerdings heuer auf den F429 umsteigen. Mit dem F407 habe ich
>auch schon ein paar Sachen gemacht.

Mit dem F429 scheint Coocox aber immer noch auf Abwegen zu sein, einer 
der Gründe, warum ich mit dieser IDE nicht mehr arbeiten möchte. Ferner 
stört es mich, dass Coocox zu viele Feautures und Menupunkte von Eclipse 
ausblendet und damit die ansich geniale IDE föllig verkrüppelt! (z.B. 
mehrer Projekte gleichzeitig nebeneinander offen haben...)

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?


von Gerhard O. (gerhard_)


Lesenswert?

Christian J. schrieb:
> Hier der Link:
>
> https://www.dropbox.com/s/9gizmnv8d2t2y25/stm32f429_text_scroller.zip?dl=0

Hallo Christian,

hat funktioniert. Nochmals herzlichen Dank für die Überlassung der 
Unterlagen.

Gruß,
Gerhard

von Christian J. (Gast)


Lesenswert?

Ok.Denk dran St-Link zu installieren und den Pfad richtig zu setzen, 
sonst kein Flashen möglich. Deinen Pfad kenne ich ja nicht.

Der String muss dann ungefähr so ausschauen.

C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK 
Utility\ST-LINK_CLI.exe

-P ${PROJECT_DIR}${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex

von Thomas S. (doschi_)


Lesenswert?

Hallo Christian,
Auch von mir vielen Dank!

Gruß Thomas

von Peter S. (psavr)


Lesenswert?

Super, ein Dankeschön auch von mir! :o)

von Christian J. (Gast)


Lesenswert?

Und? Konntet ihr was mit anfangen? Noch probleme oder so?

von Thomas S. (doschi_)


Lesenswert?

Christian J. schrieb:
> Und? Konntet ihr was mit anfangen? Noch probleme oder so?

Ja,
nach der (erfolgreichen) Installation von Em::Blocks stellt sich mir 
eine Anfängerfrage: Ist Dein Werk ein 'Template' oder 'UserTemplate'?
D.h. Installation (Win7) in
C:\Program Files (x86)\EmBlocks\2.30\share\EmBlocks\templates
oder
C:\Users\<user>\AppData\Roaming\EmBlocks\2.00\UserTemplates
(oder ?)

Wo setze ich den Pfad zu ST-LINK?

Danke schon mal vorab, und sorry für die dummen Fragen!

von Christian J. (Gast)


Lesenswert?

Thomas Sch. schrieb:
> ach der (erfolgreichen) Installation von Em::Blocks stellt sich mir
> eine Anfängerfrage: Ist Dein Werk ein 'Template' oder 'UserTemplate'?
> D.h. Installation (Win7) in
> C:\Program Files (x86)\EmBlocks\2.30\share\EmBlocks\templates
> oder

Nein, es ist kein normales "User Template". Die ganzen Einstellungen 
sind aber in der xml Datei abgespeichert, die im Projekt liegt. Es ist 
ein Projekt wo alle Libs Stand 3.2015 mit dabei sind, die man braucht 
und wo alle Einstellungen und Linkerscripte fertig gemacht sind. Mit 
Klick auf die ebp Datei müsste es sich öffnen und ein Mini Projekt 
sichtbar werden was sofort kompilierbar ist. Unter Verwendung von 
StdPeriph Libs und den Libs von Tilen Majerle wird der STM32 mehr oder 
weniger zum Arduino, allerdings auf Kosten dass man nur einen bestimmten 
Funktionssatz hat. Man kommt schnell auf Lösungen ohne in die Register 
rein zu müssen.

Der Pfad zu St Link wird unter Tools gesetzt und auch dort angepasst, 
damit man 1-Click Flashen und Debuggen kann.

von Christian J. (Gast)


Lesenswert?

PS:

Ich bin damals mit "Rowley Crossworks" gross geworden, was aller Kritik 
zum Trotze kein Klon von Eclipse ist und auch alle Libs des GCC von 
denen selbst geschrieben wurden. (Wie ich las gehen die auch gerichtlich 
gegen diese Behauptunngen vor). Rowley verwöhnt den User, alles läuft 
out of the box, zig Analyse Tools, sogar lint ist dabei, grafischer 
Memory Manager, UML Eingabe ... aber hat eben auch seinen Preis.

Und nach der erfolglosen Frickelei mit CooCox, was ohne Internet nicht 
läuft, was ewig braucht und wo man nie weiss was im Netz liegt und was 
auf der Platte bin ich dann über CodeBloxx zu EmBlocks gekommen. Auch 
EmIDE von Segger läuft genauso, unterstützt aber mehr Prozessoren als 
EmBlocks.

Und für "umsonst" ist EmBlocks echt klasse, natürlich kein uVision oder 
was von IAR aber dafür auch keine 5000 Mäuse teuer.

von Thomas S. (doschi_)


Lesenswert?

Christian J. schrieb:
> ..
> Die ganzen Einstellungen sind aber in der xml Datei abgespeichert,
> die im Projekt liegt.
> Es ist ein Projekt wo alle Libs Stand 3.2015 mit dabei sind, die man
> braucht
> und wo alle Einstellungen und Linkerscripte fertig gemacht sind. Mit
> Klick auf die ebp Datei müsste es sich öffnen und ein Mini Projekt
> sichtbar werden was sofort kompilierbar ist. ..
>
> Der Pfad zu St Link wird unter Tools gesetzt und auch dort angepasst,
> damit man 1-Click Flashen und Debuggen kann.

Danke!
Allerdings musste ich erst mal umsetzen, dass Du mit der xml-Datei die 
ebp-Datei meinst (wenn ich richtig liege..)

CooCox hat mich auch nicht wirklich überzeugt, dass fliegt wieder unter.

von Thomas S. (doschi_)


Lesenswert?

Hallo Christian,
nur zur Sicherheit:
einfach im Projektverzeichnis entpacken, und als Programm starten?

Danke, Thomas

von Christian J. (Gast)


Lesenswert?

Thomas Sch. schrieb:
> einfach im Projektverzeichnis entpacken, und als Programm starten?

Ähm.... das ist ein Projekt, ja. Was soll man da starten? Man kann auf 
das .ebp File doppelklicken, dann geht die IDE auf. Starten kann man nur 
das ELF File nach dem Flashen.

von Thomas S. (doschi_)


Lesenswert?

Das war von mir falsch formuliert (zu schnell gesendet).
Irritierend war das anfängliche "Template" in Verbindung mit den seitens 
Em::Blocks verwendeten Begriffen dafür.
Nochmals Danke!

von Thomas S. (doschi_)


Lesenswert?

Wer hat noch weitere Erfahrungen, Hinweise, Tipps, .. zum Paket von 
Christian?
(Beitrag "Re: Em::Blocks Template für STM32F429 Discovery (fix und fertig Stand 3.2015)")

Danke vorab.

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.