[De-Nut-Discussion] probleme beim eeprom schreiben
Martin Krellmann
martin2002 at web.de
Tue Jun 7 21:04:28 CEST 2005
Hallo,
ich möchte eine Datenstruktur im EEPROM das Atmega128 auf dem ethernut board
speichern.
Dazu habe ich folgende Funktion:
int NutNetAppSaveConfig(void)
{
u_char *cp;
u_short i;
netconf.size = sizeof(NETWORK);
strcpy(netconf.magic, CONFAPP_NET_EE_MAGIC);
for (cp = (u_char *) & netconf, i = 0; i < sizeof(NETWORK); cp++, i++)
if (eeprom_read_byte((void *) (i + CONFAPP_NET_EE_OFFSET)) != *cp)
eeprom_write_byte((void *) (i + CONFAPP_NET_EE_OFFSET), *cp);
return 0;
}
Die zugehörige Funktion zum auslesen ist:
int NutNetAppLoadConfig(void)
{
eeprom_read_block(&netconf, (void*) CONFAPP_NET_EE_OFFSET,
sizeof(NETWORK));
if (netconf.size != sizeof(NETWORK) || strcmp(netconf.magic,
CONFAPP_NET_EE_MAGIC) != 0) {
memset(&netconf, 0, sizeof(netconf));
strcpy(netconf.hostname, "solarnut");
memset(&netconf.dns1, 0, sizeof(netconf.dns1));
memset(&netconf.dns2, 0, sizeof(netconf.dns2));
return -1;
}
return 0;
}
Die Struktur ist folgendermaßen beschaffen:
typedef struct _NETWORK NETWORK;
struct _NETWORK {
u_char size;
u_char magic[6];
u_char dhcp;
u_char hostname[MAXLEN_NAMES];
u_long dns1;
u_long dns2;
};
extern NETWORK netconf;
die verwendeten konstanten sind folgendermaßen definiert:
#define CONFAPP_NET_EE_OFFSET 100
#define CONFAPP_NET_EE_MAGIC "APPNET"
Die Struktur wird also fast direkt nach der CONFNET Struktur mit den
restlichen ip einstellungen geschrieben.
Die nächste Struktur ab offset 132 (Wie groß sind eigentlich die u_long
variablen sind doch 4byte?)
Das Problem ist jetzt, dass nur die variable dhcp nicht richtig geschrieben
wird (erlaubte werte sind 0 und 1). D.h. nach dem Schreiben ist die variable
netconf.dhcp wieder = 0, auch wenn sie vorher = 1 war
Das seltsame ist: Alle anderen Werte werden richtig geschrieben!
Mich verwundert diese Tatsache etwas soll heißen ich bin momentan ratlos
und bitte um hilfe
Ach so: Beim speichern der Strukturen wird zuerst NutNetSaveConfig() und
dann NutNetAppSaveConfig() (obige funktion) aufgerufen
vielleicht ist das
relevant?
Thx
Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.egnite.de/pipermail/de-nut-discussion/attachments/20050607/48f38fb2/attachment.html>
More information about the De-Nut-Discussion
mailing list