Hallo an alle! Ich versuche gerade ein bisschen mit Make-Files zu experimentieren - was das betrifft, bin ich leider noch Anfänger. Als Vorlage habe ich ein Make-File, welches ursprünglich von einem Beispiel auf der Yagarto-Page stammt. Nun, soweit ist alles gut, ich kann meine gewünschten C-Sources kompilieren und alles läuft prima. Nur wenn ich versuche eine Assembler-Datei (vectors.s) miteinzubeziehen, dann kommt folgender Fehler: make: ***[source01_arch/vectors.o] Error1 Ich habe bereits gelesen, dass das wohl bedeutet, dass es die Datei "vectors.o" nicht gefunden werden kann. In meinem Fall müsste das ja nun heißen, dass vectors.s gar nicht kompiliert wurde? Ich suche nun schon seit ein paar Tagen den Fehler, da mir aber leider die nötige Erfahrung fehlt, komm ich leider nicht weiter...deswegen versuch ich es hier :-) Ich habe das Make-File mal im Anhang angebracht. Viele Grüße
Hast Du auch einen Output von einem Make Durchgang mit vectors.s? Dann sieht man eher was er gemacht hat und wo er abgebrochen hat.
Lass das Makefile bitte mal mit der "-d" Option laufen und poste den Output. Grüße Andreas
Oh sorry, daran habe ich gar nicht gedacht und hab auch total vergessen da mal nachzusehen ^^ Output: --- make all arm-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -g -gdwarf-2 -Wa,-amhls=src_01_arch/vectors.lst src_01_arch/vectors.s -o src_01_arch/vectors.o cc1: error: target CPU does not support ARM mode make: *** [src_01_arch/vectors.o] Error 1 ---
Ich verstehe nich, warum die Meldung kommt, dass die Target-CPU den ARM-Mode nicht unterstützt. In einem anderen Projekt, hatte ich das gleiche Target und da funktionierte alles einwandfrei? Allerdings hatte ich da nichts mit Assembler-Dateien vor.
Lukas R. schrieb: > Ich verstehe nich, warum die Meldung kommt, dass die Target-CPU den > ARM-Mode nicht unterstützt. Weil ein Cortex-M nun einmal keinen ARM-Mode unterstützt, sondern nur Thumb-Mode. It's not a bug, it's a feature. Mit anderen Worten: du brauchst für einen Cortex-M anderen Assemblercode als für einen klassischen ARM.
Mhh, das besagte Assembler-File ist extra für Cortex-M-Architektur geschrieben worden (aus der HAL des freien OS ecos) ==> thumb2
Kann es sein, dass du noch -mthumb (oder -mthumb2?) mit in den Assembleroptionen angeben musst? Btw., die Namenskonvention sieht für Assemblerdateien, die noch durch den Präprozessor geschickt werden sollen, ein großes .S als Suffix vor. Wenn man dies so auf der Kommandozeile angibt, dann braucht man auch das «-x assembler-with-cpp» nicht, das ist dann implizit.
Vielen Dank - gut zu wissen :) Heißt also, es ist ein Unterschied, ob ich .s oder .S im Make-File verwende, richtig? Also case-sensitiv. Weißt du zufällig ein Tutorial für Make-Files? Bzw. eine Art Quick-Reference, sofern es so etwas gibt? -thumb2 schluckt er wohl nicht...
Lukas R. schrieb: > Heißt also, es ist ein Unterschied, ob ich .s oder .S im Make-File > verwende, richtig? Also case-sensitiv. Ja, wobei es dem make selbst völlig egal ist. Es ist der Compiler- Treiber (also der «arm-none-eabi-gcc» in diesem Falle hier), der die Argumente der Kommandozeile auswertet und danach sortiert, welche Kette von Aktionen er ausführen muss.
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.