[Buildroot] [PATCH v1 1/2] package/zynqmp-firmware: new package

Neal Frager neal.frager at amd.com
Sun Mar 26 14:09:48 UTC 2023


This patch adds a new package to buildroot for building the zynqmp pmufw
with the requirement that the user must provide an external microblaze
toolchain.

The below example config options can be used to build the pmufw.elf v2022.2
using the Xilinx toolchain.

BR2_PACKAGE_ZYNQMP_FIRMWARE=y
BR2_PACKAGE_ZYNQMP_FIRMWARE_VERSION="v2022.2"
BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PATH="/opt/Xilinx/Vitis/2022.2/gnu/microblaze/lin"
BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX="microblaze-xilinx-elf-"

Signed-off-by: Neal Frager <neal.frager at amd.com>
---
 DEVELOPERS                                    |  1 +
 package/Config.in                             |  1 +
 package/zynqmp-firmware/Config.in             | 32 ++++++++++++++++
 ...misc-Makefile-build-par_libs-with-j1.patch | 31 +++++++++++++++
 package/zynqmp-firmware/zynqmp-firmware.mk    | 38 +++++++++++++++++++
 5 files changed, 103 insertions(+)
 create mode 100644 package/zynqmp-firmware/Config.in
 create mode 100644 package/zynqmp-firmware/v1-0001-pmufw-misc-Makefile-build-par_libs-with-j1.patch
 create mode 100644 package/zynqmp-firmware/zynqmp-firmware.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index b6d288c54f..d3436d40f2 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2151,6 +2151,7 @@ F:	configs/zynqmp_zcu106_defconfig
 F:	configs/zynqmp_kria_kv260_defconfig
 F:	package/bootgen/
 F:	package/versal-firmware/
+F:	package/zynqmp-firmware/
 
 N:	Nicola Di Lieto <nicola.dilieto at gmail.com>
 F:	package/uacme/
diff --git a/package/Config.in b/package/Config.in
index 0f8dab3e71..6c7419490d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -450,6 +450,7 @@ menu "Firmware"
 	source "package/wilc-firmware/Config.in"
 	source "package/wilink-bt-firmware/Config.in"
 	source "package/zd1211-firmware/Config.in"
+	source "package/zynqmp-firmware/Config.in"
 endmenu
 	source "package/18xx-ti-utils/Config.in"
 	source "package/a10disp/Config.in"
diff --git a/package/zynqmp-firmware/Config.in b/package/zynqmp-firmware/Config.in
new file mode 100644
index 0000000000..3d0d0605f6
--- /dev/null
+++ b/package/zynqmp-firmware/Config.in
@@ -0,0 +1,32 @@
+config BR2_PACKAGE_ZYNQMP_FIRMWARE
+	bool "zynqmp-firmware"
+	help
+	  This package builds the PMU Firmware application required to run
+	  U-Boot and Linux in the Zynq MPSoC devices.
+
+if BR2_PACKAGE_ZYNQMP_FIRMWARE
+
+config BR2_PACKAGE_ZYNQMP_FIRMWARE_VERSION
+	string "firmware version"
+	default "v2022.2"
+	help
+	  Release version of zynqmp firmware.
+
+config BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PATH
+	string "toolchain path"
+	default "/opt/Xilinx/Vitis/2022.2/gnu/microblaze/lin"
+	help
+	  Path to pre-installed microblaze toolchain.
+
+config BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX
+	string "toolchain prefix"
+	default "microblaze-xilinx-elf-"
+	help
+	  Pre-installed microblaze toolchain prefix.
+
+config BR2_PACKAGE_ZYNQMP_FIRMWARE_KRIA_K26
+	bool "kria-k26"
+	help
+	  Adds additional CFLAGS for Kria K26 SOMs.
+
+endif # BR2_PACKAGE_ZYNQMP_FIRMWARE
diff --git a/package/zynqmp-firmware/v1-0001-pmufw-misc-Makefile-build-par_libs-with-j1.patch b/package/zynqmp-firmware/v1-0001-pmufw-misc-Makefile-build-par_libs-with-j1.patch
new file mode 100644
index 0000000000..adf866637b
--- /dev/null
+++ b/package/zynqmp-firmware/v1-0001-pmufw-misc-Makefile-build-par_libs-with-j1.patch
@@ -0,0 +1,31 @@
+From 4938b250982d440fec3a1bb838be10d9a73949aa Mon Sep 17 00:00:00 2001
+From: Neal Frager <neal.frager at amd.com>
+Date: Sun, 26 Mar 2023 13:38:02 +0100
+Subject: [PATCH v1 1/1] pmufw: misc/Makefile: build par_libs with -j1
+
+This patch fixes a build problem with the pmufw par_libs.  If the -j1
+make option is not used, then building the par_libs can fail when
+building on certain servers.  Using the -j1 option guarantees build
+success of the zynqmp_pmufw.
+
+Signed-off-by: Neal Frager <neal.frager at amd.com>
+---
+ lib/sw_apps/zynqmp_pmufw/misc/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/sw_apps/zynqmp_pmufw/misc/Makefile b/lib/sw_apps/zynqmp_pmufw/misc/Makefile
+index a773498512..7f4d5540b0 100644
+--- a/lib/sw_apps/zynqmp_pmufw/misc/Makefile
++++ b/lib/sw_apps/zynqmp_pmufw/misc/Makefile
+@@ -17,7 +17,7 @@ endif
+ 
+ all:
+ 	$(MAKE) --no-print-directory seq_libs
+-	$(MAKE) -j --no-print-directory par_libs
++	$(MAKE) -j1 --no-print-directory par_libs
+ 	$(MAKE) --no-print-directory archive
+ 	@echo 'Finished building libraries'
+ 
+-- 
+2.17.1
+
diff --git a/package/zynqmp-firmware/zynqmp-firmware.mk b/package/zynqmp-firmware/zynqmp-firmware.mk
new file mode 100644
index 0000000000..3d33142258
--- /dev/null
+++ b/package/zynqmp-firmware/zynqmp-firmware.mk
@@ -0,0 +1,38 @@
+################################################################################
+#
+# zynqmp-firmware
+#
+################################################################################
+
+ZYNQMP_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_ZYNQMP_FIRMWARE_VERSION))
+ZYNQMP_FIRMWARE_SOURCE = xilinx_$(ZYNQMP_FIRMWARE_VERSION).tar.gz
+ZYNQMP_FIRMWARE_SITE = https://github.com/Xilinx/embeddedsw/archive/refs/tags
+ZYNQMP_FIRMWARE_LICENSE = MIT
+ZYNQMP_FIRMWARE_LICENSE_FILES = license.txt
+ZYNQMP_FIRMWARE_INSTALL_IMAGES = YES
+ZYNQMP_FIRMWARE_INSTALL_TARGET = NO
+
+ZYNQMP_FIRMWARE_TOOLCHAIN_PATH = $(call qstrip,$(BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PATH))
+ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX = $(call qstrip,$(BR2_PACKAGE_ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX))
+
+ifeq ($(BR2_PACKAGE_ZYNQMP_FIRMWARE_KRIA_K26),y)
+ZYNQMP_CFLAGS = "-Os -flto -ffat-lto-objects -DBOARD_SHUTDOWN_PIN=2 -DBOARD_SHUTDOWN_PIN_STATE=0 \
+		-DENABLE_EM -DENABLE_MOD_OVERTEMP -DENABLE_DYNAMIC_MIO_CONFIG -DENABLE_IOCTL \
+		-DCONNECT_PMU_GPO_2_VAL=0"
+else
+ZYNQMP_CFLAGS = "-Os -flto -ffat-lto-objects"
+endif
+
+define ZYNQMP_FIRMWARE_BUILD_CMDS
+	cd $(@D)/lib/sw_apps/zynqmp_pmufw/src && make \
+		COMPILER=$(ZYNQMP_FIRMWARE_TOOLCHAIN_PATH)/$(ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX)gcc \
+		ARCHIVER=$(ZYNQMP_FIRMWARE_TOOLCHAIN_PATH)/$(ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX)gcc-ar \
+		CC=$(ZYNQMP_FIRMWARE_TOOLCHAIN_PATH)/$(ZYNQMP_FIRMWARE_TOOLCHAIN_PREFIX)gcc \
+		CFLAGS=$(ZYNQMP_CFLAGS)
+endef
+
+define ZYNQMP_FIRMWARE_INSTALL_IMAGES_CMDS
+	$(INSTALL) -D -m 0644 $(@D)/lib/sw_apps/zynqmp_pmufw/src/executable.elf $(BINARIES_DIR)/pmufw.elf
+endef
+
+$(eval $(generic-package))
-- 
2.17.1




More information about the buildroot mailing list