瀏覽代碼

boot/xilinx-prebuilt: new boot package

This patch add a new boot package for downloading prebuilt firmware for Xilinx
versal and zynqmp evaluation boards.

It solves the problem of being able to verify the hash when downloading a
prebuilt zynqmp pmufw.elf binary.

Signed-off-by: Neal Frager <neal.frager@amd.com>
Reviewed-by: Brandon Maier <brandon.maier@collins.com>
[yann.morin.1998@free.fr:
  - move the hash file to the package dir, not the board dir
  - move board name after familly choice
  - add default board name for each family
  - qstrip the Kconfig strings before use
  - introduce XILINX_PREBUILT_BOARD_DIR to simplify paths
  - explain the *.pdi glob
  - simplify non-versal install
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Neal Frager 1 年之前
父節點
當前提交
a6648ad8da
共有 5 個文件被更改,包括 96 次插入0 次删除
  1. 2 0
      DEVELOPERS
  2. 1 0
      boot/Config.in
  3. 48 0
      boot/xilinx-prebuilt/Config.in
  4. 2 0
      boot/xilinx-prebuilt/xilinx-prebuilt.hash
  5. 43 0
      boot/xilinx-prebuilt/xilinx-prebuilt.mk

+ 2 - 0
DEVELOPERS

@@ -2336,8 +2336,10 @@ F:	package/qt5/qt5opcua/
 
 N:	Neal Frager <neal.frager@amd.com>
 F:	board/versal/
+F:	board/xilinx/
 F:	board/zynq/
 F:	board/zynqmp/
+F:	boot/xilinx-prebuilt/
 F:	configs/versal_vck190_defconfig
 F:	configs/zynq_zc702_defconfig
 F:	configs/zynq_zc706_defconfig

+ 1 - 0
boot/Config.in

@@ -21,5 +21,6 @@ source "boot/ti-k3-boot-firmware/Config.in"
 source "boot/ti-k3-r5-loader/Config.in"
 source "boot/uboot/Config.in"
 source "boot/vexpress-firmware/Config.in"
+source "boot/xilinx-prebuilt/Config.in"
 
 endmenu

+ 48 - 0
boot/xilinx-prebuilt/Config.in

@@ -0,0 +1,48 @@
+config BR2_TARGET_XILINX_PREBUILT
+	bool "xilinx-prebuilt"
+	depends on BR2_aarch64
+	help
+	  Pre-built firmware files for Xilinx boards.
+
+	  https://github.com/Xilinx/soc-prebuilt-firmware
+
+if BR2_TARGET_XILINX_PREBUILT
+
+config BR2_TARGET_XILINX_PREBUILT_VERSION
+	string "prebuilt version"
+	default "xilinx_v2024.1"
+	help
+	  Release version of Xilinx firmware.
+	  Must be xilinx_v2023.1 or newer.
+
+choice
+	bool "family variant"
+	default BR2_TARGET_XILINX_PREBUILT_ZYNQMP
+
+config BR2_TARGET_XILINX_PREBUILT_ZYNQMP
+	bool "zynqmp"
+
+config BR2_TARGET_XILINX_PREBUILT_KRIA
+	bool "kria"
+
+config BR2_TARGET_XILINX_PREBUILT_VERSAL
+	bool "versal"
+
+endchoice
+
+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
+
+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
+	help
+	  Name of Xilinx target board.
+	  Used for installing the appropriate firmware.
+
+endif # BR2_TARGET_XILINX_PREBUILT

+ 2 - 0
boot/xilinx-prebuilt/xilinx-prebuilt.hash

@@ -0,0 +1,2 @@
+# Locally calculated
+sha256  7abcba4e0e44e3a4adf9c1f971d918575226d7604dfd64a386baaa00c1c6c35f  xilinx-prebuilt-xilinx_v2024.1.tar.gz

+ 43 - 0
boot/xilinx-prebuilt/xilinx-prebuilt.mk

@@ -0,0 +1,43 @@
+################################################################################
+#
+# xilinx-prebuilt
+#
+################################################################################
+
+XILINX_PREBUILT_VERSION = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_VERSION))
+XILINX_PREBUILT_SITE = $(call github,Xilinx,soc-prebuilt-firmware,$(XILINX_PREBUILT_VERSION))
+XILINX_PREBUILT_LICENSE = MIT
+XILINX_PREBUILT_LICENSE_FILES = LICENSE
+XILINX_PREBUILT_INSTALL_TARGET = NO
+XILINX_PREBUILT_INSTALL_IMAGES = YES
+
+XILINX_PREBUILT_FAMILY = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_FAMILY))
+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)
+# We need the *.pdi glob, because the file has different names for the
+# different boards, but htere is only one, and it has to be named
+# vpl_gen_fixed.pdi when installed.
+define XILINX_PREBUILT_INSTALL_VERSAL
+	$(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/plm.elf \
+		$(BINARIES_DIR)/plm.elf
+	$(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf \
+		$(BINARIES_DIR)/psmfw.elf
+	$(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/*.pdi \
+		$(BINARIES_DIR)/vpl_gen_fixed.pdi
+endef
+else # BR2_TARGET_XILINX_PREBUILT_VERSAL
+define XILINX_PREBUILT_INSTALL_OTHERS
+	$(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/pmufw.elf \
+		$(BINARIES_DIR)/pmufw.elf
+endef
+endif # BR2_TARGET_XILINX_PREBUILT_VERSAL
+
+define XILINX_PREBUILT_INSTALL_IMAGES_CMDS
+	$(XILINX_PREBUILT_INSTALL_VERSAL)
+	$(XILINX_PREBUILT_INSTALL_OTHERS)
+endef
+
+$(eval $(generic-package))