Build the boot image BOOT.BIN
Caution
This flow is not supported by us in Cygwin! Use Linux terminal or WSL instead, or the not recommended option -> Building the BOOT.BIN in Vivado GUI.
The boot image BOOT.BIN
is built using the
AMD Xilinx Bootgen tool
which requires several input files.
For ease of use, we provide a bash shell script which allows
building the BOOT.BIN from system_top.xsa
(generated from building the
project) and u-boot.elf
(from the SD card with Kuiper image).
Warning
You need to have the AMD Xilinx Vivado, Vitis and Bootgen tool paths in
the $PATH
environment variable.
Check the Enviroment section of Build an HDL project.
As prerequisites, you need to have xlsclients
from the x11-utils
package
installed in your Linux/WSL system.
For Zynq
This section applies to the Zynq-based carriers from our list.
Make sure that AMD Xilinx Vivado and Vitis are included in the path and a
cross-compiler for arm
exists before running the script.
For more information about cross compilers, see
Building the Zynq Linux kernel and devicetrees from source.
The script used is build_boot_bin.sh, which needs to be downloaded on your computer.
The script can take 3 parameters:
the path to the
system_top.xsa
;the path to the
u-boot.elf
;the
name
of the tar.gz output archive (name
.tar.gz) (optional).
Important
The u-boot can be taken from the bootgen_sysfiles.tgz archive located in the project folder of the ADI Kuiper Linux image from the SD card.
Keep in mind that the u-boot is FPGA-specific!
See the beginning of SD card flashing for instructions on how to obtain the ADI Kuiper image.
If you didn’t use make
parameters when building the project, then
the script can be saved in the folder local to the project (for
example, hdl/projects/$ADI_PART/$CARRIER) and to be run from there.
If you did use make
parameters, then you need to go to the build folder
that was created based on the parameters you gave,
(would look like this hdl/projects/$ADI_PART/$CARRIER/$param1_param2),
save it there and run it from there.
~$
cd hdl/projects/fmcomms2/zed
~/hdl/projects/fmcomms2/zed$
chmod +x build_boot_bin.sh
~/hdl/projects/fmcomms2/zed$
./build_boot_bin.sh fmcomms2_zed.sdk/system_top.xsa path/to/u-boot.elf [output-archive]
The build output (BOOT.BIN
) can be found in the local directory
output_boot_bin
where you ran the command.
The folder follows the following pattern if make
parameters were not used
hdl/projects/$ADI_PART/$CARRIER/output_boot_bin, and this pattern if
parameters were used
hdl/projects/$ADI_PART/$CARRIER/$PARAM1_PARAM2/output_boot_bin.
For Zynq UltraScale+ MP
This section applies to the ZynqMP-based carriers (Zynq UltraScale+ MPSoC), usually ZCU102 in our systems, but not limited to this one only.
Make sure that AMD Xilinx Vivado and Vitis are included in the path and a
cross-compiler for arm64
exists before running the script.
For more information about cross compilers, see
Building the ZynqMP / MPSoC Linux kernel and devicetrees from source.
The script used is build_zynqmp_boot_bin.sh, which needs to be downloaded on your computer.
The script can take 4 parameters (the last one is optional):
the path to the
system_top.xsa
;the path to the
u-boot.elf
;the path to the
bl31.elf
;the
name
of the tar.gz output archive (name
.tar.gz) (optional).
Important
The u-boot and the bl31.elf can be taken from the bootgen_sysfiles.tgz archive located in the project folder of the ADI Kuiper Linux image from the SD card.
Keep in mind that the u-boot is FPGA-specific!
See the beginning of SD card flashing for instructions on how to obtain the ADI Kuiper image.
If you didn’t use make
parameters when building the project, then
the script can be saved in the folder local to the project (for
example, hdl/projects/$ADI_PART/$CARRIER) and to be run from there.
If you did use make
parameters, then you need to go to the build folder
that was created based on the parameters you gave,
(would look like this hdl/projects/$ADI_PART/$CARRIER/$param1_param2),
save it there and run it from there.
~$
cd hdl/projects/fmcomms2/zcu102
~/hdl/projects/fmcomms2/zcu102$
chmod +x build_zynqmp_boot_bin.sh
~/hdl/projects/fmcomms2/zcu102$
./build_zynqmp_boot_bin.sh fmcomms2_zcu102.sdk/system_top.xsa path/to/u-boot.elf path/to/bl31.elf
The build output (BOOT.BIN
) can be found in the local directory
output_boot_bin
where you ran the command.
The folder follows the following pattern if make
parameters were not used
hdl/projects/$ADI_PART/$CARRIER/output_boot_bin, and this pattern if
parameters were used
hdl/projects/$ADI_PART/$CARRIER/$PARAM1_PARAM2/output_boot_bin.
For Versal
This section applies only to the Versal carriers: VCK190 and VPK180.
Make sure that AMD Xilinx Vivado and Vitis are included in the path and a
cross-compiler for arm64
exists before running the script.
For more information about cross compilers, see
Building the ZynqMP / MPSoC Linux kernel and devicetrees from source.
The script used is build_versal_boot_bin.sh, which needs to be downloaded on your computer.
The script can take 4 parameters:
the path to the
system_top.xsa
;the path to the
u-boot.elf
;the path to the
bl31.elf
;the
name
of the tar.gz output archive (name
.tar.gz) (optional).
Important
The u-boot and the bl31.elf can be taken from the bootgen_sysfiles.tgz archive located in the project folder of the ADI Kuiper Linux image from the SD card.
Keep in mind that the u-boot is FPGA-specific!
See the beginning of SD card flashing for instructions on how to obtain the ADI Kuiper image.
If you didn’t use make
parameters when building the project, then
the script can be saved in the folder local to the project (for
example, hdl/projects/$ADI_PART/$CARRIER) and to be run from there.
If you did use make
parameters, then you need to go to the build folder
that was created based on the parameters you gave,
(would look like this hdl/projects/$ADI_PART/$CARRIER/$param1_param2),
save it there and run it from there.
~$
cd hdl/projects/ad9081_fmca_ebz/vck190
~/hdl/projects/ad9081_fmca_ebz/vck190$
chmod +x build_versal_boot_bin.sh
~/hdl/projects/ad9081_fmca_ebz/vck190$
./build_versal_boot_bin.sh ad9081_fmca_ebz.vck190.sdk/system_top.xsa (download | u-boot.elf) (download | bl31.elf | <path-to-arm-trusted-firmware-source>) [output-archive]
The build output (BOOT.BIN
) can be found in the local directory
output_boot_bin
where you ran the command.
The folder follows the following pattern if make
parameters were not used
hdl/projects/$ADI_PART/$CARRIER/output_boot_bin, and this pattern if
parameters were used
hdl/projects/$ADI_PART/$CARRIER/$PARAM1_PARAM2/output_boot_bin.
More information
(NOT RECOMMENDED) If you’re in for the long story, check out the AMD Xilinx wiki pages.