EEPROM

EEPROM stands for Electrically Erasable Programmable Read-Only Memory. It is a non-volatile memory that can be programmed and erased electrically. The phyFLEX-AM62Px SOM provides a 4kB (32kbit) EEPROM on WKUP_I2C0 (/dev/i2c-1) at address 0x50, which is reserved for PHYTEC SOM information. The SoM EEPROM can be used to store configuration data or other general-purpose data. This guide will show you how to access the 2kbit user EEPROM featured on the phyFLEX-AM62Px development kit carrier board.

Note

The phyFLEX-AM62Px development kit provides access to three EEPROMs, 1x 32kbit EEPROM on the SOM and 2x 2kbit EEPROMs on the carrier board.

EEPROM

Location

Designator

I2C Bus

Address

SOM (PHYTEC)

U8

i2c-1

0x50

Carrier Board (Factory)

U57

i2c-2

0x51

Carrier Board (User)

U80

i2c-2

0x52

Carrier Board User EEPROM

The examples below use the user EEPROM (U80) at address 0x52.

EEPROM Initialization

  • First ensure that the EEPROMs are initialized correctly by checking the boot log.

    am62pxx-phyflex-libra-rdk-1:~# dmesg | grep -i "eeprom"
    [    6.049192] at24 1-0050: 4096 byte 24c32 EEPROM, writable, 32 bytes/write
    [    6.090717] at24 2-0051: 256 byte 24c02 EEPROM, writable, 16 bytes/write
    [    6.090717] at24 2-0052: 256 byte 24c02 EEPROM, writable, 16 bytes/write
    

Writing to the EEPROM

  • Clear out the entirety of the EEPROM by writing zeros to it.

    am62pxx-phyflex-libra-rdk-1:~# dd if=/dev/zero of=/sys/bus/i2c/devices/2-0052/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:

    am62pxx-phyflex-libra-rdk-1:~# 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

    am62pxx-phyflex-libra-rdk-1:~# dd if=/tmp/test.img of=/sys/bus/i2c/devices/2-0052/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.

    am62pxx-phyflex-libra-rdk-1:~# dd if=/sys/bus/i2c/devices/2-0052/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.

    am62pxx-phyflex-libra-rdk-1:~# md5sum /tmp/test.img /tmp/test_read.img
    192e08b78bc0100bcff74d324d1ccbde  /tmp/test.img
    192e08b78bc0100bcff74d324d1ccbde  /tmp/test_read.img
    

PHYTEC SOM EEPROM (Limited Access)

PHYTEC Board Support Packages (BSPs) are equipped with extended functionality in the bootloader that allows it to read the PHYTEC reserved System on Module (SOM) EEPROM. This enables the software to adjust based on the SOM configuration, allowing a single software image to work across multiple hardware configurations.

While modifying the PHYTEC SOM EEPROM content is not recommended, it is possible to disable this feature if needed. However, disabling it may require additional effort to support various SOM options.

Note

The SOM EEPROM is write-protected by default. To write to it (for example, to add a MAC address or key-value pair), close jumper J10 on the phyFLEX-Libra AM62Px.

You can access the PHYTEC SOM EEPROM content using the EEPROM Flashtool. Below is an overview of how to read the content and add new information. For further details, please refer to the official GitHub page.

Read the Content

To read the full content of the SOM EEPROM, use the pre-installed phytec_eeprom_flashtool. This tool will display all the relevant information stored in the SOM.

am62pxx-phyflex-libra-rdk-1:~# phytec_eeprom_flashtool read -som PFL-G-06

MAC Address

By default, the phyFLEX-AM62Px does not have pre-programmed MAC addresses and instead generates random MAC addresses at boot time. You can write specific MAC addresses into the PHYTEC SOM EEPROM using the EEPROM Flashtool, which will be read during the boot process.

Example command to set a MAC address 00:91:da:dc:1f:c5 for Ethernet interface 0:

am62pxx-phyflex-libra-rdk-1:~# phytec_eeprom_flashtool add-mac -som PFL-G-06 0 00:91:da:dc:1f:c5

Key Values

The PHYTEC SOM EEPROM can also store key-value pairs in ASCII format. These pairs will be read by the bootloader and stored in the environment, where they can be used either in the bootloader or accessed in Linux via the fw_printenv tool.

Example command to set the value CAFE1234 for the key SERIAL.

am62pxx-phyflex-libra-rdk-1:~# phytec_eeprom_flashtool add-key-value -som PFL-G-06 SERIAL CAFE1234