Forum: Mikrocontroller und Digitale Elektronik Anordnung der EEPROM Variablen


von Hans (Gast)


Lesenswert?

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 ?

von Einer K. (Gast)


Lesenswert?

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.

von Jim M. (turboj)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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.

von Falk B. (falk)


Lesenswert?

Zu langsam 8-0

von Einer K. (Gast)


Lesenswert?

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