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
> Welches von den avr*.x-files ist denn das richtige? http://www.nongnu.org/avr-libc/user-manual/using_tools.html
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 ;-)
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.
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.