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.
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