www.mikrocontroller.net

Forum: Compiler & IDEs [AVRGCC] Konstante an fest definierte Adresse im Flash


Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ein Linkerskript schreiben, das ein bestimmtes Symbol an eine 
feste Adresse legt.

Autor: Warum geht das Einloggen nicht? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Gruß,
Chris

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-) ).

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
K, vielen Dank, klappt alles =)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.