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 CommandsThe 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 FlashU-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 FlashU-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
bootm individually fully details the differences in usage.
Supported Drivers list for Zynq and Zynq Ultrascale
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.
|Zynq||Zynq Ultrascale||Link||In Mainline||Location||Comment|
|Nand PS driver||Nand PS driver||nand driver||yes|
|QSPI driver||QSPI driver||qspi driver|
is not in mainline
|SD/MMC/eMMC driver||SD/MMC/eMMC driver||mmc driver||yes|
|PS GEM||PS GEM||ethernet driver||yes|
|USB2.0 host||USB2.0 host||usb driver||yes|
|USB2.0 device||USB2.0 device||usb driver|
|NOR flash||SATA||To be done|
Supported SoftIP drivers
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/eMMC||Raw, FAT, EXT2, EXT4||Raw, FAT, EXT2, EXT4|
|USB||FAT, EXT2, EXT4||FAT, EXT2, EXT4|
|SATA||----NA----||FAT, EXT2, EXT4|
|QSPI||Raw, UBIFS||Raw, UBIFS|
|Nand||Raw, UBIFS, JFFS2||Raw, UBIFS, JFFS2|
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.
U-boot Release Notes