The boot image BOOT.BIN is build using the bootgen tool which requires several input files.
Instructions on how to build the Xilinx Shell Archive (XSA) handover file can be found here:
All further steps are lengthy explained on the Xilinx Wiki Page
For ease of use we provide a bash shell script which allows building BOOT.BIN from system_top.xsa, u-boot.elf and either bl31.elf or a path to the Arm Trusted Firmware repository
The script can be downloaded from here:
NOTE: After downloading the script you need to make it executable
$ chmod +x build_zynqmp_boot_bin.sh
usage: build_zynqmp_boot_bin.sh system_top.xsa u-boot.elf (download | bl31.elf | <path-to-arm-trusted-firmware-source>) [output-archive]
u-boot.elfare required parameters.
system_top.xsa, see Building HDL. After building a project in the HDL repository, it can be found inside a <project>_<board>.sdk folder.
download(which will git clone the ATF repository),
bl31.elfor the file system
pathto the Arm Trusted Firmware source code repository
nameparameter can be given to tar.gz the output directory. (
$ source /opt/Xilinx/Vivado/202x.x/settings64.sh
export PATH=$PATH:/cygdrive/c/Xilinx/Vivado/202x.x/bin export PATH=$PATH:/cygdrive/c/Xilinx/Vitis/202x.x/bin export PATH=$PATH:/cygdrive/c/Xilinx/Vitis/202x.x/gnu/microblaze/nt/bin
NOTE: u-boot.elf and bl31.elf
For those who don't want to build u-boot or bl31 themselves.
Both u-boot.elf and bl31.elf can be extracted from the project folder on the SD Card image, bootgen_sysfiles.tgz.
u-boot.elf may have a different name, rename that .elf file to u-boot.elf before using.