AVR51 Linker Script

OP #4543406
Mal eine Frage zum Linker Script für die AVR51-Gruppe:

In der MEMORY-Section wird folgendes definiert (exemplarisch aus dem 
avr51.xn-Linker Script):
1
MEMORY
2
{
3
  text   (rx)   : ORIGIN = 0, LENGTH = 128K
4
  data   (rw!x) : ORIGIN = 0x800100, LENGTH = 0xff00
5
  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
6
  fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
7
  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
8
  signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
9
}

Für meinen ATMega128RFA1 stimmt alles, bis auf .data. Das Datenblatt 
sagt, der Datenbereich soll ab 0x800200 starten (was er beim Linken auch 
macht, da bei den GCC-Optionen u.a. automatisch (?) "-Tdata 0x800200" 
gesetzt wird). Aber die angebene Größe stimmt natürlich nicht, 0xFF00 
wären 65280 Bytes, also 256 kleiner als 64K (wohl wegen Startadresse 
0x800100 und den dort benötigten 0x100 für SFR, die aber beim 
ATMega128RFA1 sogar 0x200 ausmachen und damit müsste LENGTH 0xFE00 = 
0x10000 - 0x200 (65024 = 64K - 512) sein, gäbe es überhaupt 64K RAM.

Und damit komme ich zum Kern meiner Frage, die ich mir auch nach 
Durchsicht des Listings und der Scripts nicht selbst beantworten konnte:

Wird die Größe des Speichers, ähnlich wie auch -Tdata 0x800200 bei Wahl 
von -mmcu=atmega128rfa1 korrekt festgesetzt, obwohl im Linker Script 
annähernd 64K angegeben werden? Der ATMega128RFA1 hat nämlich "nur" 16K 
RAM (Edit: von 0x800200 bis 0x8041FF)! Wo liegt der Stack und wie groß 
ist er? (Edit: bis 0x8041FF, aber wie groß? Vermutlich bis zum 
Heap-Start?)

Im Beitrag ""-mmcu="-Parameter bei AVR-GCC?" schreibt Autor Johann L. 
(gjlayde) am 12.02.2009 16:58 folgendes über den Effekt des Setzens von 
-mmcu:

> Intern richtet avr-gcc die Codeerzeugung nach den Fähigkeiten des
> Targets aus, die sich zB an den oben beschriebenen Eigenschaften
> orientieren.

Daraus würde ich annehmen (und auch daraus, dass hier keine Probleme 
dazu im Forum vermerkt waren), dass die Angabe von LENGTH irrelevant ist 
und vom Compiler/Linker automatisch für die mit -mmcu angegebene CPU 
angepasst wird???

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.