Forum: Compiler & IDEs Falsche Speicheraufteilung in .map-File ?


von Martin (Gast)


Lesenswert?

Hallo,

Wie sind die Werte in der Origin Spalte zu verstehen. Nach meinem 
Verständnis sind das Anfangsadressen des jeweiligen Speicherbereichs.

Memory Configuration

Name             Origin             Length             Attributes
text             0x00000000         0x00100000         xr
data             0x00802000         0x0000ffa0         rw !x
eeprom           0x00810000         0x00010000         rw !x
fuse             0x00820000         0x00000400         rw !x
lock             0x00830000         0x00000400         rw !x
signature        0x00840000         0x00000400         rw !x
default        0x00000000         0xffffffff


Ich verwende einen AT xmega128 mit "nur" 8K RAM ohne ext RAM. Daher 
wundere ich mich über die großen Adresswerte.
Daher meine Fragen:

Ist das ein Einstellungsfehler?
Falls nicht: Warum sind die Adressen so groß?

Gruß Martin

von Rolf M. (rmagnus)


Lesenswert?

Martin schrieb:
> Ist das ein Einstellungsfehler?

Nein.

> Falls nicht: Warum sind die Adressen so groß?

Weil der AVR mehrere separaten Adressbereichen hat, die der Linker so 
nicht handhaben kann. Deshalb muß man die alle für den Linker in einenen 
Adressraum zusammenfassen. Man rechnet also einfach immer Offsets drauf, 
die auf jeden Fall groß genug sind, damit sich die Adressräume nicht in 
die Quere kommen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Martin schrieb:

> Daher wundere ich mich über die großen Adresswerte.

Die avr-binutils linearisieren den Speicher.

von Martin (Gast)


Lesenswert?

Alles klar! Vielen dank

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.