Set up Cape's EEPROM i2c-2 BeagleBoneBlack Rev-C

31 views
Skip to first unread message

MG

unread,
Oct 30, 2018, 8:01:27 PM10/30/18
to BeagleBoard
The BeagleBoneBlack comes with an "internal" EEPROM connected to i2c-0 line. I can see that clearly when I do i2cdetect:

    debian@beaglebone:~$ i2cdetect -y -r 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: UU -- -- -- -- -- -- --

It is showing under address 0x50. When I try to do ahexdump I get the following values with no issue:

    sudo hexdump -C /sys/class/i2c-dev/i2c-0/device/0-0050/eeprom | head -5
    00000000  aa 55 33 ee 41 33 33 35  42 4e 4c 54 30 30 30 43  |.U3.A335BNLT000C|
    00000010  31 38 33 37 42 42 42 47  30 36 32 32 ff ff ff ff  |1837BBBG0622....|
    00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    *
    00001000  aa 55 33 ee 41 33 33 35  42 4e 4c 54 30 30 30 43  |.U3.A335BNLT000C|

Now I want to add another EEPROM (with cape) on i2c-2 line which is supported according to [BBB SRM](https://cdn-shop.adafruit.com/datasheets/BBB_SRM.pdf) section 8.2. It is the CAT24C256 as mentioned in the SRM. The allowable address range for the expansion cards is 0x54-0x57. When I do i2cdetect I can see the following:

    debian@beaglebone:~$ i2cdetect -r -y 2
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --  

I can see the addresses 0x54-0x57 showing, but when I try hex dump I get an error:

      hexdump: /sys/class/i2c-dev/i2c-2/device/2-0054/eeprom: Connection timed out

Questions:

1. Why are they showing as U's not actual address numbers? I know U stands for used resource?
2. Why am I failing to read from that EEPROM? I have tried all addreses from 0x54-0x57 with no luck. I can confirm that those addresses are showing in /sys/class/i2c-dev/i2c-2/device and the each dir has the following in it:

         debian@beaglebone:~$ ls /sys/class/i2c-dev/i2c-2/device/2-0054/ -la
         total 0
         drwxr-xr-x 4 root root     0 Oct 26 19:46 .
         drwxr-xr-x 8 root root     0 Oct 26 19:46 ..
         drwxr-xr-x 3 root root     0 Oct 26 19:47 2-00540
         lrwxrwxrwx 1 root root     0 Oct 26 19:47 driver -> ../../../../../../bus/i2c/drivers/at24
         -rw------- 1 root root 32768 Oct 26 19:47 eeprom
         -r--r--r-- 1 root root  4096 Oct 26 19:47 modalias
         -r--r--r-- 1 root root  4096 Oct 26 19:47 name
         lrwxrwxrwx 1 root root     0 Oct 26 19:47 of_node -> ../../../../../../firmware/devicetree/base/ocp/i2c@4819c000/cape_eeprom0@54
         drwxr-xr-x 2 root root     0 Oct 26 19:47 power
         lrwxrwxrwx 1 root root     0 Oct 26 19:47 subsystem -> ../../../../../../bus/i2c
         -rw-r--r-- 1 root root  4096 Oct 26 19:47 uevent

I can see the addresses mapping into the kernel but when I try to hexdump eeprom it doesn't work at all. I though this was supposed to be setup by kernel since it is mentioned in BeagleBone SRM. Am I going to need an overlay to add to uboot for this? It doesn't make sense since i2c-2 is already set up by  default i.e. when I connect another device at address aside from 0x54-0x57 it shows up fine and I'm able to interface to it?

All I'm trying to do is read from the EEPROM like I did with the "internal" one to confirm it is working. What am I doing wrong?

gra...@flex-radio.com

unread,
Oct 30, 2018, 11:14:50 PM10/30/18
to BeagleBoard
Those addresses at 0x54-0x57 are reserved by the kernel driver.

Unless you have some capes with those EEPROMS populated, there is nothing actually there.

--- Graham

==

MG

unread,
Oct 31, 2018, 11:01:11 AM10/31/18
to BeagleBoard
@Graham I do have a cape with EEPROM at address 0x57 but the EEPROM is wiped with nothing on it so I guess that is why the board doesn't populate that address by default. How can I fix that?

Graham Haddock

unread,
Oct 31, 2018, 12:14:20 PM10/31/18
to beagl...@googlegroups.com
I think there is a detailed discussion as to what is supposed to be inside the cape EEPROMs in the 
"BeagleBone Black System Reference Manual"

It looks like there is a live Wiki version at

But since that address has already been reserved by the kernel, for the cape manager,
you will not be able to read/write it from user space.

If you want to access that address from user space on a BBB, you need to stop the cape manager.
Google "BBB without reserved I2C addresses" on this forum.
and look at "am335x-bone-common-no-capemgr.dtsi"

--- Graham

==


--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to a topic in the Google Groups "BeagleBoard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/beagleboard/r_cnUtBakj4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to beagleboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/5152cbd8-5ca5-499c-b93f-d57ee2a85c79%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Graham Haddock

unread,
Oct 31, 2018, 12:14:23 PM10/31/18
to beagl...@googlegroups.com
Detailed discussion on Apr 17 2017.

--- Graham

==

MG

unread,
Nov 1, 2018, 6:05:20 PM11/1/18
to BeagleBoard
@Graham

Thank you very much for your response. I went back to the (BBB without reserved I2C addresses)[https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!searchin/beagleboard/BBB$20without$20reserved$20i2c$20addresses%7Csort:date/beagleboard/NG8cDWuv2Y0/XGzZ3SJIBQAJ] and followed @RobertCNelson's post, switched to branch 4.4-ti, changed the include at line 11 to "am335x-bone-common-no-capemgr.dtsi". make and then make install and finally reboot. All compiled and got installed but when I boot back into my BB i still am seeing the U under the addresses 0x54-0x57 for i2c-2.

debian@beaglebone:~$ i2cdetect -y -r 2

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

when I check the dmesg I can see that cape manger is still enabled (uboot_capemgr_enabled=1):

debian@beaglebone:~$ dmesg | grep cape
[    0.000000] Kernel command line: console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 quiet
[    1.138635] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0
[    1.138782] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1
[    1.138793] gpio-of-helper ocp:cape-universal: ready

I know I'm missing something here to make it all work and be able to access EEPROM @ 0x57 but do not know where else I need to disable it?

gra...@flex-radio.com

unread,
Nov 1, 2018, 10:21:54 PM11/1/18
to BeagleBoard
Following the instructions from that Apr 17 2017 discussion resulted in the cape manager disabled and no I2C addresses reserved for the capes.

I have not made the changes on recent OS releases, and there have been a lot of changes in the cape manager, so perhaps best to have Robert comment.

--- Graham


Reply all
Reply to author
Forward
0 new messages