boot/xilinx-prebuilt: add versal2 support

Add support for Xilinx versal2 devices to download the boot.pdi, pld.pdi and
plm.elf files from the Xilinx/soc-prebuilt-firmware repo.

Since the psmfw.elf does not exist for versal2 devices, the installation of
this image has been split out for original versal devices only, whereas the
other images are all common between versal and versal2 device families.

For more information about the Xilinx Versal Gen2 series:
https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal/gen2/ai-edge-series.html
https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal/gen2/prime-series.html

Signed-off-by: Neal Frager <neal.frager@amd.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Neal Frager
2025-12-02 10:05:15 +00:00
committed by Julien Olivain
parent c7d703b202
commit 1609e85322
2 changed files with 33 additions and 10 deletions

View File

@@ -26,6 +26,7 @@ choice
bool "family variant"
default BR2_TARGET_XILINX_PREBUILT_VERSAL if BR2_PACKAGE_VERSAL_FIRMWARE # legacy
default BR2_TARGET_XILINX_PREBUILT_VERSAL if BR2_cortex_a72
default BR2_TARGET_XILINX_PREBUILT_VERSAL2 if BR2_cortex_a78
default BR2_TARGET_XILINX_PREBUILT_ZYNQMP
config BR2_TARGET_XILINX_PREBUILT_ZYNQMP
@@ -40,14 +41,21 @@ config BR2_TARGET_XILINX_PREBUILT_VERSAL
bool "versal"
depends on BR2_cortex_a72
config BR2_TARGET_XILINX_PREBUILT_VERSAL2
bool "versal2"
depends on BR2_cortex_a78
help
Version must be xilinx_v2025.2 or newer.
endchoice
config BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
bool "download a prebuilt Versal XSA"
depends on BR2_TARGET_XILINX_PREBUILT_VERSAL
depends on BR2_TARGET_XILINX_PREBUILT_VERSAL || BR2_TARGET_XILINX_PREBUILT_VERSAL2
help
The Xilinx Support Archive (XSA) provides custom Xilinx
firmware files generated by the AMD Vivado Design Suite.
This option applies to either versal or versal2.
https://docs.amd.com/r/en-US/ug1400-vitis-embedded/Creating-a-Hardware-Design-XSA-File
@@ -64,28 +72,33 @@ config BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA_LOCATION
use a make variable like $(TOPDIR) to reference the root of
the Buildroot tree.
This option applies to either versal or versal2.
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
config BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI
bool "install versal pld.pdi"
depends on BR2_TARGET_XILINX_PREBUILT_VERSAL
depends on BR2_TARGET_XILINX_PREBUILT_VERSAL || BR2_TARGET_XILINX_PREBUILT_VERSAL2
help
When using the Versal Segmented Configuration, there is a
pld.pdi file containing the FPGA bitstream which can be
loaded at run-time. By enabling this option, the pld.pdi
will be installed to the target /lib/firmware/xilinx dir.
This option applies to either versal or versal2.
config BR2_TARGET_XILINX_PREBUILT_FAMILY
string
default "zynqmp" if BR2_TARGET_XILINX_PREBUILT_ZYNQMP
default "kria" if BR2_TARGET_XILINX_PREBUILT_KRIA
default "versal" if BR2_TARGET_XILINX_PREBUILT_VERSAL
default "versal_2ve_2vm" if BR2_TARGET_XILINX_PREBUILT_VERSAL2
config BR2_TARGET_XILINX_PREBUILT_BOARD
string "board name"
default "zcu102" if BR2_TARGET_XILINX_PREBUILT_ZYNQMP
default "kr260" if BR2_TARGET_XILINX_PREBUILT_KRIA
default "vck190" if BR2_TARGET_XILINX_PREBUILT_VERSAL
default "vek385" if BR2_TARGET_XILINX_PREBUILT_VERSAL2
help
Name of Xilinx target board.
Used for installing the appropriate firmware.

View File

@@ -26,16 +26,11 @@ XILINX_PREBUILT_BOARD = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_BOARD))
XILINX_PREBUILT_BOARD_DIR = $(@D)/$(XILINX_PREBUILT_BOARD)-$(XILINX_PREBUILT_FAMILY)
ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL),y)
# Common Files for All Versal Families
ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL)$(BR2_TARGET_XILINX_PREBUILT_VERSAL2),y)
ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y)
# Supports either plm.elf or plmfw.elf filenames
XILINX_PREBUILT_PLM = $(@D)/pdi_files/gen_files/plm*.elf
# Unlike the psmfw.elf file for Xilinx development boards,
# AMD Vivado Design Suite currently generates a file named psm_fw.elf.
# Future versions of AMD Vivado will generate a file named psmfw.elf,
# so to support current and future AMD Vivado versions, the filename
# psm*fw.elf is used.
XILINX_PREBUILT_PSMFW = $(@D)/pdi_files/static_files/psm*fw.elf
# We need the *.pdi glob, because the file has different names for the
# different boards, and it has to be named boot.pdi when installed.
# If Segmented Configuration is used, there will be two pdi files and we need
@@ -63,7 +58,6 @@ endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI
else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
# Supports either plm.elf or plmfw.elf filenames
XILINX_PREBUILT_PLM = $(XILINX_PREBUILT_BOARD_DIR)/plm*.elf
XILINX_PREBUILT_PSMFW = $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf
# We need the *.pdi glob, because the file has different names for the
# different boards, and it has to be named boot.pdi when installed.
# If Segmented Configuration is used, there will be two pdi files and we need
@@ -91,11 +85,27 @@ endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PLM),y)
ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL2_PLM),y)
define XILINX_PREBUILT_INSTALL_VERSAL_PLM
$(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PLM) \
$(BINARIES_DIR)/plm.elf
endef
endif # !BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL2_PLM
endif # !BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PLM
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL | BR2_TARGET_XILINX_PREBUILT_VERSAL2
# Files specific to Versal Gen1
ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL),y)
ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y)
# Unlike the psmfw.elf file for Xilinx development boards,
# AMD Vivado Design Suite currently generates a file named psm_fw.elf.
# Future versions of AMD Vivado will generate a file named psmfw.elf,
# so to support current and future AMD Vivado versions, the filename
# psm*fw.elf is used.
XILINX_PREBUILT_PSMFW = $(@D)/pdi_files/static_files/psm*fw.elf
else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
XILINX_PREBUILT_PSMFW = $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PSMFW),y)
define XILINX_PREBUILT_INSTALL_VERSAL_PSMFW