Conclusive EEPROM format
Each of the Conclusive Devices boards contains preprogrammed EEPROM memory containing unequal information about board and hardware revision.
EEPROM address
Each of the bords contains at least one EEPROM memory chip. It's always best to check the hardware design of the board to get the EEPROM chipset address.
To ease the process here is information about known EEPROM addresses on the SYS_I2C bus.
- KSTR-SAMA5D27 - 0x50
- RCHD-PF - 0x50
- WHLE-LS1 - 0x56
EEPROM memory format
This section contains detailed information about EEPROM structure and format.
EEPROM memory size
Each of the Conclusive boards has an EEPROM memory of size 32-64KB. Range of 0 to 2KB of the memory area is reserved for purpose of board identification (described here) and cannot be erased or overwritten.
ONIE TLV
Conclusive boards adopted the ONIE TLV industry standard format of marking hardware-specific information in the EEPROM memory.
EEPROM memory format structure is binary and size oriented. The EEPROM memory starts with a special header containing 'TlvInfo' string and other information required for parsing the rest of the memory.Each field is stored in a tripled of 'Field ID', 'Field Size', 'Field Value'. Where 'Field Value' might be different in a format based on 'Field ID'. For securing the ONIE TLV EEPROM all data are protected using CRC32 checksum that is modified by any edit.
For more specific information about the ONIE TLV format please follow to ONIE website EEPROM Information Format.
Here is a real example of how the EEPROM memory is programmed on the Conclusive Devices board.
U-boot
Many of the Conclusive Devices boards use U-Boot as a bootloader. U-Boot version shipped with the software package for the boards is configured to use ONIE TLV EEPROM for getting information like MAC address for each of the network cards build-in.
It is possible to read, edit or delete TLV values using U-Boot. Advisory information after editing and writing TLV data, a board restart might be needed to refresh values presented by U-Boot.
Read
To read the ONIE TLV EEPROM from U-Boot, the startup process needs to be interrupted. And `tlv` command needs to be typed in.
=> tlv TLV: 0 TlvInfo Header: Id String: TlvInfo Version: 1 Total Length: 138 TLV Name Code Len Value -------------------- ---- --- ----- Product Name 0x21 13 KSTR-SAMA5D27 Part Number 0x22 13 KSTR-SAMA5D27 Serial Number 0x23 10 0x00001000 Base MAC Address 0x24 6 70:B3:D5:B9:D0:46 Manufacture Date 0x25 19 02/06/2021 00:00:00 Device Version 0x26 1 1 Label Revision 0x27 21 KSTR-SAMA5D27 rev 3.0 ONIE Version 0x29 1 1 MAC Addresses 0x2A 2 2 Manufacturer 0x2B 22 Conclusive Engineering Country Code 0x2C 2 PL CRC-32 0xFE 4 0x165BB2F9 Checksum is valid.
Edit
To edit the ONIE TLV EEPROM from U-Boot, the startup process needs to be interrupted. It is possible to check valid Field ID using `tlv list` command.
Before doing any changes to TLV information. Please make sure to make a backup of the original contents.
To enable the possibility of saving EEPROM memory you must disable the Write Protect lock using a devcable connector.
=> tlv set 0x21 "KSTR-SAMA5D27 with MOD" => tlv write => reset => tlv TLV: 0 TlvInfo Header: Id String: TlvInfo Version: 1 Total Length: 147 TLV Name Code Len Value -------------------- ---- --- ----- Product Name 0x21 22 KSTR-SAMA5D27 with MOD Part Number 0x22 13 KSTR-SAMA5D27 Serial Number 0x23 10 0x00001000 Base MAC Address 0x24 6 70:B3:D5:B9:D0:46 Manufacture Date 0x25 19 02/06/2021 00:00:00 Device Version 0x26 1 1 Label Revision 0x27 21 KSTR-SAMA5D27 rev 3.0 ONIE Version 0x29 1 1 MAC Addresses 0x2A 2 2 Manufacturer 0x2B 22 Conclusive Engineering Country Code 0x2C 2 PL CRC-32 0xFE 4 0x6E9DA51B Checksum is valid.