summaryrefslogtreecommitdiffstats
path: root/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc')
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc103
1 files changed, 103 insertions, 0 deletions
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
new file mode 100644
index 00000000..94925fa9
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
@@ -0,0 +1,103 @@
1DESCRIPTION = "ARM Trusted Firmware"
2
3LICENSE = "BSD"
4LIC_FILES_CHKSUM ?= "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
5
6PROVIDES = "virtual/arm-trusted-firmware"
7
8inherit deploy
9
10DEPENDS += "u-boot-mkimage-native"
11
12S = "${WORKDIR}/git"
13B = "${WORKDIR}/build"
14
15SYSROOT_DIRS += "/boot"
16
17XILINX_RELEASE_VERSION ?= ""
18ATF_VERSION ?= "2.2"
19ATF_VERSION_EXTENSION ?= "-xilinx-${XILINX_RELEASE_VERSION}"
20PV = "${ATF_VERSION}${ATF_VERSION_EXTENSION}+git${SRCPV}"
21
22BRANCH ?= ""
23REPO ?= "git://github.com/Xilinx/arm-trusted-firmware.git;protocol=https"
24BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
25SRC_URI = "${REPO};${BRANCHARG}"
26
27inherit image-artifact-names
28
29ATF_BASE_NAME ?= "${PN}-${PKGE}-${PKGV}-${PKGR}${IMAGE_VERSION_SUFFIX}"
30
31# Specify a default in case boardvariant isn't available
32BOARDVARIANT_ARCH ??= "${MACHINE_ARCH}"
33PACKAGE_ARCH = "${BOARDVARIANT_ARCH}"
34
35COMPATIBLE_MACHINE ?= "^$"
36COMPATIBLE_MACHINE:zynqmp = ".*"
37COMPATIBLE_MACHINE:versal = ".*"
38
39PLATFORM:zynqmp = "zynqmp"
40PLATFORM:versal = "versal"
41
42# requires CROSS_COMPILE set by hand as there is no configure script
43export CROSS_COMPILE="${TARGET_PREFIX}"
44
45# Let the Makefile handle setting up the CFLAGS and LDFLAGS as it is a standalone application
46CFLAGS[unexport] = "1"
47LDFLAGS[unexport] = "1"
48AS[unexport] = "1"
49LD[unexport] = "1"
50
51ATF_CONSOLE ?= ""
52ATF_CONSOLE:zynqmp = "cadence"
53ATF_CONSOLE:versal ?= "pl011"
54
55DEBUG_ATF ?= ""
56DEBUG_ATF:versal ?= "1"
57
58EXTRA_OEMAKE:zynqmp:append = "${@' ZYNQMP_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
59EXTRA_OEMAKE:append:versal = "${@' VERSAL_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
60EXTRA_OEMAKE:append = " ${@bb.utils.contains('DEBUG_ATF', '1', ' DEBUG=${DEBUG_ATF}', '', d)}"
61
62OUTPUT_DIR = "${@bb.utils.contains('DEBUG_ATF', '1', '${B}/${PLATFORM}/debug', '${B}/${PLATFORM}/release', d)}"
63
64ATF_MEM_BASE ?= "0x1000"
65ATF_MEM_SIZE ?= "0x7ffff"
66
67EXTRA_OEMAKE:zynqmp:append = "${@' ZYNQMP_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}"
68EXTRA_OEMAKE:zynqmp:append = "${@' ZYNQMP_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}"
69
70EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}"
71EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}"
72EXTRA_OEMAKE:append:vc-p-a2197-00-versal =" VERSAL_PLATFORM=silicon"
73
74do_configure() {
75 oe_runmake clean -C ${S} BUILD_BASE=${B} PLAT=${PLATFORM}
76}
77
78do_compile() {
79 oe_runmake -C ${S} BUILD_BASE=${B} PLAT=${PLATFORM} RESET_TO_BL31=1 bl31
80}
81
82do_install() {
83 install -d ${D}/boot
84 install -Dm 0644 ${OUTPUT_DIR}/bl31/bl31.elf ${D}/boot/${PN}.elf
85}
86
87do_deploy() {
88 install -d ${DEPLOYDIR}
89 install -m 0644 ${OUTPUT_DIR}/bl31/bl31.elf ${DEPLOYDIR}/${ATF_BASE_NAME}.elf
90 ln -sf ${ATF_BASE_NAME}.elf ${DEPLOYDIR}/${PN}.elf
91 install -m 0644 ${OUTPUT_DIR}/bl31.bin ${DEPLOYDIR}/${ATF_BASE_NAME}.bin
92 ln -sf ${ATF_BASE_NAME}.bin ${DEPLOYDIR}/${PN}.bin
93
94 # Get the entry point address from the elf.
95 BL31_BASE_ADDR=$(${READELF} -h ${OUTPUT_DIR}/bl31/bl31.elf | egrep -m 1 -i "entry point.*?0x" | sed -r 's/.*?(0x.*?)/\1/g')
96 mkimage -A arm64 -O arm-trusted-firmware -T kernel -C none \
97 -a $BL31_BASE_ADDR -e $BL31_BASE_ADDR \
98 -d ${OUTPUT_DIR}/bl31.bin ${DEPLOYDIR}/${ATF_BASE_NAME}.ub
99 ln -sf ${ATF_BASE_NAME}.ub ${DEPLOYDIR}/${PN}.ub
100 ln -sf ${ATF_BASE_NAME}.ub ${DEPLOYDIR}/atf-uboot.ub
101}
102addtask deploy before do_build after do_compile
103FILES:${PN} += "/boot/${PN}.elf"