[Buildroot] [PATCH v3 3/3] boot/xilinx-prebuilt: install pld.pdi to target
Neal Frager
neal.frager at amd.com
Wed Apr 9 11:04:55 UTC 2025
With the Versal Segmented Configuration, it is possible to load a PL bitstream
at run-time using the Linux fpgautil application. Whenever Segmented
Configuration is used, both the boot.pdi and pld.pdi files will be available
to Buildroot. For this reason, this patch improves the user experience by
installing the pld.pdi file to the target file system for run-time loading
whenever Versal Segemented Configuration is used.
If the fpgautil application is available in the target file system, it can
be used for loading the pld.pdi using the target command below.
fpgautil -b /lib/firmware/xilinx/*_pld.pdi
The source code for the fpgautil application can be found here:
https://github.com/Xilinx/meta-xilinx/blob/master/meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c
Along with usage details:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1188397412/Solution+Versal+PL+Programming
Signed-off-by: Neal Frager <neal.frager at amd.com>
---
V1->V2:
- New to patch series
V2->V3:
- Changed wildcards to more specific name "*_pld.pdi".
- Changed install directory for _pld.pdi to $(TARGET_DIR)/lib/firmware/xilinx
to match Yocto default location.
- Changed pdi file permissions to 0644.
---
boot/xilinx-prebuilt/xilinx-prebuilt.mk | 26 ++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/boot/xilinx-prebuilt/xilinx-prebuilt.mk b/boot/xilinx-prebuilt/xilinx-prebuilt.mk
index 05dc9aebe8..decc54b136 100644
--- a/boot/xilinx-prebuilt/xilinx-prebuilt.mk
+++ b/boot/xilinx-prebuilt/xilinx-prebuilt.mk
@@ -19,7 +19,6 @@ XILINX_PREBUILT_LICENSE = MIT
XILINX_PREBUILT_LICENSE_FILES = LICENSE
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
-XILINX_PREBUILT_INSTALL_TARGET = NO
XILINX_PREBUILT_INSTALL_IMAGES = YES
XILINX_PREBUILT_FAMILY = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_FAMILY))
@@ -48,6 +47,16 @@ define XILINX_PREBUILT_INSTALL_VERSAL_XSA_BOOT_PDI
) \
$(BINARIES_DIR)/boot.pdi
endef
+
+# Install pld.pdi in target file system for run-time loading when using
+# Versal Segmented Configuration.
+define XILINX_PREBUILT_INSTALL_VERSAL_XSA_PLD_PDI
+ $(if $(wildcard $(@D)/*_pld.pdi),
+ mkdir -p $(TARGET_DIR)/lib/firmware/xilinx && \
+ $(INSTALL) -D -m 0644 $(@D)/*_pld.pdi \
+ $(TARGET_DIR)/lib/firmware/xilinx
+ )
+endef
else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
XILINX_PREBUILT_PLM = $(XILINX_PREBUILT_BOARD_DIR)/plm.elf
XILINX_PREBUILT_PSMFW = $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf
@@ -63,6 +72,16 @@ define XILINX_PREBUILT_INSTALL_VERSAL_BOOT_PDI
) \
$(BINARIES_DIR)/boot.pdi
endef
+
+# Install pld.pdi in target file system for run-time loading when using
+# Segmented Configuration.
+define XILINX_PREBUILT_INSTALL_VERSAL_PLD_PDI
+ $(if $(wildcard $(XILINX_PREBUILT_BOARD_DIR)/*_pld.pdi),
+ mkdir -p $(TARGET_DIR)/lib/firmware/xilinx && \
+ $(INSTALL) -D -m 0644 $(XILINX_PREBUILT_BOARD_DIR)/*_pld.pdi \
+ $(TARGET_DIR)/lib/firmware/xilinx
+ )
+endef
endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PLM),y)
@@ -96,4 +115,9 @@ define XILINX_PREBUILT_INSTALL_IMAGES_CMDS
$(XILINX_PREBUILT_INSTALL_ZYNQMP_PMUFW)
endef
+define XILINX_PREBUILT_INSTALL_TARGET_CMDS
+ $(XILINX_PREBUILT_INSTALL_VERSAL_PLD_PDI)
+ $(XILINX_PREBUILT_INSTALL_VERSAL_XSA_PLD_PDI)
+endef
+
$(eval $(generic-package))
--
2.25.1
More information about the buildroot
mailing list