mikrocontroller.net

Forum: Compiler & IDEs Warum ARM-Code nicht mit GCC compilieren?


Autor: Martin Neubauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute,

ich stehe im Moment vor einer echten Verständnisfrage, die mit einfach 
nur fertig macht.

Und zwar: Bis jetzt hab ich nur AVR's und früher mal PIC's programmiert, 
in ASM und C. Jetzt wollte ich mich mal umschauen, und bin auf die 
LPC2000-Serie von NXP gestoßen, sprich also ARM-Controller, die ich vl. 
auch nächstes Jahr bei meinem Maturaprojekt hernehmen kann ( muss noch 
den Lehrer überreden, weil er darüber nicht glücklich ist...zu 
kompliziert?).

Nun hab ich mich reingelesen, wie so alles bei diesen Controller ab 
geht, und was man braucht (wie z.B. Startup-Code, was ja bei den Avr ein 
Fremdwort ist).

Jetzt wollte ich von anderen Projekten aus dem Netz, "fertige" Programme 
für z.B. den LPC2106 compilieren, was aber nicht ging.

Lange rede kurzer Sinn: Warum brauch extra eine neue Toolchain 
(arm-elf-gcc?), wenn doch unter Linux der gcc verfügbar ist?

Kann mir das wer technisch erklären, (also die klassische Frage, nach 
dem warum) bzw. mir Quellen zum Lesen linken?

Ich hoffe ihr könnt weiterhelfen...sonst schlafe ich ganz unruhig - ihr 
kennt das vl.

Liebe Grüße

Martin

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ja. Der arm-elf-gcc ist doch ein GCC. Nur hat ja der ARM einen 
anderen Befehlssatz als z.B. dein PC. Darum brauchst du einen 
Cross-Compiler, also eine Toolchain, die auf dem PC läuft, aber Code für 
den ARM generiert.
Das ist ja bei anderen Mikrocontrollern auch nicht anders, nur ist es 
dir da anscheinend nicht aufgefallen.

  Wiesi

Autor: Martin Neubauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, Wiesi für deine schnelle Antwort!

Das dachte ich mir auch.

Was ich dann aber noch immer nicht ganz verstehe..wieso bietet mir der 
gcc die Option -march=arm7tdmi an, wenns sowieso nicht geht? Irgendwie 
schein ich da einen Denkfehler drinnen zu haben, oder die ganze Struktur 
noch nicht zu verstehen!

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann ich dir auch nicht so genau sagen, würde micht auch 
interessieren. Ich denke, dass der GCC immer nur für eine 
Zielarchitektur compiliert wird. Nur ist das oft eine ganze Familie. 
z.B. ARM7, ARM9, mit/ohne Thumb Befehlssatz.

Auf dem PC ist das ähnlich. Da kann man mti -march z.B. angeben, ob man 
für i386, i486, pentium4, ... compiliert, sodass die Etweiterungen der 
entsprechenden CPUs auch genützt werden.

Autor: Frank Lorenzen (florenzen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Neubauer wrote:
> Danke, Wiesi für deine schnelle Antwort!
>
> Das dachte ich mir auch.
>
> Was ich dann aber noch immer nicht ganz verstehe..wieso bietet mir der
> gcc die Option -march=arm7tdmi an, wenns sowieso nicht geht? Irgendwie
> schein ich da einen Denkfehler drinnen zu haben, oder die ganze Struktur
> noch nicht zu verstehen!

Bietet er sie dir denn wirklich an? Wo hast du dieses Angebot her? Aus 
der Manpage? Falls ja solltest du beachten, daß die gcc-manpage Optionen 
nach Target-Platform listet, d.h. Optionen die in mehreren Targets 
unterstützt werden kommen mehrfach vor. Die Option -march=arm7tdmi, die 
es übrigens nicht gibt, du meintest vermutlich -mcpu=arm7tdmi, findet 
sich in "ARM Options" wo sie ja auch Sinn macht. Unter einem i386-gcc 
angegeben führt sie vermutlich nur zu einem Fehler, dafür bietet der 
x86-gcc aber i386, i486, i586|pentium, pentium-mmx, i686|pentiumpro, 
pentium2, usw. an.

gruss
f

Edit: Kleine Ungenauigkeit.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.