Moin, moin, in meinem C-Program, geschrieben mit Codevision für mega64, habe ich jede Menge Texte. Diese habe ich bisher alle im RAM abgelegt, quasi als Variable. So etwa: char *Di176 = "Transmitt data"; Bei 200 Texten wird der RAM natürlich knapp. Könnt ich diese Texte auch im Flasch ablegen? Welche Programänderungen habe ich dann zu machen? Danke für eure Hilfe! Dreigestirn
ist doch egal :) hast du einen externen flash dazu (z.B. den AT45DB041D)? dann wuerde ich das alles auf dem flash speichern und dann bei bedarf via USART auslesen... ist wohl die bessere loesung...
Das ist aber mal n riesen Aufwand mit dem externen Flash. Wenn im internen Programmspeicherflash noch genug Platz ist legs doch da ab. Such mal im GCC-Forum, da gibt´s einiges zum Thema. Gruß Markus
Wenn es bislang ins RAM gepasst hat, dann waren die Strings bereits im Flash gespeichert - wo sollen sonst die Werte für die Initialisierung herkommen?
Codevision erlaubt die Prefixe 'const' und 'flash'. Habe jetzt mal umdeklariert: const char *Di176 = "Transmit data"; aber ich bekomme die Fehlermeldung: L6300:parameter #7 of type 'flash unsigned char*' is incompatible with type 'unsigned char*'specified in the function 'key_define' declaration Die Deklaration der Funktion ist: void key_define (char x1,char y1, char x2, char y2, char dc, char uc, char *str); Die Funktion selber ist: key_define(2,3,30,19,'a',0,Di176); Wie ist die Fehlermeldung zu verstehen? Rufus, was meinst du mit:...dann waren die Strings bereits im Flash gespeichert... Laut Compilerinfo ist der RAM(.cseg) zu 85% vollgeschrieben.
Seit wann ist denn der RAM bei einem ATMega das cseg? Der Code lebt im Flash und dort sind auch typischerweise die zur Kompilierzeit festeliegenden Konstanten abgelegt, Strings zum Beispiel.
Mist, sorry, danke Thomas B. muss natürlich .dseg. heissen.
probiers mit : key_define(2,3,30,19,'a',0,(unsigned char *) Di176); der gcc meckert an das der typ : flash unsigned char * (den du durch deine texte definiert hast) nicht "kompatibel" ist mit einem normalen zeiger auf einen unsigned char. ich kenne das problem vom msp. da muß ich auch explizit auf unsigned char * casten damit der zeiger auf konstanten im flash akzeptiert ... gruß rene
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.