[RFC PATCH] tools: zynqmp: add build script and documentation for ZynqMP KV260
Michal Simek
michal.simek at amd.com
Fri Jun 13 09:55:08 CEST 2025
On 6/12/25 17:32, Jerome Forissier wrote:
> Add a script to help build a functional U-Boot binary for the ZynqMP
> Kria KV260. Also add some documentation.
>
> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
> ---
>
> doc/board/xilinx/index.rst | 1 +
> doc/board/xilinx/zynqmp-kv260.rst | 27 +++++++++
> tools/zynqmp_kv260_build.sh | 43 ++++++++++++++
> tools/zynqmp_pmufw_elf_convert.py | 96 +++++++++++++++++++++++++++++++
> 4 files changed, 167 insertions(+)
> create mode 100644 doc/board/xilinx/zynqmp-kv260.rst
> create mode 100755 tools/zynqmp_kv260_build.sh
> create mode 100755 tools/zynqmp_pmufw_elf_convert.py
>
> diff --git a/doc/board/xilinx/index.rst b/doc/board/xilinx/index.rst
> index 2e31fe3f3a4..3f3a85b709c 100644
> --- a/doc/board/xilinx/index.rst
> +++ b/doc/board/xilinx/index.rst
> @@ -9,4 +9,5 @@ Xilinx
> xilinx
> zynq
> zynqmp
> + zynqmp-kv260
> zynqmp-r5
> diff --git a/doc/board/xilinx/zynqmp-kv260.rst b/doc/board/xilinx/zynqmp-kv260.rst
> new file mode 100644
> index 00000000000..219bbd602e9
> --- /dev/null
> +++ b/doc/board/xilinx/zynqmp-kv260.rst
> @@ -0,0 +1,27 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. (C) Copyright 2025 Linaro Ltd.
> +
> +ZYNQMP KV260
> +============
> +
> +Building
> +--------
> +
> +To build for the KV260:
> +
> + $ ./tools/zynqmp_kv260_build.sh
> +
> +The first invocation will fetch and build some required binaries (bl31.bin,
> +pm_cfg_obj.o, pmufw.bin). Subsequently `make` can be invoked directly as
> +follows:
> +
> + $ export BL31=bl31.bin
> + # export CROSS_COMPILE=aarch64-linux-gnu-
> + $ make -j$(nproc) BINMAN_ALLOW_MISSING=1
> +
> +Flashing
> +--------
> +
> +Press the FWUEN button on the carrier board, the press and release the RESET
> +button, then release FWUEN. Connect to the embedded HTTP server and upload
> +`qspi.bin`. Press and release RESET again.
> diff --git a/tools/zynqmp_kv260_build.sh b/tools/zynqmp_kv260_build.sh
> new file mode 100755
> index 00000000000..3cf7147e3a6
> --- /dev/null
> +++ b/tools/zynqmp_kv260_build.sh
> @@ -0,0 +1,43 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +# Copyright (C) 2025 Linaro Ltd.
> +
> +set -ex
> +
> +if [ "$1" == "-c" ]; then
> + rm -f bl31.bin pmufw.elf pmufw.bin pm_cfg_obj.c pm_cfg_obj.o
> + exit 0
> +fi
> +[ -e bl31.bin ] || {
> + ATF_SRC=$(mktemp -d /tmp/arm-trusted-firmware.XXXXXXXXXX)
> + git clone https://github.com/ARM-software/arm-trusted-firmware ${ATF_SRC}
> + make -C ${ATF_SRC} -j$(nproc) bl31 CROSS_COMPILE=aarch64-linux-gnu- \
> + LOG_LEVEL=40 ZYNQMP_CONSOLE=cadence1 CONSOLE_RUNTIME=cadence1 \
> + RESET_TO_BL31=1 PLAT=zynqmp ZYNQMP_ATF_MEM_BASE=0x10000 \
> + ZYNQMP_ATF_MEM_SIZE=0x2ffff ENABLE_LTO=1
As I told you this is shortcut. Recommendation is to put TF-A to OCM with FSBL.
That's why there are some challenges in connection to fit both of them there.
Another thing is that none is creating reservation for TFA in DT. When you boot
Linux than there is big chance that user application will rewrite TF-A and you
break your platform because of missing protection.
> + cp ${ATF_SRC}/build/zynqmp/release/bl31.bin .
> + rm -rf ${ATF_SRC}
> +}
> +[ -e pmufw.bin ] || {
> + wget https://github.com/Xilinx/soc-prebuilt-firmware/raw/refs/heads/xlnx_rel_v2023.1/kv260-kria/pmufw.elf
Better to use 2025.1 version.
> + ./tools/zynqmp_pmufw_elf_convert.py pmufw.elf pmufw.bin
> +}
> +[ -e pm_cfg_obj.o ] || {
> + wget https://github.com/Xilinx/embeddedsw/raw/refs/heads/xlnx_rel_v2023.1/lib/sw_apps/zynqmp_fsbl/misc/pm_cfg_obj.c
This is any generic configuration which is not aligned with standard firmware.
It means yes you can use it but it is missing SOM specific configuration. It
means for example power off don't need to work. Also this can work on kv260 only
but don't need to work on kr260.
My way is to extract it from released fsbl instead but up2you.
M
More information about the U-Boot
mailing list