boot.bin should be deployed either using SPL methodology or using
bootgen. Change the bbclass to recipe so that it can be used as recipe
with a provider setting.

This patch is based of the inital patch sent to mailing list by
Jean-Francois Dagenais

https://lists.yoctoproject.org/pipermail/meta-xilinx/2017-July/003029.html

Signed-off-by: Manjukumar Matha <manjukumar.harthikote-ma...@xilinx.com>
---
Changelog
   1) Remove unnecessary tasks which are not used in bootbin recipe


 classes/xilinx-bootbin.bbclass                 |  83 -------------------
 conf/machine/include/machine-xilinx-zynq.inc   |  19 -----
 conf/machine/include/machine-xilinx-zynqmp.inc |  41 ----------
 recipes-bsp/bootbin/machine-xilinx-zynq.inc    |  17 ++++
 recipes-bsp/bootbin/machine-xilinx-zynqmp.inc  |  35 ++++++++
 recipes-bsp/bootbin/xilinx-bootbin_1.0.bb      | 107 +++++++++++++++++++++++++
 6 files changed, 159 insertions(+), 143 deletions(-)
 delete mode 100644 classes/xilinx-bootbin.bbclass
 delete mode 100644 conf/machine/include/machine-xilinx-zynq.inc
 delete mode 100644 conf/machine/include/machine-xilinx-zynqmp.inc
 create mode 100644 recipes-bsp/bootbin/machine-xilinx-zynq.inc
 create mode 100644 recipes-bsp/bootbin/machine-xilinx-zynqmp.inc
 create mode 100644 recipes-bsp/bootbin/xilinx-bootbin_1.0.bb

diff --git a/classes/xilinx-bootbin.bbclass b/classes/xilinx-bootbin.bbclass
deleted file mode 100644
index 31a38a6..0000000
--- a/classes/xilinx-bootbin.bbclass
+++ /dev/null
@@ -1,83 +0,0 @@
-inherit xsct-tc
-
-BIF_COMMON_ATTR ?= ''
-BIF_PARTITION_ATTR ?= ''
-BIF_PARTITION_IMAGE ?= ''
-BIF_PARTITION_DEPENDS ?= ''
-BIF_FILE_PATH = "${WORKDIR}/bootgen.bif"
-
-def create_bif(config, attrflags, attrimage, common_attr, biffd, d):
-    import re, os
-    for cfg in config:
-        if cfg not in attrflags and common_attr:
-            error_msg = "%s: invalid ATTRIBUTE" % (cfg)
-            bb.error("BIF attribute Error: %s " % (error_msg))
-        else:
-            if common_attr:
-                cfgval = attrflags[cfg].split(',')
-                cfgstr = "\t [%s] %s\n" % (cfg,', '.join(cfgval))
-            else:
-                if cfg not in attrimage:
-                    error_msg = "%s: invalid or missing elf or image" % (cfg)
-                    bb.error("BIF atrribute Error: %s " % (error_msg))
-                imagestr = d.expand(attrimage[cfg])
-                if os.stat(imagestr).st_size == 0:
-                    bb.warn("Empty file %s, excluding from bif file" 
%(imagestr))
-                    continue
-                if cfg in attrflags:
-                    cfgval = attrflags[cfg].split(',')
-                    cfgstr = "\t [%s] %s\n" % (', '.join(cfgval), imagestr)
-                else:
-                    cfgstr = "\t %s\n" % (imagestr)
-            biffd.write(cfgstr)
-
-    return
-
-python do_create_bif() {
-
-    fp = d.getVar("BIF_FILE_PATH", True)
-    biffd = open(fp, 'w')
-    biffd.write("the_ROM_image:\n")
-    biffd.write("{\n")
-
-    bifattr = (d.getVar("BIF_COMMON_ATTR", True) or "").split()
-    if bifattr:
-        attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {}
-        create_bif(bifattr, attrflags,'', 1, biffd, d)
-
-    bifpartition = (d.getVar("BIF_PARTITION_ATTR", True) or "").split()
-    if bifpartition:
-        attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {}
-        attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {}
-        create_bif(bifpartition, attrflags, attrimage, 0, biffd, d)
-
-    biffd.write("}")
-    biffd.close()
-}
-addtask do_create_bif before do_xilinx_bootbin
-
-do_create_bif[vardeps] += "BIF_PARTITION_ATTR BIF_PARTITION_IMAGE 
BIF_COMMON_ATTR"
-do_create_bif[depends] += "${@get_bootbin_depends(d)}"
-
-def get_bootbin_depends(d):
-    bootbindeps = ""
-    bifpartition = (d.getVar("BIF_PARTITION_ATTR", True) or "").split()
-    attrdepends = d.getVarFlags("BIF_PARTITION_DEPENDS") or {}
-    for cfg in bifpartition:
-        if cfg in attrdepends:
-            bootbindeps = bootbindeps + " " + attrdepends[cfg] + ":do_deploy"
-
-    return bootbindeps
-
-do_xilinx_bootbin[depends] += "${@get_bootbin_depends(d)}"
-
-do_xilinx_bootbin () {
-    cd ${WORKDIR}
-    rm -f BOOT.bin
-    bootgen -image ${BIF_FILE_PATH} -arch ${KMACHINE} -w -o BOOT.bin
-    if [ ! -e BOOT.bin ]; then
-        bbfatal "bootgen failed. See log"
-    fi
-    install -m 0644 BOOT.bin  ${DEPLOY_DIR_IMAGE}/BOOT.bin
-}
-addtask do_xilinx_bootbin before do_image
diff --git a/conf/machine/include/machine-xilinx-zynq.inc 
b/conf/machine/include/machine-xilinx-zynq.inc
deleted file mode 100644
index 1955748..0000000
--- a/conf/machine/include/machine-xilinx-zynq.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-IMAGE_CLASSES_append ?= " xilinx-bootbin"
-
-#specify BIF partition attributes required for BOOT.bin
-BIF_PARTITION_ATTR ?= "fsbl bitstream u-boot"
-
-#specify BIF partition attributes for FSBL
-#bootloader is FSBL. Location where FSBL binary is present and dependency to 
build FSBL
-BIF_PARTITION_ATTR[fsbl] ?= "bootloader"
-BIF_PARTITION_IMAGE[fsbl] ?= "${DEPLOY_DIR_IMAGE}/fsbl-${MACHINE}.elf"
-BIF_PARTITION_DEPENDS[fsbl] ?= "virtual/fsbl"
-
-#specify BIF partition attributes for u-boot
-#Location where u-boot binary is present
-BIF_PARTITION_IMAGE[u-boot] ?= "${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.elf"
-BIF_PARTITION_DEPENDS[u-boot] ?= "virtual/bootloader"
-
-# enable bitstream-Note this is not enabled by default (missing in 
BIF_PARTITION_ATTR)
-BIF_PARTITION_IMAGE[bitstream] ?= "${DEPLOY_DIR_IMAGE}/download-${MACHINE}.bit"
-BIF_PARTITION_DEPENDS[bitstream] ?= "virtual/bitstream"
diff --git a/conf/machine/include/machine-xilinx-zynqmp.inc 
b/conf/machine/include/machine-xilinx-zynqmp.inc
deleted file mode 100644
index de3f895..0000000
--- a/conf/machine/include/machine-xilinx-zynqmp.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-# add Boot.bin dependency
-IMAGE_CLASSES_append = " xilinx-bootbin"
-
-# Override to use pmu-firmware built via xsct
-PREFERRED_PROVIDER_virtual/pmu-firmware = "pmu-firmware"
-
-# specify BIF common attribute for FSBL
-BIF_COMMON_ATTR ?= "fsbl_config"
-BIF_COMMON_ATTR[fsbl_config] ?= "a53_x64"
-
-# specify BIF partition attributes required for BOOT.bin
-BIF_PARTITION_ATTR ?= "fsbl bitstream pmu atf u-boot"
-
-# specify BIF partition attributes for FSBL
-# bootloader is FSBL. Location where FSBL binary is present and dependency to 
build FSBL
-BIF_PARTITION_ATTR[fsbl] ?= "bootloader"
-BIF_PARTITION_IMAGE[fsbl] ?= "${DEPLOY_DIR_IMAGE}/fsbl-${MACHINE}.elf"
-BIF_PARTITION_DEPENDS[fsbl] ?= "virtual/fsbl"
-
-# specify BIF partition attributes for PMU Firmware
-# destination cpu for PMU. Location where PMU binary is present and dependency 
to build PMU Firmware
-BIF_PARTITION_ATTR[pmu] ?= "destination_cpu=pmu"
-BIF_PARTITION_IMAGE[pmu] ?= "${DEPLOY_DIR_IMAGE}/pmu-firmware-${MACHINE}.elf"
-BIF_PARTITION_DEPENDS[pmu] ?= "virtual/pmu-firmware"
-
-# specify BIF partition attributes for ATF
-# destination cpu for ATF, security levels. Location where ATF binary is 
present (dependency is not required as ATF is always built for ZU+, see 
zcu102-zynqmp.conf)
-BIF_PARTITION_ATTR[atf] ?= 
"destination_cpu=a53-0,exception_level=el-3,trustzone"
-BIF_PARTITION_IMAGE[atf] ?= "${DEPLOY_DIR_IMAGE}/arm-trusted-firmware.elf"
-BIF_PARTITION_DEPENDS[atf] ?= "arm-trusted-firmware"
-
-# specify BIF partition attributes for u-boot
-# destination cpu for u-boot, security levels. Location where u-boot binary is 
present (dependency is not required as u-boot is always built for ZU+, see 
zcu102-zynqmp.conf)
-BIF_PARTITION_ATTR[u-boot] ?= "destination_cpu=a53-0,exception_level=el-2"
-BIF_PARTITION_IMAGE[u-boot] ?= "${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.elf"
-BIF_PARTITION_DEPENDS[u-boot] ?= "virtual/bootloader"
-
-# enable bitstream-Note this is not enabled by default (missing in 
BIF_PARTITION_ATTR)
-BIF_PARTITION_ATTR[bitstream] ?= "destination_device=pl"
-BIF_PARTITION_IMAGE[bitstream] ?= "${DEPLOY_DIR_IMAGE}/download-${MACHINE}.bit"
-BIF_PARTITION_DEPENDS[bitstream] ?= "virtual/bitstream"
diff --git a/recipes-bsp/bootbin/machine-xilinx-zynq.inc 
b/recipes-bsp/bootbin/machine-xilinx-zynq.inc
new file mode 100644
index 0000000..aa537d6
--- /dev/null
+++ b/recipes-bsp/bootbin/machine-xilinx-zynq.inc
@@ -0,0 +1,17 @@
+#specify BIF partition attributes required for BOOT.bin
+BIF_PARTITION_ATTR ?= "fsbl bitstream u-boot"
+
+#specify BIF partition attributes for FSBL
+#bootloader is FSBL. Location where FSBL binary is present and dependency to 
build FSBL
+BIF_PARTITION_ATTR[fsbl] ?= "bootloader"
+BIF_PARTITION_IMAGE[fsbl] ?= "${DEPLOY_DIR_IMAGE}/fsbl-${MACHINE}.elf"
+BIF_PARTITION_DEPENDS[fsbl] ?= "virtual/fsbl"
+
+#specify BIF partition attributes for u-boot
+#Location where u-boot binary is present
+BIF_PARTITION_IMAGE[u-boot] ?= "${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.elf"
+BIF_PARTITION_DEPENDS[u-boot] ?= "virtual/bootloader"
+
+# enable bitstream-Note this is not enabled by default (missing in 
BIF_PARTITION_ATTR)
+BIF_PARTITION_IMAGE[bitstream] ?= "${DEPLOY_DIR_IMAGE}/download-${MACHINE}.bit"
+BIF_PARTITION_DEPENDS[bitstream] ?= "virtual/bitstream"
diff --git a/recipes-bsp/bootbin/machine-xilinx-zynqmp.inc 
b/recipes-bsp/bootbin/machine-xilinx-zynqmp.inc
new file mode 100644
index 0000000..7ee4cc1
--- /dev/null
+++ b/recipes-bsp/bootbin/machine-xilinx-zynqmp.inc
@@ -0,0 +1,35 @@
+# specify BIF common attribute for FSBL
+BIF_COMMON_ATTR ?= "fsbl_config"
+BIF_COMMON_ATTR[fsbl_config] ?= "a53_x64"
+
+# specify BIF partition attributes required for BOOT.bin
+BIF_PARTITION_ATTR ?= "fsbl bitstream pmu atf u-boot"
+
+# specify BIF partition attributes for FSBL
+# bootloader is FSBL. Location where FSBL binary is present and dependency to 
build FSBL
+BIF_PARTITION_ATTR[fsbl] ?= "bootloader"
+BIF_PARTITION_IMAGE[fsbl] ?= "${DEPLOY_DIR_IMAGE}/fsbl-${MACHINE}.elf"
+BIF_PARTITION_DEPENDS[fsbl] ?= "virtual/fsbl"
+
+# specify BIF partition attributes for PMU Firmware
+# destination cpu for PMU. Location where PMU binary is present and dependency 
to build PMU Firmware
+BIF_PARTITION_ATTR[pmu] ?= "destination_cpu=pmu"
+BIF_PARTITION_IMAGE[pmu] ?= "${DEPLOY_DIR_IMAGE}/pmu-firmware-${MACHINE}.elf"
+BIF_PARTITION_DEPENDS[pmu] ?= "virtual/pmu-firmware"
+
+# specify BIF partition attributes for ATF
+# destination cpu for ATF, security levels. Location where ATF binary is 
present (dependency is not required as ATF is always built for ZU+, see 
zcu102-zynqmp.conf)
+BIF_PARTITION_ATTR[atf] ?= 
"destination_cpu=a53-0,exception_level=el-3,trustzone"
+BIF_PARTITION_IMAGE[atf] ?= "${DEPLOY_DIR_IMAGE}/arm-trusted-firmware.elf"
+BIF_PARTITION_DEPENDS[atf] ?= "arm-trusted-firmware"
+
+# specify BIF partition attributes for u-boot
+# destination cpu for u-boot, security levels. Location where u-boot binary is 
present (dependency is not required as u-boot is always built for ZU+, see 
zcu102-zynqmp.conf)
+BIF_PARTITION_ATTR[u-boot] ?= "destination_cpu=a53-0,exception_level=el-2"
+BIF_PARTITION_IMAGE[u-boot] ?= "${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.elf"
+BIF_PARTITION_DEPENDS[u-boot] ?= "virtual/bootloader"
+
+# enable bitstream-Note this is not enabled by default (missing in 
BIF_PARTITION_ATTR)
+BIF_PARTITION_ATTR[bitstream] ?= "destination_device=pl"
+BIF_PARTITION_IMAGE[bitstream] ?= "${DEPLOY_DIR_IMAGE}/download-${MACHINE}.bit"
+BIF_PARTITION_DEPENDS[bitstream] ?= "virtual/bitstream"
diff --git a/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb 
b/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
new file mode 100644
index 0000000..ecaee00
--- /dev/null
+++ b/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
@@ -0,0 +1,107 @@
+SUMMARY = "Generates boot.bin using bootgen tool"
+DESCRIPTION = "Manages task dependencies and creation of boot.bin. Use the \
+BIF_PARTITION_xyz global variables and flags to determine what makes it into \
+the image."
+
+LICENSE = "BSD"
+
+include machine-xilinx-${SOC_FAMILY}.inc
+
+inherit xsct-tc deploy
+
+PROVIDES = "virtual/boot-bin"
+
+DEPENDS += "${@get_bootbin_depends(d)}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+BIF_FILE_PATH ?= "${B}/bootgen.bif"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+
+def get_bootbin_depends(d):
+    bootbindeps = ""
+    bifpartition = (d.getVar("BIF_PARTITION_ATTR", True) or "").split()
+    attrdepends = d.getVarFlags("BIF_PARTITION_DEPENDS") or {}
+    for cfg in bifpartition:
+        if cfg in attrdepends:
+            bootbindeps = bootbindeps + " " + attrdepends[cfg]
+
+    return bootbindeps
+
+def create_bif(config, attrflags, attrimage, common_attr, biffd, d):
+    import re, os
+    for cfg in config:
+        if cfg not in attrflags and common_attr:
+            error_msg = "%s: invalid ATTRIBUTE" % (cfg)
+            bb.error("BIF attribute Error: %s " % (error_msg))
+        else:
+            if common_attr:
+                cfgval = attrflags[cfg].split(',')
+                cfgstr = "\t [%s] %s\n" % (cfg,', '.join(cfgval))
+            else:
+                if cfg not in attrimage:
+                    error_msg = "%s: invalid or missing elf or image" % (cfg)
+                    bb.error("BIF atrribute Error: %s " % (error_msg))
+                imagestr = d.expand(attrimage[cfg])
+                if os.stat(imagestr).st_size == 0:
+                    bb.warn("Empty file %s, excluding from bif file" 
%(imagestr))
+                    continue
+                if cfg in attrflags:
+                    cfgval = attrflags[cfg].split(',')
+                    cfgstr = "\t [%s] %s\n" % (', '.join(cfgval), imagestr)
+                else:
+                    cfgstr = "\t %s\n" % (imagestr)
+            biffd.write(cfgstr)
+
+    return
+
+python do_configure() {
+
+    fp = d.getVar("BIF_FILE_PATH", True)
+    biffd = open(fp, 'w')
+    biffd.write("the_ROM_image:\n")
+    biffd.write("{\n")
+
+    bifattr = (d.getVar("BIF_COMMON_ATTR", True) or "").split()
+    if bifattr:
+        attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {}
+        create_bif(bifattr, attrflags,'', 1, biffd, d)
+
+    bifpartition = (d.getVar("BIF_PARTITION_ATTR", True) or "").split()
+    if bifpartition:
+        attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {}
+        attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {}
+        create_bif(bifpartition, attrflags, attrimage, 0, biffd, d)
+
+    biffd.write("}")
+    biffd.close()
+}
+
+do_configure[vardeps] += "BIF_PARTITION_ATTR BIF_PARTITION_IMAGE 
BIF_COMMON_ATTR"
+
+do_compile() {
+    cd ${WORKDIR}
+    rm -f ${B}/BOOT.bin
+    bootgen -image ${BIF_FILE_PATH} -arch ${SOC_FAMILY} -w -o ${B}/BOOT.bin
+    if [ ! -e ${B}/BOOT.bin ]; then
+        bbfatal "bootgen failed. See log"
+    fi
+}
+
+do_install() {
+       :
+}
+
+BOOTBIN_BASE_NAME ?= "BOOT-${MACHINE}-${DATETIME}"
+BOOTBIN_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+    install -d ${DEPLOYDIR}
+    install -m 0644 ${B}/BOOT.bin ${DEPLOYDIR}/${BOOTBIN_BASE_NAME}.bin
+    ln -sf ${BOOTBIN_BASE_NAME}.bin ${DEPLOYDIR}/BOOT-${MACHINE}.bin
+}
+addtask do_deploy before do_build after do_compile
+
--
2.7.4

This email and any attachments are intended for the sole use of the named 
recipient(s) and contain(s) confidential information that may be proprietary, 
privileged or copyrighted under applicable law. If you are not the intended 
recipient, do not read, copy, or forward this email message or any attachments. 
Delete this email message and any attachments immediately.
-- 
_______________________________________________
meta-xilinx mailing list
meta-xilinx@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to