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
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
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!
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.