[AVRGCC] Konstante an fest definierte Adresse im Flash

OP #564118
Lesenswert?

Hi alle,

weis zufällig jmd, wie man dem AVR-GCC sagen kann, dass er eine 
bestimmte Konstante an eine bestimmte Adresse im Flash legt? Also zB 
nen Byte an die letzte Adresse im Flash? Ich kann zwar Werte ohne 
Probleme in den Flash legen, allerdings werden die dann ja bei jedem 
Compilieren an ner andren Adresse landen können, und das darf nicht sein 
=)
Wäre für jeden Hinweis dankbar.

Grüße,
Chris
Gast #564301
Lesenswert?

1
uint8_t meine_var __attribute__ ((section (".meine_section"))) = 0x01;

Beim Linker-Aufruf kannst Du dann der Section "meine_section" eine feste 
Adresse geben. Die Syntax hab ich gerade nicht auswendig, steht aber in 
der gcc-Doku.

Falls Du AVRStudio benutzt: nimm die neueste  (vom Jan. 2007?).
In den älteren Versionen wurden so angelegte Sectionen nicht ins Flash 
geladen.

Viele Grüße, Stefan
#564366
Lesenswert?

Christian Illy wrote:
> Danke euch beiden =)
> Noch eine Frage dazu: Beachtet der gcc dabei dann auch, dass an der
> jeweiligen Adresse schon was liegt und versucht dementsprechend nicht
> mehr da noch normalen Code hinzulegen? Also spart er quasi all diese so
> definierten Stellen aus?

Wenn Du mit sections arbeitest, dann hast Du dieses Problem nicht; der 
Compiler/Linker erledigt das für Dich.

Wenn Dein Programmspeicher sich mit Deiner neuen section überlappt, dann 
gibt es einen Linker-Error (ja, man kann Fehlermeldungen auch positiv 
sehen ;-) ).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren