Table of Contents


U-Boot is an open source Universal Boot Loader that is frequently used in the Linux community. Xilinx provides a Git tree located at https://github.com/Xilinx/u-boot-xlnx which includes U-Boot to run on Xilinx boards. The Xilinx U-Boot project is based on the source code from http://git.denx.de.

U-Boot Commands

The list of U-Boot commands can be accessed while in the U-Boot prompt. Type "help" or "?" for a complete listing of available commands. Below an example is given:

Programming QSPI Flash

U-Boot provides the SF command to program serial flash devices. On all Xilinx platforms from u-boot, you can use SF command to program a QSPI device. Here is an example of loading an image file to QSPI device.

Programming NAND Flash

U-Boot provides the nand command to program nand devices. Here is an example of loading an image file to nand device. The command sequence for nand is same as QSPI except the commands.Below nand command sequence for writing an image to nand device. The read command at the end just to ensure the data was written properly and you can use cmp command for comparing written data with original data which was lready present in DDR..

Programming NOR Flash

U-Boot uses the regular memory command to program NOR devices. Here is command sequence of loading an image file to NOR device.

Authentication and Decryption in Zynq U-Boot

The authentication and decryption feature present in Zynq U-Boot can be found at page Authentication and Decryption in Zynq u-boot

Authentication and Decryption in ZynqMP U-Boot

The authentication and decryption feature present in ZynqMP U-Boot can found at Authentication and Decryption in Zynq US+ u-boot

Boot application images

U-Boot provides bootm command to boot application images (i.e. Linux) which expects those images be wrapper with a U-Boot specific header using mkimage. This command can be used either to boot legacy U-Boot images or new multi component images (FIT) as documented in U-Boot images wiki page. The standard Linux build process builds the wrapper uImage and Petalinux projects generates by default the multi component FIT image as well.

The following U-Boot commands illustrate loading a Linux image from a SD card using either individual images and a FIT image using the bootm command.
With the bootm command, U-Boot is relocating the images before it boots Linux such that the addresses above may not be what the kernel sees. U-Boot also alters the device tree to tell the kernel where the ramdisk image is located in memory (initrd-start and initrd-end). The
bootm command sets the r2 register to the address of the device tree in memory which is not done by the go command.
The differences and use cases of using the booti commands and the bootm command have evolved over time.  As of U-Boot 2020.01, the primary difference is in handling of uncompressed Linux Image files (common for 64-bit Arm platforms) versus compressed Linux zImage files (common on 32-bit Arm platforms) as denoted in the U-Boot help.  As a general rule of thumb, only differentiate in usage depending on Linux image type rather than solely based on architecture.

The full help for booti and bootm individually fully details the differences in usage.



Supported Drivers list for Zynq and Zynq Ultrascale

Driver Information:

There are a number of drivers in the u-boot tree and they may work, but the following list of drivers are currently what's tested and users are encouraged to use these rather than others.


ZynqZynq UltrascaleLinkIn MainlineLocationComment
Nand PS driverNand PS drivernand driveryes

Zynq:

drivers/mtd/nand/zynq_nand.c

Zynqmp:
drivers/mtd/nand/arasan_nfc.c


QSPI driverQSPI driverqspi driver

Zynq:

drivers/spi/zynq_qspi.c

zynqmp:

drivers/spi/zynqmp_gqspi.c

drivers/spi/zynqmp_gqspi.c

is not in mainline

SD/MMC/eMMC driverSD/MMC/eMMC drivermmc driveryes

drivers/mmc/zynq_sdhci.c


SPISPI

drivers/spi/zynq_spi.c
UARTUARTserial driver
drivers/serial/serial_zynq.c
PS GEMPS GEMethernet driveryes

drivers/net/zynq_gem.c


USB2.0 hostUSB2.0 hostusb driveryes

zynq:

drivers/usb/host/ehci-zynq.c

zynqmp:

usb/dwc3


USB2.0 deviceUSB2.0 deviceusb driver

zynq:

drivers/usb/host/ehci-zynq.c

zynqmp:

usb/dwc3


GPIOGPIOgpio driveryes

zynq:

drivers/gpio/zynq_gpio.c

zynqmp:

drivers/gpio/zynq_gpio.c


FPGAFPGAFPGA driveryes

zynq:

drivers/fpga/zynqpl.c

zynqmp:

drivers/fpga/zynqmppl.c


I2CI2Ci2c driveryes

zynq:

drivers/i2c/zynq_i2c.c

zynqmp:

drivers/i2c/i2c-cdns.c


NOR flashSATA


To be done

Supported SoftIP drivers

Driver nameLinkLocationComments
Axi ethernetaxi ethernet driverdrivers/net/xilinx_axi_emac.c
AXI spi/QSPIaxi spi driverdrivers/spi/xilinx_spi.c
axi Uart liteaxi uart lite driverdrivers/serial/serial_xuartlite.c
Axi emac liteaxi emac litedrivers/net/xilinx_emaclite.cNot tested, To be done


Supported File systems


Below are the file systems supported in u-boot against flash devices for platform and Zynq UltraScale+. "Raw" in below table means that it supports raw read/write to respective flash devices without any need of file systems.
Flash Zynq ZynqUS+
SD/eMMCRaw, FAT, EXT2, EXT4Raw, FAT, EXT2, EXT4
USBFAT, EXT2, EXT4FAT, EXT2, EXT4
SATA----NA----FAT, EXT2, EXT4
QSPIRaw, UBIFSRaw, UBIFS
NandRaw, UBIFS, JFFS2Raw, UBIFS, JFFS2

Issues/Workaround

Please note that SD does not work in SD3.0 UHS modes by default. The dt parameter no-1-8-v has to be removed from corresponding sdhci node to work in UHS mode. Having no-1-8-v in sdhci node makes it to operate till SD High speed only.

Release Notes

U-boot Release Notes

Child Pages

Related Links