ConfigID management (BELK/BXELK)

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box
Bora5-small.jpg Applies to Bora
BORA Xpress.png Applies to BORA Xpress
BORALite-TOP.png Applies to BORA Lite

History[edit | edit source]

Version Date BELK version Notes
1.0.0 November 2015 3.0.0 First release
2.0.0 December 2016 3.0.2 / 1.0.1
4.0.0 / 2.0.0
Changed page name
2.1.0 October 2019 4.1.0 Added BORA Lite

ConfigID management[edit | edit source]

ConfigID is a new feature of DAVE Embedded Systems products. It's main purpose is providing an automatic mechanism for the identification of the product model and configuration.

General information about ConfigID are provided here. The following sections details some Bora/BoraX specific information.

ConfigID hardware implementation on Bora/BoraX/BoraLite[edit | edit source]

BORA uses the first 32bytes OTP block on NOR SPI to store ConfigID (and its CRC32), UniqueID (and its CRC32)

ConfigID on BoraLite[edit | edit source]

For BORA Lite module configured for booting from NAND, the ConfigID is stored on internal I2C EPROM: see here for more information.

ConfigID software implementation on Bora/BoraX/BoraLite[edit | edit source]

U-Boot integrates the software routines for reading and displaying the ConfigID. Hereunder an example of SOM ConfigID at startup:

U-Boot 2014.07 (Jul 24 2015 - 14:30:55) [belk-2.2.0]

Board:  BORA
I2C:   ready
DRAM:  ECC disabled 1 GiB
NAND:  1024 MiB
MMC:   zynq_sdhci: 0
SF: Detected S25FL256S_64K with page size 256 Bytes, erase size 64 KiB, total 32 MiB
In:    serial
Out:   serial
Err:   serial
SOM ConfigID#: 00000002
SOM UniqueID#: fffffefc:fffffefc
CB ConfigID#: 00000001
CB UniqueID#: a600000f:24188b2d
Net:   Gem.e000b000

For accesing these information on Linux procfs, the device tree must be modified (using u-boot fdt command). For example:

zynq-uboot> print loadfdt configid_fixupfdt
loadfdt=tftpboot ${fdtaddr} ${fdtfile}
configid_fixupfdt=if configid checkfdt ${fdtaddr} som_configid ${som_configid#}; then if configid checkfdt ${fdtaddr} cb_configid ${cb_configid#}; then configid fdt_uniqueid ${fdtaddr}; fi; fi

zynq-uboot> run loadfdt configid_fixupfdt
Gem.e000b000 Waiting for PHY auto negotiation to complete....... done
Using Gem.e000b000 device
TFTP from server; our IP address is
Filename 'bora/'.
Load address: 0x2000000
Loading: T ##
         1000 Bytes/s
Bytes transferred = 10019 (2723 hex)
FDT: property som_configid FDT: override 'som_configid' with '00000002'
FDT: property cb_configid match
FDT: override 'som_uniqueid' with 'fffffefc:fffffefc'
FDT: override 'cb_uniqueid' with 'a600000f:24188b2d'

It is possible to read the ConfigID/UniqueID via procfs. For example:

root@bora:~# for f in  /proc/device-tree/*id*; do echo -n "$f: "; cat $f; echo; done
/proc/device-tree/cb_configid: 00000001
/proc/device-tree/cb_uniqueid: a600000f:24188b2d
/proc/device-tree/som_configid: 00000002
/proc/device-tree/som_uniqueid: fffffefc:fffffefc