Forum: Compiler & IDEs Variable bestimmte Adresse zuweisen


von lex (Gast)


Lesenswert?

Hallo,

ich benutze Eclipse mit AVR PlugIn und das aktuelle Win AVR um einen 
ATmega1284P zu programmieren.

Ist es möglich, dem Compiler (oder Linker) mitzuteilen, eine globale 
Variable immer an die selbe Adresse zu legen?

Der GHS Compiler für die V850er von NEC unterstützt dies zB über 
Pragmas.

Hintergrund ist, dass eine Variable immer an einer festen Adresse zu 
finden ist um sie über ein Protokoll auszulesen oder zu verändern.
Bei einer größeren Änderung am Projekt und neu-compilieren könnte es 
sonst sein, dass die Varibale ihre Adresse verändert bekommt.

Viele Grüße,
lex

von Peter II (Gast)


Lesenswert?

lex schrieb:
> Hintergrund ist, dass eine Variable immer an einer festen Adresse zu
> finden ist um sie über ein Protokoll auszulesen oder zu verändern.

und wozu braucht du dafür eine konstante Adresse? du musst das Protokoll 
ja auch in dem µC implementieren und dort kannnst du doch einfach diese 
Variabel oder die Adresse der Variable verwenden.

von Roland H. (batchman)


Lesenswert?

Die technische Antwort: Wie bei einem Register: Ein Zeiger auf eine 
Adresse setzen, und dann dereferenzieren.

Die fachliche Antwort: Da schließe ich mich Peter II an. Die 
physikalische Adresse ist weder portabel, noch sollte sie Teil der 
öffentlichen Schnittstelle sein.

von (prx) A. K. (prx)


Lesenswert?

lex schrieb:

> Ist es möglich, dem Compiler (oder Linker) mitzuteilen, eine globale
> Variable immer an die selbe Adresse zu legen?

Auch wenn ich die Fragestellung etwas merkwürdig finde und der Eindruck 
aufkommt, es könne die falsche Frage sein:

Generell ist so etwas mit GCC möglich, indem man die Variable(n) in eine 
eigene Sektion legt und die im Linker-Script in einem bestimmten 
Speicherbereich platziert.

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.