Forum: Compiler & IDEs ARM Cortex-M4 --- Compilieren/Linken ---


von Zero V. (Firma: Angestellter/Freelancer) (gnd)


Lesenswert?

Hallo liebe Leser,

ich brauche eure Hilfe um mein Projekt zu kompilieren/linken.
Also ich besitze folgende Dateien in meinem Ordner:
-main.c
-startup.S
-linkerskript.ld
-gpio.h  //Header mit allen µC-spezifischen Defines

-core_cm4.h
-core_cm4_simd.h
-core_cmInstr.h
-core_cmFunc.h


Die ARM-Toolchain ist eingerichtet (arm-none-eabi-gcc-4.7.2)!
Ich habe einen Cortex-M4, also nehme ich die Einstellungen:
>>arm-none-eabi-gcc-4.7.2 -mcpu=cortex-m4 -mthumb -I./ -c -o main.o main.c
>>arm-none-eabi-gcc-4.7.2 -mcpu=cortex-m4 -mthumb -I./ -c -o startup.o startup.o

Und nun weiß ich nicht wie ich den Linker korrekt aufrufe mit allen 
Extras!
Bzw. ist oben schon was falsch?

PS: Gibt es gute Literatur/Websites zum Thema gcc bzw. ARM?

von hp-freund (Gast)


Lesenswert?

Ich würde lieber gleich von Anfang an ein Makefile benutzen.

http://fun-tech.se/stm32/OlimexBlinky/mini.php

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

James Bonddraht schrieb:

> Die ARM-Toolchain ist eingerichtet (arm-none-eabi-gcc-4.7.2)
> Ich habe einen Cortex-M4, also nehme ich die Einstellungen:
>>arm-none-eabi-gcc-4.7.2 -mcpu=cortex-m4 -mthumb -I./ -c -o main.o main.c
>>arm-none-eabi-gcc-4.7.2 -mcpu=cortex-m4 -mthumb -I./ -c -o startup.o startup.o

Nö:

>>> ... -c -o startup.o startup.S

> PS: Gibt es gute Literatur/Websites zum Thema gcc bzw. ARM?

Für GCC list du das GCC-Manual.  Auch wenn du es nicht "gut" findest ist 
es ein Muss:

http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/

Zur Angabe des ld-Skripts beim Linker findest du dann unter "3.13 
Options for Linking" -T:
1
arm-none-eabi-gcc-4.7.2 -mcpu=cortex-m4 -mthumb -o main.elf startup.o main.o -Tlinkerskript.ld ...

von Zero V. (Firma: Angestellter/Freelancer) (gnd)


Lesenswert?

Johann L. schrieb:
> Für GCC list du das GCC-Manual.  Auch wenn du es nicht "gut" findest ist
> es ein Muss:

Danke für deine Antwort.

Die Doku finde ich schon sehr informativ, nur leider kann man nicht 
abschätzen welche Optionen nur für den Spezialisten sind und welche ich 
benötige. Eine Übersicht über häufige Optionen würde ich begrüßen.

von Der Unwissende (Gast)


Lesenswert?

Hallo,
ich arbeite mich im Moment auch tiefer in die Materie ein.
Ich würde dir empfehlen entweder eclipse mit GNUARM, oder atmel studio 6 
zu installieren, dort kannst du jeweils schauen wie die das build 
aufrufen und welche optionen als optional wichtig angesehen werden.

bei eclipse projekt erstellen dann unter proberties C/C++ buld unter 
settings einfach mal reinschauen.
ATMEL STUDIO 6 weiß ich es gerade nicht hab ich an der Arbeit.

von Fritz (Gast)


Lesenswert?

Schon einmal daran gedacht eine IDE zu verwenden?
Da brauchst du dich nicht mit linkerscripts und diversen herumschlagen.
Gibts natürlich kommerzielle (teure), aber auch z.B. eine freie.
Nämlich CooCox IDE, ist gerade eine neue Version herausgekommen, die den 
STM32F4xx besser unterstützt.

von Zero V. (Firma: Angestellter/Freelancer) (gnd)


Lesenswert?

Jetzt hab ich obiges ausgeführt und folgende Fehler-Meldungen:
cannot find crti.o: No such file or directory
cannot find crtbegin.o: No such file or directory
cannot find -lgcc

Woher bekomme ich die Object-Files?

von Oliver (Gast)


Lesenswert?

Diese Dateien denkt sich der Compiler nicht selber aus, die Referenzen 
darauf stehen vermutlich im linkersscript. Da solltest du mal dort 
nachschauen, wo du das script her hast.

Oliver

von hp-freund (Gast)


Lesenswert?

Ich fürchte so als "Quereinstieg" wird das nichts.
Am Besten arbeite erst einmal meinen link von oben durch.

Alternativ ist evtl. wirklich eine IDE die bessere Wahl für dich.

Woher hast Du die Dateien in deinem Verzeichnis? Da war sicher noch 
mehr.

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.