Hallo, ich möchte Daten fest mit dem C-Programm im Flash eines Mega8 speichern. Diese Daten (Bitmuster für ein Display) soll das Programm dann zur Laufzeit aus dem Speicher lesen. In Basic (VC20/C64) gab es imho mal so eine Art "Data" und "Read" Befehl. Es handelt sich um ca 2KB an Bitmustern, welche ich Byteweise auslesen und verarbeiten möchte. Wie löse ich so etwas in C ? Gruß Günter
Das kommt auf deinen Compiler an! Suche mal nach _flash oder so.
Ist es sinnvoll die Daten in Feldvariablen zu speichern ?
Nein, denn dazu brauchst Du RAM. Und dein µC hat bloß 1kB davon, deshalb passen Deine Daten da gar nicht rein. ".db" (oder so) ist dein Freund. Gruß Jonathan
> Ist es sinnvoll die Daten in Feldvariablen zu speichern ? > Nein, denn dazu brauchst Du RAM. Und dein µC hat bloß 1kB davon, deshalb > passen Deine Daten da gar nicht rein. ".db" (oder so) ist dein Freund. > > Wie löse ich so etwas in C ? Array anlegen und dieses ins Flash verbannen passt wunderbar. AVR-GCC-Tutorial Im Abschnitt über "Flash" nachlesen.
Jonathan Strobl schrieb: > ".db" (oder so) ist dein Freund. Da hätte er mehr Freunde würde er Assembler benutzen, in C ist's PROGMEM und <avr/pgmspace.h>
Kenne mich leider nicht mit Atmel uC aus, aber meist reicht es, das Array mit den Daten einfach als "const" zu deklarieren. Die Compiler/Linker sollten dann automatisch erkennen, dass die Daten in diesem Array nur gelesen werden und daher im Flash bleiben können. Auf Nummer sicher geht man mit den anderen, oben beschriebenen Methoden (Array einer Section zuweisen und im Linker Script definieren, dass diese Section im Flash ist). Aber wenns mit "const" alleine auch geht, kann man sich die Mühe ja sparen. ;-)
Danke für die Hinweise. Ich werde mich mit dem Flash-Abschnitt und Progmem auseinandersetzen. Gruß Günter
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.