Forum: Compiler & IDEs Config struct an feste Adresse im EEPROM speichern (ATmega32, avr-gcc)


von Jürgen S. (jsachs)


Lesenswert?

Hallo,

vielleicht denke ich im Moment zu kompliziert...

Ich habe eine recht umfangreiche Config Structur die ich immer nur ZUM 
TEIL auch zur Laufzeit benötige (Pseudocode)
1
struct model
2
{
3
 char name[10];
4
 char mac[8];
5
 ......
6
}
7
8
struct config
9
{
10
 unsigned char sn[8];
11
 struct model models[10];
12
};
So ganz grob, ich bin da noch am ausarbeiten vor dem Code schreiben, 
daher nur Pseudo Code.

Jetzt wäre es schön sagen zu können:
1
struct config EEMEM eeConfig;

Wichtig, der Benutzer kann die Firmware selbst updaten, daher muss zu 
100% sicher sein, das die Config immer an der gleichen Adresse im EEPROM 
steht.
Das kann ich ja mit EEMEM nicht sicher stellen. Vor allem wenn ich mal 
einen neueren Compiler nutze, Variablen dazu kommen, etc....
Und ich möchte natürlich eine Default Config im EEPROM haben.

Gibt es da keine Möglichkeit das einfach zu machen ?
Ich kann die Startadresse ja einfach fest im Programm hinterlegen 
(struct config *eeConfig = 0x01;), dann bekomme ich aber keine 
eeprom.hex Datei zum schreiben...

Ich muss auch immer nur 1 Teil der Config im Speicher haben oder darauf 
zugreifen, das sollte aber für mein Problem irrelevant sein. Das sollte 
Dank Struct ja kein Problem sein.

Ich bin doch bestimmt nicht der einzige, der das Problem hatte ?!

Dann noch eine Frage: Ist es möglich zu Compilezeit eine CRC über das 
EEPROM zu berechnen, also über meine Default Daten, die ich schreiben 
will, damit die in der EEP Datei landen ?

Gruss
Juergen

von Oliver (Gast)


Lesenswert?

EEMEM halt nicht verwenden, statt dessen das EEprom aus dem Programm 
heraus initialisieren.

CRC berechnen zur "Compilezeit" erledigt sich dann auch ;)

Oliver

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.