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