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.

onie_devclient.png

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.
Created by Jakub Klama on 2021/03/03 12:38
    

Need help?

If you need help with XWiki you can contact: