Constants im AVR Flash

OP #308975
Lesenswert?
• ▲
▼
Hallo,

vielleicht kann mir jemand bei folgendem Problem weiterhelfen:

Ich möchte Fonts zur Ansteuerung des LCD als Konstanten im Flash
ablegen. Das funktioniert auch, nur habe ich keine Möglichkeit mehr im
Programm auf die Konstanten zuzugreifen, wenn ich einen Pointer auf die
Konstante zeigen lasse. Der Pointer zeigt zwar auf die richtige Adresse
im code memory, aber im Debugger sehe ich immer falsche oder gar keine
Werte. Ich habe es nun schon mit Codevision, ImageCraft und IAR
versucht - immer ohne Erfolg und bin langsam am verzweifeln ...

hier das Codebeispiel (mit IAR for AVR)
typedef struct
{
  unsigned char FirstChar[2];
  unsigned char LastChar[2];
  unsigned short FirstCharNdx[2];
  unsigned short IllegalCharNdx;
  unsigned char XSize, YSize;
  unsigned char TopLine, MidLine, BaseLine;
  unsigned char Cursor1, Cursor2;
  unsigned char Underline1, Underline2;
  unsigned char BoxWidth;
  unsigned char PsSpace;
  unsigned char LineSize;
}
GuiLib_FontRec;

typedef GuiLib_FontRec *GuiLib_FontRecPtr;

__flash GuiLib_FontRec Font_Text31 =
{
  {65,1},
  {70,0},
  {0,0xFFFF},
  6,
  7,12,
  3,5,9,
  11,11,
  11,11,
  6,
  1,
  2
};

 __flash GuiLib_FontRec * GuiFont_FontList1[2] = {
     (GuiLib_FontRecPtr)&Font_Text31,
     (GuiLib_FontRecPtr)&Font_Text31 };

int main(void)
{
 Gulib_FontRecPtr Font;
 Font = GuiFont_FontList1[1];
   for (;;)
   {
   }
} //main
Gast #308976
Lesenswert?
• ▲
▼
Kenn jetzt deine Compiler nicht, aber beim avr-gcc muss man
flash-speicher mit
char xx=pgm_read_byte..(pointer)... auslesen,
direkte Zuweisung geht nicht.

Ist warscheinlich bei anderen C-Compilern ähnlich, der einzige
C-Compiler den ich kenne der halbwegs automatisch die Speicherbereiche
einer Harvard-Architektur behandelt ist der SDCC.

/Ernst

Antwort schreiben

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.

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.