EEPROM
EEPROM stands for Electrically Erasable Programmable Read-Only Memory. It is a non-volatile memory that can be programmed and erased electrically. The nonvolatile memory available on the phyCORE-AM64x is a 32KB EEPROM with an I2C interface. It can be accessed through the I2C0 on the phyCORE-AM64x at address 0x50. EEPROM can be used to store configuration data or other general-purpose data. This guide will show you how to access the 2Kbit EEPROM featured on the phyCORE-AM64x development kit carrier board. To learn more information about the phyCORE-AM64x EEPROM system memory, please see section 6.1.2 in the Hardware Manual.
Note
The phyCORE-AM64x development kit provides access to two EEPROMs, one 32Kbit EEPROM on the SOM and a 2Kbit EEPROM on the carrier board.
Location |
Reference |
I2C Bus |
Address |
---|---|---|---|
SOM |
U7 |
i2c0 |
0x50 |
Carrier Board |
U61 |
i2c1 |
0x51 |
Verifying EEPROM Initialization
First ensure that the EEPROM is initialized correctly by checking the boot log.
dmesg | grep -i "eeprom"
root@phyboard-electra-am64xx-2:~# dmesg | grep -i "eeprom" [ 5.729717] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 32 bytes/write [ 5.766493] at24 1-0051: 256 byte 24c02 EEPROM, writable, 16 bytes/write
Writing to the EEPROM
Clear out the entirety of the EEPROM by writing zeros to it.
dd if=/dev/zero of=/sys/bus/i2c/devices/1-0051/eeprom bs=256 count=1root@phyboard-electra-am64xx-2:~# dd if=/dev/zero of=/sys/bus/i2c/devices/1-0051/eeprom bs=256 count=1 1+0 records in 1+0 records out 256 bytes copied, 0.0777177 s, 3.3 kB/s
Now generate a 2Kbit file with random data. This will serve as the test file:
dd if=/dev/urandom of=/tmp/test.img bs=256 count=1root@phyboard-electra-am64xx-2:~# dd if=/dev/urandom of=/tmp/test.img bs=256 count=1 1+0 records in 1+0 records out 256 bytes copied, 0.00022356 s, 1.1 MB/s
Write the test file to the EEPROM
dd if=/tmp/test.img of=/sys/bus/i2c/devices/1-0051/eeprom bs=512 count=1root@phyboard-electra-am64xx-2:~# dd if=/tmp/test.img of=/sys/bus/i2c/devices/1-0051/eeprom bs=256 count=1 0+1 records in 0+1 records out 256 bytes copied, 0.077697 s, 3.3 kB/s
Reading from EEPROM
Read the contents of the EEPROM and store it to a file.
dd if=/sys/bus/i2c/devices/1-0051/eeprom of=/tmp/test_read.img bs=256 count=1root@phyboard-electra-am64xx-2:~# dd if=/sys/bus/i2c/devices/1-0051/eeprom of=/tmp/test_read.img bs=256 count=1 1+0 records in 1+0 records out 256 bytes copied, 0.00670281 s, 38.2 kB/s
Make sure the output file was not corrupted during the transfer using md5sum. Both of the files should have matching MD5 hashes.
md5sum /tmp/test.img /tmp/test_read.imgroot@phyboard-electra-am64xx-2:~# md5sum /tmp/test.img /tmp/test_read.img 192e08b78bc0100bcff74d324d1ccbde /tmp/test.img 192e08b78bc0100bcff74d324d1ccbde /tmp/test_read.img
Reading/Writing to the SOM EEPROM
The SOM EEPROM is used for PHYTEC’s Hardware Introspection, which allows to automatically load the correct software for the underlying SOM configuration.
Do not modify the content. The BSP does not use the Hardware Introspection.