I looked at the BOM... U7 is the part. Lo and behold, Graham, you're
right. It's a 32k-BIT part. The internet said it was a 24c256 part and
dammit, we know the internet is NEVER EVER wrong on these things, therefore
reality is wrong! :-)
Explains the mirroring I'm seeing every 0x1000 bytes (4k) because the
at24.c driver isn't smart enough to know it's limited, I think. I knew
something was up when I saw that in the memory dump.
Okay, mystery solved. Thanks for your help!
Bryan
On Friday, July 15, 2016 at 1:16:50 PM UTC-5, Graham wrote:
> Are the docs you are using up to date?
>
> Reading the current SRM, (Version C.1) section 5.3.2 says that there is a
> single 4K Byte EEPROM on board the Beaglebone.
>
> They mumble something about there having been a cost reduction. :-)
>
> --- Graham
>
> ==
>
> On Friday, July 15, 2016 at 1:08:27 PM UTC-5, Graham wrote:
>>
>> OK. In that case it is a 32k Byte part.
>> --- Graham
>>
>> ==
>>
>> On Friday, July 15, 2016 at 12:37:20 PM UTC-5, Bryan Wilcutt wrote:
>>>
>>> Graham,
>>> The part number is AT24c256 and a quick jot over to Atmel's trusty
>>> website and I found the spec sheet... "256K Serial Eeprom... organized as
>>> 512 pages of 64 bytes each."
>>>
>>> So, that should mean 512x64 = 32,768 bytes... .32K.
>>> 256k bits = 262,144 / 8 = 32,768 bytes... 32k.
>>>
>>> It's most certainly a 32k-byte part.
>>>
>>> Thanks,
>>> Bryan
>>>
>>> On Friday, July 15, 2016 at 11:45:02 AM UTC-5, Graham wrote:
>>>
>>>> Brian:
>>>>
>>>> You need to learn to speak "marketing" and "binary".
>>>>
>>>> A 32 k EEPROM (named by marketing) is a 32k BIT EEPROM.
>>>>
>>>> 32k BITs divided by 8 bits-per-byte is 4k BYTES.
>>>>
>>>> 4k BYTES is 0x1000 BYTES.
>>>>
>>>> So, your address space wraps around every 0x1000 BYTES.
>>>>
>>>> The data is not repeated every 0x1000 bytes, it is the SAME data.
>>>>
>>>> Sounds like your EEPROM is working just fine.
>>>>
>>>> --- Graham
>>>>
>>>> ==
>>>>
>>>> On Friday, July 15, 2016 at 10:47:54 AM UTC-5, Bryan Wilcutt wrote:
>>>>>
>>>>> 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/b756ac7b-229e-4c37-9e74-b25469375c12%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.