at90s2313: region text is full -> text/data erweitern Linker-Skript?

Gast #1018511
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
Gast #1018829
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 ;-)
Persönliche Seite #1019007
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.
Gast #1019048
>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.
#1019073
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.