Fehlermeldung bei WinARM

Gast #641208
Lesenswert?

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
Persönliche Seite #641274
Lesenswert?

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
Persönliche Seite #641337
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren