Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The page provides information about the boot process used by the Certified Ubuntu 20.04 LTS for Xilinx Devices release for the ZCU102, ZCU104, and ZCU106 evaluation boards. While this boot process is hard-coded into the design of the Certified Ubuntu 20.04 LTS for Xilinx Devices it can be useful for debug.

...

Introduction

The Certified Ubuntu 20.04 LTS for Xilinx Devices release contains both a full Ubuntu 20.04 LTS operating system as well as reference PL bitstream configurations for the ZCU102, ZU104, and ZCU106 evaluation boards. The release is provided as a single SD card image that can be used with any of the three boards.  This article details how the common image functions so that users can understand it and modify it for their own requirements.

...

The boot process of the Certified Ubuntu 20.04 LTS for Xilinx Devices release makes extensive of the MultiBoot feature of the Zynq UltraScale+ MPSoC device. At power-on (or complete restart via POR_B), the Zynq UltraScale+ MPSoC BootROM first senses the state of the device mode pins (see Boot Modes in Chapter 11 of the Zynq UltraScale+ TRM). When the BootROM detects that it is booting from SD card it searches for a file called BOOT.BIN on the first FAT/FAT32 partition of the SD card (booting from other boot modes is unsupported). If a file is found by that name it will be used to boot the system.  If a file named BOOT.BIN is not found, the BootROM will append a numeric value starting with 1 to the end of the file name (example: BOOT1.BIN) and try again. This will continue until a matching file is found, or the maximum tries of 8191 is reached.

For the Certified Ubuntu 20.04 LTS for Xilinx Devices image, the initial BOOT.BIN on the SD card is unique in that it includes only a single payload partition - a customized First Stage Bootloader (FSBL)  binary instead of typical collection of boot artifacts (eg, bitstream, ATF, PMUFW, etc).  The binary contained in the initial BOOT.BIN file is referred to as the Image Selector (ImgSel) application. You can find the source code for the Image Selector application in the embeddedsw Xilinx Github repository

...

Golden Images

The Certified Ubuntu 20.04 LTS for Xilinx Devices image includes a special Golden Image for each of the supported evaluation boards. The Golden Image is a known working image that is safe to fall back to in case the Active Image is corrupt or unavailable. The name of the Golden Image should always include a value higher than the Active Image. By default, the value is boot10X1.bin (see the Boot Image Name section). If you wish to have more than one fallback image, you can modify the filename so long as it does not collide with with the reserved naming scheme for the other images.

The Certified Ubuntu 20.04 LTS for Xilinx Devices release includes a tool called xlnx-config which manages boot configuration collateral. When a new demo package is installed on a running system, the xlnx-config utility generates a new boot10x0.bin file and installs it into the FAT partition. Then, xlnx-config updates the multiboot register so that the system can be rebooted into the new configuration. For more details on this process, see the xlnx-config page.

...

The ZCU10x evaluation boards boot via an active configuration file called BOOT10x0.BIN (fallback to golden image called BOOT10x1.BIN).

Board

Multi-Boot Value

Active Image Filename

Golden Image Filename

ZCU102

1020

boot1020.bin

boot1021.bin

ZCU104

1040

boot1040.bin

boot1041.bin

ZCU106

1060

boot1060.bin

boot1061.bin

The contents of the active configuration file are described in the table below.

File Name

Load Address

Description

fsbl.elf

0x00000450

Zynq UltraScale+ MPSoC First Stage Boot Loader (FSBL)

bl31.elf

0x00000470

Arm Trusted Firmware (ATF). Loads into EL3.

pmufw.elf

N/A (loaded to PMU)

Platform Management Unit (PMU) Firmware (PMUFW)

u-boot.elf

0x00000000

U-Boot Second Stage boot loader. Built by Canonical (located at /usr/lib/u-boot/xilinx_zynqmp_virt/u-boot.elf)

system.bit

N/A (programmed to PL)

The Programmable Logic (PL) bitstream

system.dtb

0x00000480

The Linux device tree that matches the contents of the bitstream

Info

The device tree and bitstream image must match in order to ensure all required drivers are properly loaded

...