I've been playing with the BBB 32k eeprom by reading and writing data to 
it.  I use fseek(), fopen(), fread() and fwrite().  The device I am 
reading/writing/opening is:
/sys/bus/i2c/devices/0-0050/at24-0/nvmem

This does seem to work however not well.   I noticed that the same data is 
repeated every 0x1000 bytes.  Why is that?  Am I not addressing the part 
correctly?  Since I'm ultimately using the at24.c driver, I inspected it 
and it does seem to attempt to translate addresses for the part.  Are there 
specific limitations with at24 that I should be aware of, nothing seems to 
be documented that I've seen.

    #define e2FILE    "/sys/bus/i2c/devices/0-0050/at24-0/nvmem"

    int readEEPROMAt(unsigned char *p, unsigned int startAddr, unsigned int 
len)
    {
        int retVal = 0;
        FILE *fp = NULL;

        if ((fp = fopen(e2FILE, "r")) != NULL)
        {
                if (fseek(fp, startAddr, 0) == 0)
               {
                    if (fread(p, 1, len, fp) != len)
                         printf("Error: Cannot read EEPROM\n");
               else
                   retVal = 1;
       } else {
              printf("Error: Could not index EEPROM, no data read.");
        }
    } else {
        printf("Error: Cannot open EEPROM\n");
    }

    if (fp)
       fclose(fp);

    return retVal;
}

Bryan

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/083caaac-efe9-4b9a-b705-9029ca13e224%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to