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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.