We are looking for a way to read the serial number of the BeagleBone
programmatically. As I understand it in the BeagleBone Rev A manual
(sections 5.1 and 7.11), this serial number is written into EEPROM on
I2C0. I'm new to EEPROM and I2C and accessing it from software so
bare with me.
I only see /dev/i2c-1 and /dev/i2c-3 available in the OS. So my first
question is: Is /dev/i2c-1 actually the I2C0 where, according to
section 5.1 in the manual, the EEPROM is?
Next, I kept investigating under the assumption that /dev/i2c-1 is
actually I2C0 and came across i2detect which I was able to run to get
a map of that I2C which shows a map of which addresses on that I2C
have something. It showed something at addresses 0x24, 0x35, 0x50 and
0x51. Finding some documentation online where the EEPROM typically
exists suggests that what is in 0x50 and 0x51 are the EEPROM data.
The i2cdetect output also shows that these areas are unavailable
suggesting that something has them locked such as a driver.
Some more investigating brought up the eeprom command and that command
also states that the base-address of eeproms is 0x50 but complains
that it can't open i2c at /dev/i2c-0. Which makes sense since /dev/
i2c-0 doesn't exist or isn't mounted. So, back to my original
question and asking really should there be a /dev/i2c-0?
I also came across the eeprog which would allow me to read from the
EEPROM, but attempting to read from 0x50 and 0x51 on /dev/i2c-1 fails
stating that it doesn't exist or isn't readable. Which makes me
believe that something in Linux does have this locked/mounted/
whatever.
So my main question is, what mechanism should be used to read (and
potentially write to since section 5.1 of the manual also states that
this EEPROM is provided for SW applications to use as well if desired)
the EEPROM data?
Please bare in mind, I'm not a Linux or hardware guru, so if you can
provide a bit of explanation to your answers, it would be very much
appreciated.