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-AM62x is a 4KB EEPROM with an I2C interface. It can be accessed through the I2C0 on the phyCORE-AM62x 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-AM62x development kit carrier board. To learn more information about the phyCORE-AM62x EEPROM system memory, please see section 6.1.2 in the Hardware Manual.

Note

The phyCORE-AM62x development kit provides access to two EEPROMs, 1x 32Kbit EEPROM on the SOM and a 2Kbit EEPROM on the carrier board.

EEPROM

Location

Reference

I2C Bus

Address

SOM

U20

i2c0

0x50

Carrier Board

U38

i2c1

1x51

Verifying EEPROM Initialization

  • First ensure that the EEPROM is initialized correctly by checking the boot log.

    Target (Linux)
    dmesg | grep -i "eeprom"
    
    Expected Output
    root@phyboard-lyra-am62xx-2:~# dmesg | grep -i "eeprom"
    [    6.049192] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 32 bytes/write
    [    6.090717] 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.

    Target (Linux)
    dd if=/dev/zero of=/sys/bus/i2c/devices/1-0051/eeprom bs=256 count=1
    
    Expected Output
     root@phyboard-lyra-am62xx-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.0780454 s, 3.3 kB/s
    
  • Now generate a 2Kbit file with random data. This will serve as the test file:

    Target (Linux)
     dd if=/dev/urandom of=/tmp/test.img bs=256 count=1
    
    Expected Output
     root@phyboard-lyra-am62xx-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.000466573 s, 549 kB/s
    
  • Write the test file to the EEPROM

    Target (Linux)
    dd if=/tmp/test.img of=/sys/bus/i2c/devices/1-0051/eeprom bs=512 count=1
    
    Expected Output
    root@phyboard-lyra-am62xx-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.0875027 s, 2.9 kB/s
    

Reading from EEPROM

  • Read the contents of the EEPROM and store it to a file.

    Target (Linux)
    dd if=/sys/bus/i2c/devices/1-0051/eeprom of=/tmp/test_read.img  bs=256 count=1
    
    Expected Output
     root@phyboard-lyra-am62xx-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.0136441 s, 18.8 kB/s
    
  • Make sure the output file was not corrupted during the transfer using md5sum.

    Target (Linux)
     md5sum /tmp/test.img /tmp/test_read.img
    
    Expected Output
     root@phyboard-lyra-am62xx-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 underlaying SOM configuration.

Do not modify the content, except the BSP doesn’t use the Hardware Introspection.