Forum: Mikrocontroller und Digitale Elektronik eeprom mit eemem: Kann ich da was nachträglich ändern?


von Chris (Gast)


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
von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Füge sie nicht oben, sondern unten an - und schon werden sie 
(hoffentlich) weiter hinten in das EEPROM geschrieben.
von Stefan (Gast)


Lesenswert?

Hallo,
wenn es geht pack den kompletten EEPROM-Inhalt in eine struct dann kommt 
sicher nichts durcheinander.
Stefan
von Josef D. (jogedua)


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.
von Lutz (Gast)


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.
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
Noch kein Account? Hier anmelden.