Hallo Ich habe folgendes Problem. Wir nutzen das EEPROM im ATMega644 und programmieren in C mit dem Atmel Studio Version 7. Im EEPROM befinden sich Kalibrierwerte, die am Anfang eingestellt werden und dort gespeichert sind. Ausserdem gibt es einen Bereich für Messwerte der bei Benutzung immer wieder geändert wird. Wir möchten jetzt ein Softwareupdate mit dem Bootloader machen und dabei nur den Flash neu schreiben, damit die alten Messwerte und die Kalibrierung nicht verloren geht. Es sind allerdings ein paar EEPROM Variablen hinzugekommen, welche ich bei der Definition in C hinter die alten geschrieben habe, mit der Hoffnung das der alte Teil des EEPROM Speichers unverändert bleibt. Leider habe ich jetzt nach einem Update eine Verschiebung des EEPROM und sämtliche alte Mess und Kalibrierwerte stimmen nicht mehr. Gibt es hier die möglichkeit die Speicherbelegung des EEPROM zu steuern und festzulegen welche Variablen wo gespeichert werden ?
Soweit mir bekannt: Nur indem du die Adressen hart vorgibst. Denn im Grunde ist es Sache des Compilers und des Linkers, wie er die Dinge in den Speichersections anordnet. Das macht er eigentlich sehr zuverlässig. Aber eben nicht immer auf dieselbe Art. Es gibt keine garantierte Reihenfolge.
Arduino F. schrieb: > Soweit mir bekannt: > Nur indem du die Adressen hart vorgibst. Kann man auch mit dem Compiler machen: Alles in ein struct packen.
@ Arduino Fanboy (ufuf) >Denn im Grunde ist es Sache des Compilers und des Linkers, wie er die >Dinge in den Speichersections anordnet. Das macht er eigentlich sehr >zuverlässig. Aber eben nicht immer auf dieselbe Art. Es gibt keine >garantierte Reihenfolge. Es gibt einen Trick. Man definiere ein struct, in dem alle EEPROM-Variablen enthalten sind. Dort MUSS die Reihenfolge eingehalten werden.
Falk B. schrieb: > @ Arduino Fanboy (ufuf) Ich danke allen für die Belehrung! Dem TE wirds hoffentlich helfen. Zur Kenntnisnahme: Die Verwendung von Strukturen, mit offsetof(), ist eine harte Vorgabe der Adressen! Mit dem eingebauten Vorteil, dass man dem Compiler die Arbeit überlässt.
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.