www.mikrocontroller.net

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


Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Welches von den avr*.x-files ist denn das richtige?

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

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.