mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Constants im AVR Flash


Autor: Martin Dorner (red_shark)
Datum:

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

Autor: Ernst (Gast)
Datum:

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

Autor: Martin Dorner (red_shark)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielen Dank für deine Info, ich hab's jetzt allerdings mit der
neuesten (Evaluation)Version von IAR versucht, und jetzt funktioniert
es hervorragend, d.h. der Compiler behandelt das Kopieren aus dem
Code-Speicher selbstständig ..

Grüsse

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.