summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@xilinx.com>2021-03-09 19:32:45 -0800
committerMark Hatle <mark.hatle@xilinx.com>2021-03-09 19:43:34 -0800
commit48c196dc2c0173f8f0a319d1ad027d2aa04b99bd (patch)
tree6da866840bb3dc9226d3afa2cea429874c672c1d
parent7532ee1ea27dbf913a884c8b3a1ee3ff7795a27c (diff)
downloadmeta-xilinx-48c196dc2c0173f8f0a319d1ad027d2aa04b99bd.tar.gz
embeddedsw: Rework plm/pmu/psm firmware and Linux packaging
In order to allow standalone (meta-xilinx-standalone), XSCT (meta-xilinx-tools), and future items to work in the same way the recipes have been restructured. A *-firmware recipe will generate the firmware and stage it to do_deploy. A *fw recipe will take the deployed version and package it for the Linux side of things. This allows the firmware generation to be easily extended without requiring packaging knowledge. Similarly packaging can be extended for alternative boot/upgrade mechanisms as required. In all cases, the MACHINE configuration will specify the default way the components are to be built, along with the names of the item in the deploy directory. The PLM/PSM/PMU_IMAGE_NAME is the name for the generated firmware. PLM/PSM/PMU_DEPLOY_DIR is the path to the constructed firmware. This along with the IMAGE_NAME above can be used to specify the location of an externally generated set of firmware. Addtionally the dependencies for building the plmfw/psmfw/pmufw can be changed easily using PLM/PSM/PMU_DEPENDS and PLM/PSM/PMU_MCDEPENDS. The former specifies dependencies in the same multiconfig, while the later allows the component to require another multiconfig to have finihed. The system has a referenced default, if multiconfig is enabled it will automatically use it, otherwise it will try to use the recipe in the main configuration. (This will fail unless meta-xilinx-tools is available.) Also two multiconfigs hve been implemented: versal-fw and zynqmp-pmufw They can be enabled using BBMULITCONFIG += "zynqmp-pmufw" or versal-fw. Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
-rw-r--r--meta-xilinx-bsp/conf/machine/include/soc-versal.inc12
-rw-r--r--meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc11
-rw-r--r--meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf4
-rw-r--r--meta-xilinx-bsp/conf/machine/vck190-versal.conf5
-rw-r--r--meta-xilinx-bsp/conf/machine/versal-generic.conf4
-rw-r--r--meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf5
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf3
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf4
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf4
-rw-r--r--meta-xilinx-bsp/conf/machine/zynqmp-generic.conf5
-rw-r--r--meta-xilinx-bsp/recipes-bsp/embeddedsw/plmfw.bb64
-rw-r--r--meta-xilinx-bsp/recipes-bsp/embeddedsw/pmufw.bb65
-rw-r--r--meta-xilinx-bsp/recipes-bsp/embeddedsw/psmfw.bb63
-rw-r--r--meta-xilinx-standalone/conf/multiconfig/versal-fw.conf9
-rw-r--r--meta-xilinx-standalone/conf/multiconfig/zynqmp-pmufw.conf9
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc20
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware.inc22
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.2.bb2
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_git.bb2
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc19
26 files changed, 279 insertions, 71 deletions
diff --git a/meta-xilinx-bsp/conf/machine/include/soc-versal.inc b/meta-xilinx-bsp/conf/machine/include/soc-versal.inc
index a9a94848..abf5f08e 100644
--- a/meta-xilinx-bsp/conf/machine/include/soc-versal.inc
+++ b/meta-xilinx-bsp/conf/machine/include/soc-versal.inc
@@ -17,3 +17,15 @@ KERNEL_IMAGETYPE ?= "Image"
17WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin virtual/arm-trusted-firmware" 17WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin virtual/arm-trusted-firmware"
18 18
19UBOOT_ELF ?= "u-boot.elf" 19UBOOT_ELF ?= "u-boot.elf"
20
21# Default, if multiconfig is off, call plm/psm-firmware directly, otherwise call the versal-fw multiconfig version
22# The Linux compatible plm/psm-firmware though requires meta-xilinx-tools
23PLM_DEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '', 'plm-firmware:do_deploy', d)}"
24PLM_MCDEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', 'mc::versal-fw:plm-firmware:do_deploy', '', d)}"
25PLM_DEPLOY_DIR ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}', '${DEPLOY_DIR_IMAGE}', d)}"
26PLM_IMAGE_NAME ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', 'plm-versal-mb', 'plm-${MACHINE}', d)}"
27
28PSM_DEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '', 'psm-firmware:do_deploy', d)}"
29PSM_MCDEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', 'mc::versal-fw:psm-firmware:do_deploy', '', d)}"
30PSM_FIRMWARE_DEPLOY_DIR ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}', '${DEPLOY_DIR_IMAGE}', d)}"
31PSM_FIRMWARE_IMAGE_NAME ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', 'psm-firmware-versal-mb', 'psm-${MACHINE}', d)}"
diff --git a/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc b/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc
index fb45b73f..9849efd2 100644
--- a/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc
+++ b/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc
@@ -26,3 +26,14 @@ WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin virtual/arm-t
26UBOOT_SUFFIX ?= "bin" 26UBOOT_SUFFIX ?= "bin"
27 27
28XSERVER_EXT_zynqmp ?= "xf86-video-armsoc" 28XSERVER_EXT_zynqmp ?= "xf86-video-armsoc"
29
30# Default PMU ROM
31PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
32
33# Default, if multiconfig is off, call pmu-firmware directly, otherwise call the zynqmp-pmufw multiconfig version
34# The Linux compatible pmu-firmware though requires meta-xilinx-tools
35PMU_DEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', '', 'pmu-firmware:do_deploy', d)}"
36PMU_MCDEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', 'mc::zynqmp-pmufw:pmu-firmware:do_deploy', '', d)}"
37PMU_FIRMWARE_DEPLOY_DIR ?= "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', '${TOPDIR}/tmp-microblaze-zynqmp-pmufw/deploy/images/${MACHINE}', '${DEPLOY_DIR_IMAGE}', d)}"
38PMU_FIRMWARE_IMAGE_NAME ?= "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', 'pmu-firmware-zynqmp-pmu', 'pmu-${MACHINE}', d)}"
39
diff --git a/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf b/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf
index f31c10cf..ad65087c 100644
--- a/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf
@@ -19,9 +19,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
19 19
20KERNEL_DEVICETREE = "xilinx/zynqmp-zcu100-revC.dtb" 20KERNEL_DEVICETREE = "xilinx/zynqmp-zcu100-revC.dtb"
21 21
22PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
23PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
24
25EXTRA_IMAGEDEPENDS += " \ 22EXTRA_IMAGEDEPENDS += " \
26 u-boot-zynq-uenv \ 23 u-boot-zynq-uenv \
27 arm-trusted-firmware \ 24 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf b/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf
index 6a453a2c..6e4f2872 100644
--- a/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf
@@ -13,10 +13,6 @@ SPL_BINARY ?= "spl/boot.bin"
13 13
14SERIAL_CONSOLES ?= "115200;ttyPS0" 14SERIAL_CONSOLES ?= "115200;ttyPS0"
15 15
16# PMU instance args
17PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
18PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
19
20EXTRA_IMAGEDEPENDS += " \ 16EXTRA_IMAGEDEPENDS += " \
21 u-boot-zynq-uenv \ 17 u-boot-zynq-uenv \
22 arm-trusted-firmware \ 18 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/vck190-versal.conf b/meta-xilinx-bsp/conf/machine/vck190-versal.conf
index 647a6b5b..28a07eb4 100644
--- a/meta-xilinx-bsp/conf/machine/vck190-versal.conf
+++ b/meta-xilinx-bsp/conf/machine/vck190-versal.conf
@@ -36,11 +36,6 @@ IMAGE_BOOT_FILES += " \
36 Image \ 36 Image \
37 boot.scr \ 37 boot.scr \
38" 38"
39PLM_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
40PLM_IMAGE_NAME ?= "plm-versal-mb"
41PSM_FIRMWARE_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
42PSM_FIRMWARE_IMAGE_NAME ?= "psm-firmware-versal-mb"
43
44 39
45# This machine has a QEMU model, runqemu setup: 40# This machine has a QEMU model, runqemu setup:
46QB_MEM = "-m 8G" 41QB_MEM = "-m 8G"
diff --git a/meta-xilinx-bsp/conf/machine/versal-generic.conf b/meta-xilinx-bsp/conf/machine/versal-generic.conf
index dd6966a0..2816a9b1 100644
--- a/meta-xilinx-bsp/conf/machine/versal-generic.conf
+++ b/meta-xilinx-bsp/conf/machine/versal-generic.conf
@@ -39,10 +39,6 @@ IMAGE_BOOT_FILES += " \
39 Image \ 39 Image \
40 boot.scr \ 40 boot.scr \
41" 41"
42PLM_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
43PLM_IMAGE_NAME ?= "plm-versal-mb"
44PSM_FIRMWARE_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
45PSM_FIRMWARE_IMAGE_NAME ?= "psm-firmware-versal-mb"
46 42
47# We use the vc-p-a2197-00-versal DTB from the external-hdf. 43# We use the vc-p-a2197-00-versal DTB from the external-hdf.
48HDF_MACHINE = "vc-p-a2197-00-versal" 44HDF_MACHINE = "vc-p-a2197-00-versal"
diff --git a/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
index 3bdb215d..0d45a7b3 100644
--- a/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
@@ -18,9 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
18 18
19KERNEL_DEVICETREE = "xilinx/zynqmp-zc1254-revA.dtb" 19KERNEL_DEVICETREE = "xilinx/zynqmp-zc1254-revA.dtb"
20 20
21PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
22PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
23
24EXTRA_IMAGEDEPENDS += " \ 21EXTRA_IMAGEDEPENDS += " \
25 u-boot-zynq-uenv \ 22 u-boot-zynq-uenv \
26 arm-trusted-firmware \ 23 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
index 2c890cfb..0add656f 100644
--- a/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
@@ -55,11 +55,6 @@ QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
55QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5" 55QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
56QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw" 56QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
57 57
58# PMU instance args
59PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
60PMU_FIRMWARE_DEPLOY_DIR ?= "${@ '${TOPDIR}/pmutmp/deploy/images/microblaze-pmu' if d.getVar('BBMULTICONFIG') == 'pmu' else '${TOPDIR}/tmp/deploy/images/${MACHINE}'}"
61PMU_FIRMWARE_IMAGE_NAME ?= "${@ 'pmu-firmware-microblaze-pmu' if d.getVar('BBMULTICONFIG') == 'pmu' else 'pmu-zcu102-zynqmp'}"
62
63QB_PMU_OPT = " \ 58QB_PMU_OPT = " \
64 -M microblaze-fdt \ 59 -M microblaze-fdt \
65 -display none \ 60 -display none \
diff --git a/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
index 17a677fe..f97ffa37 100644
--- a/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
@@ -18,9 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
18 18
19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu104-revC.dtb" 19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu104-revC.dtb"
20 20
21PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
22PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
23
24EXTRA_IMAGEDEPENDS += " \ 21EXTRA_IMAGEDEPENDS += " \
25 u-boot-zynq-uenv \ 22 u-boot-zynq-uenv \
26 arm-trusted-firmware \ 23 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
index 27ab2a98..045d6f6c 100644
--- a/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
@@ -16,9 +16,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
16 16
17KERNEL_DEVICETREE = "xilinx/zynqmp-zcu106-revA.dtb" 17KERNEL_DEVICETREE = "xilinx/zynqmp-zcu106-revA.dtb"
18 18
19PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
20PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
21
22EXTRA_IMAGEDEPENDS += " \ 19EXTRA_IMAGEDEPENDS += " \
23 u-boot-zynq-uenv \ 20 u-boot-zynq-uenv \
24 arm-trusted-firmware \ 21 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
index 24e96ad6..813f7453 100644
--- a/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
@@ -18,9 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
18 18
19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu111-revA.dtb" 19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu111-revA.dtb"
20 20
21PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
22PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
23
24EXTRA_IMAGEDEPENDS += " \ 21EXTRA_IMAGEDEPENDS += " \
25 u-boot-zynq-uenv \ 22 u-boot-zynq-uenv \
26 arm-trusted-firmware \ 23 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
index 2ac4004f..91d2761c 100644
--- a/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
@@ -18,9 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
18 18
19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1275-revB.dtb" 19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1275-revB.dtb"
20 20
21PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
22PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
23
24EXTRA_IMAGEDEPENDS += " \ 21EXTRA_IMAGEDEPENDS += " \
25 u-boot-zynq-uenv \ 22 u-boot-zynq-uenv \
26 arm-trusted-firmware \ 23 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
index d7d41d4d..254974e8 100644
--- a/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
@@ -18,9 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyPS0"
18 18
19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1285-revA.dtb" 19KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1285-revA.dtb"
20 20
21PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
22PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
23
24EXTRA_IMAGEDEPENDS += " \ 21EXTRA_IMAGEDEPENDS += " \
25 u-boot-zynq-uenv \ 22 u-boot-zynq-uenv \
26 arm-trusted-firmware \ 23 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf
index c69b5f35..673ab9e4 100644
--- a/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf
@@ -15,10 +15,6 @@ SPL_BINARY ?= "spl/boot.bin"
15 15
16SERIAL_CONSOLES ?= "115200;ttyPS0" 16SERIAL_CONSOLES ?= "115200;ttyPS0"
17 17
18
19PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
20PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
21
22EXTRA_IMAGEDEPENDS += " \ 18EXTRA_IMAGEDEPENDS += " \
23 u-boot-zynq-uenv \ 19 u-boot-zynq-uenv \
24 arm-trusted-firmware \ 20 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf
index 4f07e0ea..53cb31ae 100644
--- a/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf
@@ -15,10 +15,6 @@ SPL_BINARY ?= "spl/boot.bin"
15 15
16SERIAL_CONSOLES ?= "115200;ttyPS0" 16SERIAL_CONSOLES ?= "115200;ttyPS0"
17 17
18
19PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
20PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
21
22EXTRA_IMAGEDEPENDS += " \ 18EXTRA_IMAGEDEPENDS += " \
23 u-boot-zynq-uenv \ 19 u-boot-zynq-uenv \
24 arm-trusted-firmware \ 20 arm-trusted-firmware \
diff --git a/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf b/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
index 9c7dbe83..b2860b0c 100644
--- a/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
+++ b/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
@@ -65,11 +65,6 @@ QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
65QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5" 65QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
66QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw" 66QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
67 67
68# PMU instance args
69PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
70PMU_FIRMWARE_DEPLOY_DIR ?= "${@ '${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu' if d.getVar('BMULTICONFIG') == 'pmu' else '${TOPDIR}/tmp/deploy/images/${MACHINE}'}"
71PMU_FIRMWARE_IMAGE_NAME ?= "${@ 'pmu-firmware-zynqmp-pmu' if d.getVar('BBMULTICONFIG') == 'pmu' else 'pmu-${MACHINE}'}"
72
73QB_PMU_OPT = " \ 68QB_PMU_OPT = " \
74 -M microblaze-fdt \ 69 -M microblaze-fdt \
75 -display none \ 70 -display none \
diff --git a/meta-xilinx-bsp/recipes-bsp/embeddedsw/plmfw.bb b/meta-xilinx-bsp/recipes-bsp/embeddedsw/plmfw.bb
new file mode 100644
index 00000000..33c50953
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-bsp/embeddedsw/plmfw.bb
@@ -0,0 +1,64 @@
1DESCRIPTION = "Platform Loader and Manager"
2SUMMARY = "Platform Loader and Manager for Versal devices"
3
4LICENSE = "MIT"
5
6PROVIDES = "virtual/plm"
7
8INHERIT_DEFAULT_DEPENDS = "1"
9
10COMPATIBLE_MACHINE = "^$"
11COMPATIBLE_MACHINE_versal = "versal"
12
13# This is really BOARD specific, but we'll set it MACHINE for now.
14PACKAGE_ARCH = "${MACHINE_ARCH}"
15
16# Default would be a multiconfig (versal) build
17# For this to work, BBMULTICONFIG += "versal-fw" must be in the user's local.conf!
18PLM_DEPENDS ??= ""
19PLM_MCDEPENDS ??= "mc::versal-fw:plm-firmware:do_deploy"
20
21# This must be defined to the file output by whatever is providing the plm-firmware
22# The following sets the default, but the BSP may select a different name
23PLM_IMAGE_NAME ??= "plm-versal-mb"
24PLM_DEPLOY_DIR ??= "${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}"
25
26# Default is for the multilib case (without the extension .elf/.bin)
27PLM_FILE ??= "${PLM_DEPLOY_DIR/${PLM_IMAGE_NAME}"
28
29do_fetch[depends] += "${PLM_DEPENDS}"
30do_fetch[mcdepends] += "${PLM_MCDEPENDS}"
31
32inherit update-alternatives deploy
33
34BINARY_NAME = "${PN}"
35BINARY_EXT = ".elf"
36BINARY_ID = "${@d.getVar('SRCPV') if d.getVar('SRCPV') else d.getVar('PR') }"
37
38do_install() {
39 if [ ! -e ${PLM_FILE}${BINARY_EXT} ]; then
40 echo "Unable to find PLM_FILE (${PLM_FILE}${BINARY_EXT})"
41 exit 1
42 fi
43
44 install -Dm 0644 ${PLM_FILE}${BINARY_EXT} ${D}/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}
45}
46
47do_deploy() {
48 # If the item is already in OUR deploy_image_dir, nothing to deploy!
49 if [ "x${@'' if d.getVar('PLM_FILE').startswith(d.getVar('DEPLOY_IMAGE_DIR')) else 'copy'}" != "x" ]; then
50 install -Dm 0644 ${PLM_FILE}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
51 install -Dm 0644 ${PLM_FILE}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
52 fi
53}
54
55
56ALTERNATIVE_${PN} = "plmfw"
57ALTERNATIVE_TARGET[plmfw] = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
58ALTERNATIVE_LINK_NAME[plmfw] = "/boot/${BINARY_NAME}${BINARY_EXT}"
59
60INSANE_SKIP_${PN} = "arch"
61INSANE_SKIP_${PN}-dbg = "arch"
62
63SYSROOT_DIRS += "/boot"
64FILES_${PN} = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
diff --git a/meta-xilinx-bsp/recipes-bsp/embeddedsw/pmufw.bb b/meta-xilinx-bsp/recipes-bsp/embeddedsw/pmufw.bb
new file mode 100644
index 00000000..3af12cfe
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-bsp/embeddedsw/pmufw.bb
@@ -0,0 +1,65 @@
1DESCRIPTION = "PMU Firmware"
2
3LICENSE = "MIT"
4
5PROVIDES = "virtual/pmu-firmware"
6
7INHERIT_DEFAULT_DEPENDS = "1"
8
9COMPATIBLE_MACHINE = "^$"
10COMPATIBLE_MACHINE_zynqmp = "zynqmp"
11
12# This is really BOARD specific, but we'll set it MACHINE for now.
13PACKAGE_ARCH = "${MACHINE_ARCH}"
14
15# Default would be a multiconfig (zynqmp-pmufw) build
16# For this to work, BBMULTICONFIG += "zynqmp-pmufw" must be in the user's local.conf!
17PMU_DEPENDS ??= ""
18PMU_MCDEPENDS ??= "mc::zynqmp-pmufw:pmu-firmware:do_deploy"
19
20# This must be defined to the file output by whatever is providing the pmu-firmware
21# The following sets the default, but the BSP may select a different name
22PMU_FIRMWARE_IMAGE_NAME ??= "pmu-firmware-zynqmp-pmu"
23PMU_FIRMWARE_DEPLOY_DIR ??= "${TOPDIR}/tmp-microblaze-zynqmp-pmufw/deploy/images/${MACHINE}"
24
25# Default is for the multilib case (without the extension .elf/.bin)
26PMU_FILE ??= "${PMU_FIRMWARE_DEPLOY_DIR}/${PMU_FIRMWARE_IMAGE_NAME}"
27
28do_fetch[depends] += "${PMU_DEPENDS}"
29do_fetch[mcdepends] += "${PMU_MCDEPENDS}"
30
31inherit deploy update-alternatives
32
33BINARY_NAME = "${PN}"
34BINARY_EXT = ".elf"
35BINARY_ID = "${@d.getVar('SRCPV') if d.getVar('SRCPV') else d.getVar('PR') }"
36
37do_install() {
38 if [ ! -e ${PMU_FILE}${BINARY_EXT} ]; then
39 echo "Unable to find PMU_FILE (${PMU_FILE}${BINARY_EXT})"
40 exit 1
41 fi
42
43 install -Dm 0644 ${PMU_FILE}${BINARY_EXT} ${D}/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}
44}
45
46# If the item is already in OUR deploy_image_dir, nothing to deploy!
47SHOULD_DEPLOY = "${@'false' if (d.getVar('PMU_FILE')).startswith(d.getVar('DEPLOY_DIR_IMAGE')) else 'true'}"
48do_deploy() {
49 if ${SHOULD_DEPLOY}; then
50 install -Dm 0644 ${PMU_FILE}.elf ${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
51 install -Dm 0644 ${PMU_FILE}.bin ${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
52 fi
53}
54
55addtask deploy before do_build after do_install
56
57ALTERNATIVE_${PN} = "pmufw"
58ALTERNATIVE_TARGET[pmufw] = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
59ALTERNATIVE_LINK_NAME[pmufw] = "/boot/${BINARY_NAME}${BINARY_EXT}"
60
61INSANE_SKIP_${PN} = "arch"
62INSANE_SKIP_${PN}-dbg = "arch"
63
64SYSROOT_DIRS += "/boot"
65FILES_${PN} = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
diff --git a/meta-xilinx-bsp/recipes-bsp/embeddedsw/psmfw.bb b/meta-xilinx-bsp/recipes-bsp/embeddedsw/psmfw.bb
new file mode 100644
index 00000000..24044f77
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-bsp/embeddedsw/psmfw.bb
@@ -0,0 +1,63 @@
1DESCRIPTION = "PSM Firmware"
2SUMMARY = "PSM firmware for versal devices"
3
4LICENSE = "MIT"
5
6PROVIDES = "virtual/psm-firmware"
7
8INHERIT_DEFAULT_DEPENDS = "1"
9
10COMPATIBLE_MACHINE = "^$"
11COMPATIBLE_MACHINE_versal = "versal"
12
13# This is really BOARD specific, but we'll set it MACHINE for now.
14PACKAGE_ARCH = "${MACHINE_ARCH}"
15
16# Default would be a multiconfig (versal) build
17# For this to work, BBMULTICONFIG += "versal-fw" must be in the user's local.conf!
18PSM_DEPENDS ??= ""
19PSM_MCDEPENDS ??= "mc::versal-fw:psm-firmware:do_deploy"
20
21# This must be defined to the file output by whatever is providing the psm-firmware
22# The following sets the default, but the BSP may select a different name
23PSM_FIRMWARE_IMAGE_NAME ??= "psm-firmware-versal-mb"
24PSM_FIRMWARE_DEPLOY_DIR ??= "${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}"
25
26# Default is for the multilib case (without the extension .elf/.bin)
27PSM_FILE ??= "${PSM_FIRMWARE_DEPLOY_DIR}/${PSM_FIRMWARE_IMAGE_NAME}"
28
29do_fetch[depends] += "${PSM_DEPENDS}"
30do_fetch[mcdepends] += "${PSM_MCDEPENDS}"
31
32inherit update-alternatives deploy
33
34BINARY_NAME = "${PN}"
35BINARY_EXT = ".elf"
36BINARY_ID = "${@d.getVar('SRCPV') if d.getVar('SRCPV') else d.getVar('PR') }"
37
38do_install() {
39 if [ ! -e ${PSM_FILE}${BINARY_EXT} ]; then
40 echo "Unable to find PSM_FILE (${PSM_FILE}${BINARY_EXT})"
41 exit 1
42 fi
43
44 install -Dm 0644 ${PSM_FILE}${BINARY_EXT} ${D}/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}
45}
46
47do_deploy() {
48 # If the item is already in OUR deploy_image_dir, nothing to deploy!
49 if [ "x${@'' if d.getVar('PSM_FILE').startswith(d.getVar('DEPLOY_IMAGE_DIR')) else 'copy'}" != "x" ]; then
50 install -Dm 0644 ${PSM_FILE}.elf ${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
51 install -Dm 0644 ${PSM_FILE}.bin ${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
52 fi
53}
54
55ALTERNATIVE_${PN} = "psmfw"
56ALTERNATIVE_TARGET[psmfw] = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
57ALTERNATIVE_LINK_NAME[psmfw] = "/boot/${BINARY_NAME}${BINARY_EXT}"
58
59INSANE_SKIP_${PN} = "arch"
60INSANE_SKIP_${PN}-dbg = "arch"
61
62SYSROOT_DIRS += "/boot"
63FILES_${PN} = "/boot/${BINARY_NAME}-${BINARY_ID}${BINARY_EXT}"
diff --git a/meta-xilinx-standalone/conf/multiconfig/versal-fw.conf b/meta-xilinx-standalone/conf/multiconfig/versal-fw.conf
new file mode 100644
index 00000000..329d7e08
--- /dev/null
+++ b/meta-xilinx-standalone/conf/multiconfig/versal-fw.conf
@@ -0,0 +1,9 @@
1# To be used with a zynqmp machine
2# Re-use the main machine, which SHOULD allow us to override the default tune!
3DEFAULTTUNE = "microblaze"
4TUNE_FEATURES_tune-microblaze = "microblaze v10.0 barrel-shift pattern-compare"
5#LINKER_HASH_STYLE_microblaze = ""
6
7DISTRO = "xilinx-standalone"
8
9TMPDIR = "${TOPDIR}/tmp-microblaze-versal-fw"
diff --git a/meta-xilinx-standalone/conf/multiconfig/zynqmp-pmufw.conf b/meta-xilinx-standalone/conf/multiconfig/zynqmp-pmufw.conf
new file mode 100644
index 00000000..e678e7c2
--- /dev/null
+++ b/meta-xilinx-standalone/conf/multiconfig/zynqmp-pmufw.conf
@@ -0,0 +1,9 @@
1# To be used with a zynqmp machine
2# Re-use the main machine, which SHOULD allow us to override the default tune!
3DEFAULTTUNE = "microblaze"
4TUNE_FEATURES_tune-microblaze = "microblaze v9.2 barrel-shift pattern-compare"
5#LINKER_HASH_STYLE_microblaze = ""
6
7DISTRO = "xilinx-standalone"
8
9TMPDIR = "${TOPDIR}/tmp-microblaze-zynqmp-pmufw"
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
index 57e577ea..e4feba31 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
@@ -1,8 +1,6 @@
1DESCRIPTION = "Platform Loader and Manager" 1DESCRIPTION = "Platform Loader and Manager"
2SUMMARY = "Platform Loader and Manager for Versal devices" 2SUMMARY = "Platform Loader and Manager for Versal devices"
3 3
4PROVIDES = "virtual/plm"
5
6inherit xlnx-embeddedsw deploy 4inherit xlnx-embeddedsw deploy
7 5
8COMPATIBLE_HOST = "microblaze.*-elf" 6COMPATIBLE_HOST = "microblaze.*-elf"
@@ -50,20 +48,28 @@ do_compile() {
50 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include" 48 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include"
51} 49}
52 50
51# All do_compiles need this, even if the base is overriden
52do_compile_append() {
53 ${OBJCOPY} -O binary ${B}/plm.elf ${B}/plm.bin
54}
55
53do_install() { 56do_install() {
54 : 57 :
55} 58}
56 59
57PLM_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" 60PACKAGES = ""
61
62# This is the default in most BSPs. A MACHINE.conf can override this!
63PLM_IMAGE_NAME ??= "plm-versal-mb"
64
65PLM_BASE_NAME ?= "${PLM_IMAGE_NAME}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
58PLM_BASE_NAME[vardepsexclude] = "DATETIME" 66PLM_BASE_NAME[vardepsexclude] = "DATETIME"
59 67
60do_deploy() { 68do_deploy() {
61 install -Dm 0644 ${B}/plm.elf ${DEPLOYDIR}/${PLM_BASE_NAME}.elf 69 install -Dm 0644 ${B}/plm.elf ${DEPLOYDIR}/${PLM_BASE_NAME}.elf
62 ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf 70 ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
63 ${OBJCOPY} -O binary ${B}/plm.elf ${B}/plm.bin
64 install -m 0644 ${B}/plm.bin ${DEPLOYDIR}/${PLM_BASE_NAME}.bin 71 install -m 0644 ${B}/plm.bin ${DEPLOYDIR}/${PLM_BASE_NAME}.bin
65 ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin 72 ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
66} 73}
67 74
68addtask deploy before do_build after do_install 75addtask deploy before do_build after do_install
69
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware.inc b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware.inc
index 01d05a9b..e8674b12 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware.inc
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware.inc
@@ -1,7 +1,5 @@
1DESCRIPTION = "PMU Firmware" 1DESCRIPTION = "PMU Firmware"
2 2
3PROVIDES = "virtual/pmu-firmware"
4
5inherit xlnx-embeddedsw deploy 3inherit xlnx-embeddedsw deploy
6 4
7COMPATIBLE_HOST = "microblaze.*-elf" 5COMPATIBLE_HOST = "microblaze.*-elf"
@@ -20,6 +18,12 @@ do_configure() {
20 ${B}/../misc/copy_bsp.sh 18 ${B}/../misc/copy_bsp.sh
21} 19}
22 20
21# All do_compiles need this, even if it's overriden
22MB_OBJCOPY ??= "${OBJCOPY}"
23
24# Only add a dependency if we need to use OUR binutils
25DEPENDS .= "${@' virtual/${TARGET_PREFIX}binutils' if d.getVar('MB_OBJCOPY') == d.getVar('OBJCOPY') else ''}"
26
23COMPILER = "${CC}" 27COMPILER = "${CC}"
24COMPILER_FLAGS = "-O2 -c" 28COMPILER_FLAGS = "-O2 -c"
25EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects" 29EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects"
@@ -47,21 +51,27 @@ do_compile() {
47 # --build-id=none is required due to linker script not defining a location for it. 51 # --build-id=none is required due to linker script not defining a location for it.
48 # Again, recipe-systoot include is necessary 52 # Again, recipe-systoot include is necessary
49 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include" 53 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include"
54
55 ${MB_OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
50} 56}
51 57
52do_install() { 58do_install() {
53 : 59 :
54} 60}
55 61
56PMU_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" 62PACKAGES = ""
63
64# This is the default in most BSPs. A MACHINE.conf can override this!
65PMU_FIRMWARE_IMAGE_NAME ??= "pmu-firmware-zynqmp-pmu"
66
67PMU_FIRMWARE_BASE_NAME ?= "${PMU_FIRMWARE_IMAGE_NAME}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
57PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME" 68PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
58 69
59do_deploy() { 70do_deploy() {
60 install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf 71 install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
61 ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf 72 ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
62 ${OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
63 install -m 0644 ${B}/executable.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin 73 install -m 0644 ${B}/executable.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
64 ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin 74 ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
65} 75}
66 76
67addtask deploy before do_build after do_install 77addtask deploy before do_build after do_install
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.2.bb
index 93c8bafc..047f97d9 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.2.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.2.bb
@@ -45,4 +45,6 @@ do_compile() {
45 # Again, recipe-systoot include is necessary 45 # Again, recipe-systoot include is necessary
46 echo Construct: executable 46 echo Construct: executable
47 oe_runmake executable.elf CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include" 47 oe_runmake executable.elf CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include"
48
49 ${MB_OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
48} 50}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_git.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_git.bb
index 2fc69cbe..cdf569c3 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_git.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_git.bb
@@ -48,4 +48,6 @@ do_compile() {
48 # Again, recipe-systoot include is necessary 48 # Again, recipe-systoot include is necessary
49 echo Construct: executable 49 echo Construct: executable
50 oe_runmake executable.elf CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include" 50 oe_runmake executable.elf CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include"
51
52 ${MB_OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
51} 53}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
index 05b9a9b5..11e8981b 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
@@ -1,8 +1,6 @@
1ESCRIPTION = "PSM Firmware" 1ESCRIPTION = "PSM Firmware"
2SUMMARY = "PSM firmware for versal devices" 2SUMMARY = "PSM firmware for versal devices"
3 3
4PROVIDES = "virtual/psm-firmware"
5
6inherit xlnx-embeddedsw deploy 4inherit xlnx-embeddedsw deploy
7 5
8COMPATIBLE_HOST = "microblaze.*-elf" 6COMPATIBLE_HOST = "microblaze.*-elf"
@@ -50,19 +48,28 @@ do_compile() {
50 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include" 48 oe_runmake CC_FLAGS="-MMD -MP -Wl,--build-id=none -I${STAGING_DIR_TARGET}/usr/include"
51} 49}
52 50
51# All do compiles need this, even if the base is overriden
52do_compile_append() {
53 ${OBJCOPY} -O binary ${B}/psmfw.elf ${B}/psmfw.bin
54}
55
53do_install() { 56do_install() {
54 : 57 :
55} 58}
56 59
57PSM_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" 60PACKAGES = ""
61
62# This is the default in most BSPs. A MACHINE.conf can override this!
63PSM_FIRMWARE_IMAGE_NAME ??= "psm-firmware-versal-mb"
64
65PSM_FIRMWARE_BASE_NAME ?= "${PSM_FIRMWARE_IMAGE_NAME}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
58PSM_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME" 66PSM_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
59 67
60do_deploy() { 68do_deploy() {
61 install -Dm 0644 ${B}/psmfw.elf ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf 69 install -Dm 0644 ${B}/psmfw.elf ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
62 ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf 70 ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
63 ${OBJCOPY} -O binary ${B}/psmfw.elf ${B}/psmfw.bin
64 install -m 0644 ${B}/psmfw.bin ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin 71 install -m 0644 ${B}/psmfw.bin ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
65 ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin 72 ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
66} 73}
67 74
68addtask deploy before do_build after do_install 75addtask deploy before do_build after do_install