Forum: Compiler & IDEs at90s2313: region text is full -> text/data erweitern Linker-Skript?


von Rupplyn (Gast)


Lesenswert?

Hallo zusammen,

ich habe einen at90s2313-Softcore auf meinem Spartan am laufen; ROM kann 
ich bis zu 16k aufbohren. RAM bis zu 14k.
Dies möchte ich nun dem Linker (Linker-Script) mitteilen. Kenn mich 
dahingehend allerdings kaum aus...

Die Linker-Scripts von WinAVR sind ja im "avr\lib\ldscripts" als *.x 
Datei abgelegt(?). Welches von den avr*.x-files ist denn das richtige?
Eigentlich müsste ich das doch auch im makefile sehen. Allerdings finde 
ich hier nur diesen Eintrag. (makefile mit MFile).

#---------------- Linker Options ----------------
#  -Wl,...:     tell GCC to pass this to linker.
#    -Map:      create map file
#    --cref:    add cross reference to  map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
#LDFLAGS += -T linker_script.x

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Welches von den avr*.x-files ist denn das richtige?

http://www.nongnu.org/avr-libc/user-manual/using_tools.html

von Rupplyn (Gast)


Lesenswert?

MEMORY
{
  text      (rx)   : ORIGIN = 0, LENGTH = 8K
  data      (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0
  eeprom    (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
  fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
  signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
}

-> reicht es dann wenn ich hier text von 8k auf beipsielsweise 32k 
umstelle oder muss ich noch was anderes drehen?

So einfach funktioniert's leider nicht ;-)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ist das das Original des Linkerskripts (welches?) oder bereits deine 
Änderung?

Ich frage, weil ich keine lokale Kopie an der Hand habe, in der ich 
nachsehen könnte.

Mir kommt z.B. der Wert 8K spanisch vor. Soweit ich weiss, hatte der 
AT90S2313 nur

Flash-Programm-Speicher:   2 kByte
EEPROM-Datenspeicher:    128  Byte
SRAM-Datenspeicher:      128  Byte
(http://www.roboternetz.de/wissen/index.php/AT90S2313)

Mir fehlt auch der Teil im Linkerskript, anhand dessen der Linker die 
einzelnen Sektionen auf die Speicherabschnitte aufteilt bzw. bestimmte 
Adressen für Kopieraktionen .data aus ROM nach .data ins SRAM berechnet, 
die dann vom Initcode benutzt werden.

von holger (Gast)


Lesenswert?

>Mir kommt z.B. der Wert 8K spanisch vor. Soweit ich weiss, hatte der
>AT90S2313 nur

Was der hat steht in seinem Headerfile.
Vieleicht kann man da ein wenig manipulieren.

von (prx) A. K. (prx)


Lesenswert?

Der Befehlssatz von AVRs mit bis zu 8KB ROM kann nur 8KB ROM 
adressieren. Compiler und Assembler wissen und nutzen das. Daher muss 
bei mehr ROM der Compiler entsprechend abweichend vom '2313 eingestellt 
werden. Es geht also nicht nur um das Linker-Sctipt.

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
Noch kein Account? Hier anmelden.