Forum: Compiler & IDEs GCC in Keil mit STM32F4


von Max M. (max_m1)


Lesenswert?

Hallo Leute,

ich habe ein C-Programm und möchte es gerne via Keil_uvision 
modifizieren und auf einen STM32F4 hochladen.

Leider wurde das C-Programm vermutlich in einer anderen IDE geschrieben 
und GCC als Compiler verwendet wodurch es auf Keil nicht funktioniert.

Es gibt eine Anleitung zur Verwendung von GCC in Keil aber leider nur 
für dem Cortex M3:
http://m8051.blogspot.dk/2012/10/using-gcc-in-keil-best-of-both-worlds.html

Weiß jemand wie das beim Cortex M4 (STM32F4) geht? Leider sind einige 
Dateien beim M4 anders, wodurch ich das obige verlinkte Beispiel nicht 
einfach so übernehmen kann.


Vielen Dank.

: Verschoben durch Moderator
von Dennis R. (dennis_r93)


Lesenswert?

Der M4 Prozessor ist mehr oder weniger ein M3 mit DSP Erweiterung und 
optionaler FPU. Die STM32F4 haben eine FPU.

Was sich bei dir Dabei ändert ist die Peripherie auf dem 
Mikrocontroller, also das um den Kern drum herum.
Der Flash hat eventuell eine andere Größe, die Taktverwaltung 
unterschiedet sich. etc, etc.
Was sich für dich dabei ändert ist, dass anstatt der Libs für den 
STM32F10x musst du die Libs für den STM32F4xx verwenden.

Das könnte dann schon alles sein.

von Dr. Sommer (Gast)


Lesenswert?

Geheimtip: Der GCC und kompatible IDEs sind gratis. Verwende doch 
einfach eclipse oder emBlocks und spare dir den Aufwand mit uVision...

von markus (Gast)


Lesenswert?

Dennis R. schrieb:
> Was sich bei dir Dabei ändert ist die Peripherie auf dem
> Mikrocontroller, also das um den Kern drum herum.

Hallo,
vielen Dank erstmal für deine Antwort.

Das mit der unterschiedlichen stdperiph hab ich mir auch schon gedacht.
Leider gibt es den Ordner "CM3" im M4-stdperiph-Ordner gar nicht, 
wodurch ich die verlinkte Anleitung aus meinem ersten Beitrag nicht 
einfach übernehmen kann:

Here you need to extract the zip file stm32f10x_stdperiph_lib.zip into 
the directory "STM32F10x_StdPeriph_Lib_V3.5.0" from which we would be 
copying the following directories:

    Copy "Libraries\CMSIS\CM3\CoreSupport" => "wsSTM32\CMSIS"
    Copy "Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x" => 
"wsSTM32\STM32F10x"
    Copy "Libraries\STM32F10x_StdPeriph_Driver" => 
"wsSTM32\STM32F10x_StdPeriph_Driver"
    Copy "Project\STM32F10x_StdPeriph_Template" => 
"wsSTM32\STM32F10x_StdPeriph_Driver"

Unterschied zu Cortex M4:
- Es gibt keinen CM3-Ordner :-(

von Steffen R. (steffen_rose)


Lesenswert?

Du hast doch bereits ein fix und fertiges Projekt. Du willst doch bloß 
die IDE wechseln. Du schreibst, du willst noch nicht einmal auf Realarm 
wechseln, sondern weiterhin den gcc nutzen.

Das heißt, du nimmst genau die Dateien die du hast und nicht mehr.
Du musst nur die IDE so einstellen, dass der gcc genommen wird und dann 
die passenden Optionen setzen.

Offen bleibt dabei natürlich, warum dieser Aufwand?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

besserer Debugger?

von Dr. Sommer (Gast)


Lesenswert?

markus schrieb:
> Here you need to extract the zip file stm32f10x_stdperiph_lib.zip

Das ist , wie man am Dateinamen erkennt, die Lib für den STM32F1! Du 
brauchst aber die für den STM32F4...

Random .. schrieb:
> besserer Debugger?
Was kann der denn besser als zB GDB mit JLink?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Dr. Sommer schrieb:
> Random .. schrieb:
>> besserer Debugger?
> Was kann der denn besser als zB GDB mit JLink?

mehr Möglichkeiten beim Debuggen durch die IDE. Ggf. Trace / SWO.

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Random .. schrieb:
> mehr Möglichkeiten beim Debuggen durch die IDE.
Ah, das erklärt natürlich alles.
> Ggf. Trace / SWO.
Kann eclipse auch.

von Steffen R. (steffen_rose)


Lesenswert?

Random .. schrieb:
> besserer Debugger?

Die Gründe für seinen Wechsel kann ja nur Markus nennen. Spekulationen 
bringen uns da nur wenig weiter.

Und wenn er sich so schwer tut ein Projekt unter Keil zum Laufen zu 
bekommen kann ich mir nicht so recht vorstellen, dass es ihm momentan 
vordringlich um den Debugger geht.

Aber ja, ich mag den Debugger vom Keil auch lieber als den gdb.

von fürn Hugo (Gast)


Lesenswert?

Warum ist die Anleitung nur für Cortex M3 anwendbar und nicht für Cortex 
M4?
Vermutlich geht es um die CMSIS Files oder?
Ist dein "Programm" schon fix fertig für den STM32F4?

Normalwerweise erzeugst du für deinen STM32F4 ein neues Projekt, dann 
werden deine Startupfiles angelegt.
Das kannst du auch mit CooCox machen, einfach eine GCC Toolchain 
herunterladen und in CooCox den Pfad dort hin einstellen.

von Nop (Gast)


Lesenswert?

Man kann natürlich auch einfach GCC so nehmen und sich ein Buildscript 
erstellen, dann ist man überhaupt nicht mehr auf die Befindlichkeiten 
irgendwelcher IDEs angewiesen, und man kann auch in 10 Jahren noch das 
Binary erzeugen. Und auf jedem Betriebssystem (ggf. Batchfile in 
Shellsript eben umwandeln).

Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch 
können.

Ist natürlich blöd, wenn vorher eine andere Klickibunt-Umgebung 
verwendet wurde, die z.B. statt eines vernünftigen Linkerscriptes einen 
Zoo von Linker-Einstellungen über diverse Dialogboxen verteilt und 
DARAUS dann erst die Linkereinstellungen selber zusammengefummelt hat.

von Max M. (max_m1)


Lesenswert?

Vielen Dank euch allen für die Antworten.

Das Projekt hab ich von Github heruntergeladen.
Es beinhaltet diverse .c und .h Dateien welche mittels eines 
"makerfiles" auf den STM32F4 hochgeladen werden können.

Ich kann die einzelnen .c und .h files im Editor editieren und mittels 
Ubunut-Eingabekonsole auf den STM laden.

fürn Hugo schrieb:
> Warum ist die Anleitung nur für Cortex M3 anwendbar und nicht für Cortex
> M4?
> Vermutlich geht es um die CMSIS Files oder?
> Ist dein "Programm" schon fix fertig für den STM32F4?

ja, wie gesagt es läuft unter Ubuntu mit dem "Makefile"
>
> Normalwerweise erzeugst du für deinen STM32F4 ein neues Projekt, dann
> werden deine Startupfiles angelegt.

Ja, das dachte ich mir auch. Ganz so einfach ist es leider jedoch nicht.
Selbst wenn ich den Debugger ändere, kann Keil es nicht richtig 
kompilieren:
http://www.keil.com/arm/gnu.asp

von Dr. Sommer (Gast)


Lesenswert?

Max M. schrieb:
> Es beinhaltet diverse .c und .h Dateien welche mittels eines
> "makerfiles" auf den STM32F4 hochgeladen werden können.

Ja dann mach das doch so. Makefiles funktionieren auch unter Windows.

von 2⁵ (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Ja dann mach das doch so. Makefiles funktionieren auch unter Windows.

Solange der Ersteller intelligent genug war, keine absoluten Pfade 
reinzubauen.

https://launchpad.net/gcc-arm-embedded/+download

http://gnuwin32.sourceforge.net/packages/make.htm

von Bernd K. (prof7bit)


Lesenswert?

2⁵ schrieb:
> http://gnuwin32.sourceforge.net/packages/make.htm

In installiere für sowas gerne Cygwin (und dessen make Paket). Zwei 
Gründe: Erstens kommt dann auch gleich eine shell mit und auch die 
anderen wichtigen Tools wie mkdir und rm, da laufen dann auch Makefiles 
die sonst nur unter *ix laufen würden und man spart sich einen Haufen 
Extrawürste und Verrenkungen wenn man ein Script oder ein Makefile in 
beiden Welten gleichermaßen benutzen können will. Zweitens: Früher oder 
später will man auch unter Windows mal die Schmerzen abstellen und 
endlich eine gescheite Konsole benutzen können, also wird man es eh 
irgendwann installieren.

von Dr. Sommer (Gast)


Lesenswert?

Bernd K. schrieb:
> In installiere für sowas gerne Cygwin

Andere Möglichkeit: Bei Gnu arm eclipse gibt's einen Installer der 
busybox + make installiert (völlig unabhängig von eclipse selbst). Damit 
müssten sich die meisten makefiles ausführen lassen (auf jeden Fall die 
von eclipse generierten). Der Vorteil ist hier dass die Installation 
super simpel und automatisch geht und das Paket winzig ist.
Mit dem gnuwin32 make hatte ich das Problem, dass es bei manchen 
makefiles mit der -j Option abstürzt. Die diversen Alternativen (cygwin, 
mingw, ...) sind alle recht groß und nicht so einfach zu installieren.

von Dr. Sommer (Gast)


Lesenswert?

Bernd K. schrieb:
> Zweitens: Früher oder später will man auch unter Windows mal die
> Schmerzen abstellen

Die Powershell ist tatsächlich ganz brauchbar, aber halt anders als 
POSIX Shells.

von Steffen R. (steffen_rose)


Lesenswert?

Nop schrieb:
> Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch
> können.

Naja, speziell damit hat sie eher Probleme.

von Keil-User (Gast)


Lesenswert?

Steffen R. schrieb:
> Nop schrieb:
>> Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch
>> können.
>
> Naja, speziell damit hat sie eher Probleme.

eigentlich nicht, man braucht pro CPU (M3, M4, ..) nur ein einziges 
Keil-Projekt (wir verwenden derzeit uVision3 oder uVision4 für 100'te
verschiedner Hexfiles) dem man das Hex-File unterschiebt.

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.