Ich soll eine Möglichkeit finden, wie man während des Betriebes einen
Teil des Flash eines ATmega128 bzw. 2560 neu schreiben kann. Der Grund
dafür ist, dass das Gerät mehrere Sprachen
braucht. Jede Sprache ist etwa 16 kB gross, daher zu gross für EEPROM.
Man soll über eine SD-Karte eine neue Sprache
einlesen können und diese dann im Flash speichern.
Mein Versuch baut auf der AVR106 Application Note auf, für den IAR
Compiler. Wenn ich nun den Teil des Flashes betrachte
steht nachher überall wo ich hineingeschrieben habe 0xFF.
Muss ich den Flash zuerst löschen, bevor ich Ihn neu beschreibe und wenn
ja, kann man Byteweise löschen oder muss ich
ganze Pages? Beim löschen mit dem Programmer steht nachher auch 0xFF
drin, hatte daher gedacht, dass es vieleicht beim
zweiten mal Beschreiben klappt, aber die Speicherzellen bleiben auf
0xFF;
Hier noch mein Code zum Testen:
Adr = (UINT32 __flash)&Deutsch_Text; // Start Deutsch_Text Tabelle
Adr += Deutsch_TextIndices[45]; // Offset für Text
"Einstellungen MB"
Adr = 0x204;
for (i=0; i<17; i++)
{
WriteFlashByte(Adr, Text[i]);
Adr++;
}
_ENABLE_RWW_SECTION();