# specify build dependencies DEPENDS += "linux-basic" DEPENDS += "u-boot" DEPENDS += "u-boot-mkimage-native" DEPENDS += "keys-native" # fit image configuration file SRC_URI = "file://signed-config.its" # license information LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" # create signed fit image for kernel/devicetree and uimage for qemu booting do_compile () { # extract TEXT_BASE from u-boot configuration TEXT_BASE=`grep CONFIG_SYS_TEXT_BASE \ ${PKG_CONFIG_SYSROOT_DIR}${datadir}/u-boot/u-boot.cfg | \ awk '{print $3}'` cp ${DEPLOY_DIR_IMAGE}/devicetree-${DTB} dtb cp ${DEPLOY_DIR_IMAGE}/zImage . cp ${WORKDIR}/signed-config.its . # create fit image with signed configuration # and update the dtb to contain the public key uboot-mkimage -f signed-config.its \ -k ${STAGING_DIR_NATIVE}${datadir_native}/keys \ -K dtb -r image.fit # create the final u-boot image by appending the new dtb cat ${DEPLOY_DIR_IMAGE}/u-boot-nodtb.bin dtb > u-boot-dtb.bin # pack u-boot into a uimage file so we can # trick qemu into booting u-boot uboot-mkimage -A ${HOST_ARCH} -C none -T kernel -O linux \ -d u-boot-dtb.bin -a $TEXT_BASE -e $TEXT_BASE u-boot.uimg } # specify task dependencies for compiling # - bitbake only knows about dependencies that are specified # otherwise it assumes it can do things in parallel # - the build dependencies ${DEPEND} only create a task dependency # on do_install (do_deploy comes after do_install) # - for linux-basic and u-boot-sample we need to wait for do_deploy # to complete because our do_compile uses their deployed files do_compile[depends] += "linux-basic:do_deploy" do_compile[depends] += "u-boot:do_deploy" # use the deploy class (poky/meta/deploy.bbclass) # - this officially creates a deploy task # - this creates and sets ${DEPLOYDIR} inherit deploy # deploy fit image (kernel/devicetree) and uimage (u-boot) do_deploy () { install -D -m 0644 image.fit ${DEPLOYDIR}/image.fit install -D -m 0644 u-boot.uimg ${DEPLOYDIR}/u-boot.uimg } # set do_deploy to occur after do_install addtask do_deploy after do_install