Hallo zusammen! Ich nutze WinARM für einen LPC2103. Ich verwende angepasste Linkerskripte, d.h. ich habe die Skripte eines LPC2106 verwendet und die Speichergrößen entsprechend angepasst. Als Startup-Code verwende ich den, der bei WinARM dabei war (crt0.s). Wenn ich jetzt den Build-Befehl aufrufe, erhalte ich folgende Fehlermeldung, aus der ich leider nicht so recht schlau werde: Linking: Test.elf arm-elf-gcc -mthumb -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -Os -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=crt0.lst -I./inc -I./conf -MD -MP -MF .dep/Test.elf.d crt0.o Test.o --output Test.elf -nostartfiles -Wl,-Map=Test.map,--cref -lc -lnewlib-lpc -lm -lc -lgcc -lstdc++ -TLPC2103-ROM.ld c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/bin/ld.exe: address 0x600 of Test.elf section .stack is not within region RAM collect2: ld returned 1 exit status make.exe: *** [Test.elf] Error 1 > Process Exit Code: 2 > Time Taken: 00:01 Vielleicht kann mir jemand sagen, wo ich den Fehler gemacht habe? Habe ich evtl was im Linkerskript vergessen? Bin für jeden Tipp dankbar! MFG Jansus
Ein fehlerhaftes Linkercontrolscript ist eine gute Vermutung. Wie sieht deins aus? Speziell der Abschnitt MEMORY interessiert und was darin als Startadresse (!) für ram bzw. RAM eingetragen ist. Sowie, ob darin der Abschnitt für .stack in dieser Art vorhanden ist: http://en.mikrocontroller.net/topic/101678 Es gibt im Netz Linkercontrolscripte ohne den Abschnitt und welche mit problematischem Abschnitt, der in Verbindung mit leerem DATA/BSS Sektionen ähnliche Fehler produziert: http://en.mikrocontroller.net/topic/67766
Hallo! Super! Vielen, vielen Dank! Es funktioniert! Werde in Zukunft auch die englischsprachigen Seiten durchforsten. MFG Jansus
... ich vergaß! .stack ALIGN(256) : { . = ALIGN(256); // Diese Zeile hat gefehlt . += STACK_SIZE; PROVIDE (_stack = .); } > RAM
Ach Mist! Zu früh gefreut! Hatte die Linkerskripte für den LPC2106 noch drin. Mit denen hat's natürlich geklappt. Habe mal mein Linkerskript angehängt.
Das mit deinem Anhang hat nicht geklappt.
1 | .stack ALIGN(256) : |
2 | { |
3 | . = ALIGN(256); // Diese Zeile hat gefehlt |
4 | . += STACK_SIZE; |
5 | PROVIDE (_stack = .); |
6 | } > RAM |
ist doppelt gemoppelt bzw. enthält einen Rest des alten, problematischen Skripts.
1 | .stack : |
2 | { |
3 | . = ALIGN(256); // Diese Zeile hat gefehlt |
4 | . += STACK_SIZE; |
5 | PROVIDE (_stack = .); |
6 | } > RAM |
sollte gehen.
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.