DESCRIPTION = "ARM Trusted Firmware" LICENSE = "BSD" LIC_FILES_CHKSUM = "file://license.rst;md5=33065335ea03d977d0569f270b39603e" PROVIDES = "virtual/arm-trusted-firmware" inherit deploy DEPENDS += "u-boot-mkimage-native" S = "${WORKDIR}/git" B = "${WORKDIR}/build" XILINX_RELEASE_VERSION ?= "" ATF_VERSION ?= "1.4" ATF_VERSION_EXTENSION ?= "-xilinx-${XILINX_RELEASE_VERSION}" PV = "${ATF_VERSION}${ATF_VERSION_EXTENSION}+git${SRCPV}" BRANCH ?= "" REPO ?= "git://github.com/Xilinx/arm-trusted-firmware.git;protocol=https" BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" SRC_URI = "${REPO};${BRANCHARG}" ATF_BASE_NAME ?= "${PN}-${PKGE}-${PKGV}-${PKGR}-${DATETIME}" ATF_BASE_NAME[vardepsexclude] = "DATETIME" COMPATIBLE_MACHINE = "zynqmp" PLATFORM_zynqmp = "zynqmp" # requires CROSS_COMPILE set by hand as there is no configure script export CROSS_COMPILE="${TARGET_PREFIX}" # Let the Makefile handle setting up the CFLAGS and LDFLAGS as it is a standalone application CFLAGS[unexport] = "1" LDFLAGS[unexport] = "1" AS[unexport] = "1" LD[unexport] = "1" do_configure() { : } do_compile() { oe_runmake -C ${S} BUILD_BASE=${B} PLAT=${PLATFORM} RESET_TO_BL31=1 bl31 } do_install() { : } OUTPUT_DIR = "${B}/${PLATFORM}/release" do_deploy() { install -d ${DEPLOYDIR} install -m 0644 ${OUTPUT_DIR}/bl31/bl31.elf ${DEPLOYDIR}/${ATF_BASE_NAME}.elf ln -sf ${ATF_BASE_NAME}.elf ${DEPLOYDIR}/${PN}.elf install -m 0644 ${OUTPUT_DIR}/bl31.bin ${DEPLOYDIR}/${ATF_BASE_NAME}.bin ln -sf ${ATF_BASE_NAME}.bin ${DEPLOYDIR}/${PN}.bin # Get the entry point address from the elf. BL31_BASE_ADDR=$(${READELF} -h ${OUTPUT_DIR}/bl31/bl31.elf | egrep -m 1 -i "entry point.*?0x" | sed -r 's/.*?(0x.*?)/\1/g') mkimage -A arm64 -O arm-trusted-firmware -T kernel -C none \ -a $BL31_BASE_ADDR -e $BL31_BASE_ADDR \ -d ${OUTPUT_DIR}/bl31.bin ${DEPLOYDIR}/${ATF_BASE_NAME}.ub ln -sf ${ATF_BASE_NAME}.ub ${DEPLOYDIR}/${PN}.ub ln -sf ${ATF_BASE_NAME}.ub ${DEPLOYDIR}/atf-uboot.ub } addtask deploy before do_build after do_compile