This page provides an overview of the Image Selector tool that is used to control the boot process for the Certified Ubuntu image.
Table of Contents
Table of Contents | ||
---|---|---|
|
Introduction
The Image Selector (ImgSel
) utility is a lightweight application that runs as the first payload in the boot process of an AMD-Xilinx evaluation board. The utility reads board-level metadata to determine which board it is running on, configures the AMD-Xilinx device to use the correct primary payload, and then reboots the board into the selected payload.
...
Device Family | GitHub Source Code |
---|---|
Zynq UltraScale+ MPSoC | https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/imgsel |
Versal ACAP | Source Code Coming Soon |
Overview of Operation
The ImgSel
utility makes use of several key hardware capabilities found in the Zynq UltraScale+ and Versal Adaptive SoC device families. Chief among these capabilities is the multiboot capability. The multi-boot feature combines the Golden Image Search and Fallback capabilities along with a dedicated hardware register to allow the user to specify a specific image (filename or flash offset) to be loaded during the next boot.
...
The Certified Ubuntu images utilize ImgSel
-based boot extensively. The boot process for this image is described in detail here.
Board-Level Metadata (FRU Data)
Regardless of the device family, the board-level metadata is stored in an attached I2C EEPROM device. While it is possible for the metadata to contain much data than ImgSel requires, the
Zynq UltraScale+ MPSoC Boards (ZCU10x Boards)
The traditional Zynq UltraScale+ MPSoC boards in the ZCU10x family use a bespoke EEPROM data format. The metadata is stored in the layout described in the table below.
EEPROM Offset (Hex) | Field Name | Field Data Type | Field Length (bytes) | Field Example (ASCII) | Field Example (Hex) |
---|---|---|---|---|---|
| Board Serial Number | ASCII | 32 | 881437311925-10426 |
|
| Ethernet MAC ID | Binary | 6 | 10203040506 |
|
| Board Name | ASCII | 16 | ZCU102 (5 spaces) |
|
| Board Revision | ASCII | 6 | 1.1 (2 spaces) |
|
Kria & Versal ACAP Boards
Kria SOM and Versal ACAP boards utilize the standard IPMI Information Storage Definition 1.0 format. The mapping of this data is described in detail on the Kria SOM EEPROM github.io page. This general format of this data is the same for both Kria SOM and Versal ACAP boards.
In general, Kria SOM boards follow the basic layout shown below.
Version 1 (K26 production SOM, KV260 SOM)
Record Area | Record Type | Record Start | Record End |
---|---|---|---|
Common Header | IPMI Standard |
|
|
Board Info Area | IPMI Standard |
|
|
DC Load MultiRecord | IPMI Standard |
|
|
SOM MAC Addr MultiRecord | IPMI OEM Record |
|
|
SOM Memory Config MultiRecord | IPMI OEM Record |
|
|
Version 2 (KR260 SOM)
Record Area | Record Type | Record Start | Record End |
---|---|---|---|
Common Header | IPMI Standard, refer to table 8-1 in IPMI Spec | 0x00 | 0x07 |
Board Info Area | IPMI Standard, refer to table 11-1 in IPMI Spec | 0x08 | 0x67 |
DC Load MultiRecord | IPMI Standard, refer to table 16-1 and 18-4 in IPMI Spec | 0x68 | 0x79 |
SOM MAC Addr MultiRecord | IPMI OEM Record, refer to table in MAC Addr MultiRecords | 0x7A | 0x88 |
SOM Memory Config MultiRecord | IPMI OEM Record, refer to table in Memory Config MultiRecord | 0x89 | 0xE4 |
For users designing their own Kria SOM carrier board, please consult the Kria SOM EEPROM Design Guide on github.io. This page details information such as the expected I2C address of the EEPROM and other relevant information.
Related Links
IPMI FRU Information Definition 1.0 - https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-platform-mgt-fru-info-storage-def-v1-0-rev-1-3-spec-update.pdf
Kria EEPROM-gen Utility - https://github.com/Xilinx/kria-eeprom-gen