eeprom mit eemem: Kann ich da was nachträglich ändern?

Gast #2434646
Lesenswert?
• ▲
▼
Hallo,

ich nutze auf einem Atmega mit AVR-GCC eemem, um Werte im eeprom 
abzulegen. Nun sollen nachträglich ein paar Werte hinzu kommen. Wenn ich 
nun oben ein paar neue "eemem-Variablen" deklariere, befürchte ich, dass 
dadurch das eeprom-Layout durcheinander Gerät und somit die bisher dort 
abgelegten Daten weg sind.

Ist das richtig?
Kann man das verhindern, oder müsste man sich dafür selbst um die 
eeprom-Verwaltung kümmern?

Danke & Gruß,
Chris
#2435965
Lesenswert?
• ▲
▼
Bei mir hat sich folgendes Verfahren bewährt:
Alle Variablen in eine Struct. Als erstes in der Struct ein Header, der 
eine Versionsnummer (1 Byte) und sie Länge der Struct (ein Byte) 
enthält. Die Struct wird einmal im EEMEM angelegt (aber nicht 
initialisiert) und einmal initialisiert im PROGMEM. Zu Beginn wird in 
der main eine Funktion EepromInit() aufgerufen. Diese geprüft, ob der 
Header im Eeprom und im Flash übereinstimmen. Wenn nicht, wird vom Flash 
ins Eeprom kopiert.
So startet man immer mit sinnvollen Werten und überschreibt sich nicht 
unnötig die eventuel schon manuell verstellten Werte.
Und wenn man das Programm über einen Bootloader überträgt, muss man sich 
über die Eeprom-Daten auch keine Gedanken machen.
Gast #2436214
Lesenswert?
• ▲
▼
So wirklich pauschal läßt sich da nichts sagen. Es kommt darauf an, was 
bisher wie gemacht wurde. Es macht natürlich einen enormen Unterschied, 
ob auf das EEPROM über absolute Adressen (z.B. 0xA5) zugegriffen wird 
oder über relative (&variable + 16). Davon hängt ab, wie das Problem zu 
lösen ist. Sprich: Hat der Compiler das Sagen im EEPROM oder der 
Programmierer.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.