[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