AVR Flash im Betrieb neu schreiben

OP Persönliche Seite #1247526
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();
OP Persönliche Seite #1247549
Hab ich ganz vergessen, die Funktionen WriteFlashByte etc. Hab ich in 
einem Segment das in den obersten 8K des Prozessors ist, also der 
Bootbereich.

Reicht das, wenn ich die Funktionen einfach dorthin lege, oder muss ich 
wirklich einen selstständigen Bootloader starten, der unabhängig vom 
Rest der Software ist?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.