blob: 37a8f4b5df1c1de1e3ab03aedcde7f6a3bc4f210 [file] [log] [blame]
Michael Grandb76287b2019-02-24 23:38:57 +01001PLATFORM ?= zcu102
Ibai Erkiagad7c761d2021-03-31 10:54:12 +01002BSP_PATH ?= ../xilinx-${PLATFORM}-v$(PETALINUX_VER)-final.bsp
3PRJ_PATH ?= ../petalinux-optee-$(PLATFORM)
Michael Grandb76287b2019-02-24 23:38:57 +01004OPTEE_VER ?= latest
5
Ibai Erkiagad7c761d2021-03-31 10:54:12 +01006PYTHON_PATH ?= ${PRJ_PATH}/project-spec/meta-user/recipes-devtools/python
7
Michael Grandb76287b2019-02-24 23:38:57 +01008define set_cfg
9 @sed -i 's/$(1)=.*/$(1)=$(2)/' $(3)
10endef
11
12define set_optee_version
13 @if [ "$(1)" != "latest" ]; then \
14 echo 'OPTEE_VERSION ?= "$(1)"' > $(2); \
15 echo 'SRCREV ?= "$(1)"' >> $(2); \
16 else \
17 echo 'OPTEE_VERSION ?= "latest"' > $(2); \
18 echo 'SRCREV ?= "$${AUTOREV}"' >> $(2); \
19 fi
20endef
21
Michael Grand08b8dde2019-03-13 17:56:04 +010022ifeq ($(PLATFORM),ultra96-reva)
23 ZYNQMP_CONSOLE=cadence1
24else
25 ZYNQMP_CONSOLE=cadence0
26endif
Michael Grandb76287b2019-02-24 23:38:57 +010027
Michael Grand08b8dde2019-03-13 17:56:04 +010028.PHONY: all
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010029all: create build package
Michael Grand08b8dde2019-03-13 17:56:04 +010030
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010031.PHONY: check
32check:
Michael Grandb76287b2019-02-24 23:38:57 +010033ifndef PETALINUX_VER
34 $(error You have to source Petalinux settings)
35endif
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010036ifneq ($(PETALINUX_VER),2020.2)
37 $(error This makefile only support Petalinux 2020.2)
Michael Grandb76287b2019-02-24 23:38:57 +010038endif
39
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010040create: check
41 @# Create TMP directory to avoid issues with .. in the path name
42 @mkdir -p /tmp/petalinux-optee-${PLATFORM}
43 @petalinux-create -n $(PRJ_PATH) -t project -s $(BSP_PATH) --tmpdir /tmp/petalinux-optee-${PLATFORM}
Michael Grandb76287b2019-02-24 23:38:57 +010044 @#
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010045 @# Append the ATF recipe to include opteed as SPD
46 @mkdir -p ${PRJ_PATH}/project-spec/meta-user/recipes-bsp/arm-trusted-firmware
47 @cp zynqmp/arm-trusted-firmware/*.bbappend ${PRJ_PATH}/project-spec/meta-user/recipes-bsp/arm-trusted-firmware/.
Michael Grandb76287b2019-02-24 23:38:57 +010048 @#
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010049 @# Download optee package recipes from meta-arm layer using gatesgarth branch as there were not available for zeus
50 @curl -s https://git.yoctoproject.org/cgit/cgit.cgi/meta-arm/snapshot/meta-arm-3.2.tar.gz -o ../meta-arm-3.2.tar.gz
51 @tar -C ${PRJ_PATH}/project-spec/meta-user --strip-components=2 -xvf ../meta-arm-3.2.tar.gz meta-arm-3.2/meta-arm/recipes-security > /dev/null
Michael Grand08b8dde2019-03-13 17:56:04 +010052 @#
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010053 @# Copy the bbapend files for our target
54 @cp zynqmp/optee/* ${PRJ_PATH}/project-spec/meta-user/recipes-security/optee/.
Michael Grandb76287b2019-02-24 23:38:57 +010055 @#
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010056 @# Download python package dependencies from meta-core layer using gatesgarth branch as there were not available for zeus
57 @mkdir -p ${PYTHON_PATH}
58 @curl -s http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-devtools/python/python3-pycryptodome_3.9.8.bb?h=gatesgarth \
59 -o ${PYTHON_PATH}/python3-pycryptodome_3.9.8.bb
60 @curl -s http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-devtools/python/python3-pycryptodomex_3.9.8.bb?h=gatesgarth \
61 -o ${PYTHON_PATH}/python3-pycryptodomex_3.9.8.bb
62 @curl -s http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-devtools/python/python3-pyelftools_0.26.bb?h=gatesgarth \
63 -o ${PYTHON_PATH}/python3-pyelftools_0.26.bb
64 @curl -s http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-devtools/python/python-pycryptodome.inc?h=gatesgarth \
65 -o ${PYTHON_PATH}/python-pycryptodome.inc
66 @#
67 @# Add packages to the image
68 @echo IMAGE_INSTALL_append = \" optee-os optee-client optee-test\" >> ${PRJ_PATH}/project-spec/meta-user/conf/petalinuxbsp.conf
69 @#
70 @# Add optee kernel options to the exisiting kernel append recipe
71 @echo SRC_URI_append += \"file://kernel_optee.cfg\" >> ${PRJ_PATH}/project-spec/meta-user/recipes-kernel/linux/linux-xlnx_%.bbappend
72 @cp zynqmp/kernel/kernel_optee.cfg ${PRJ_PATH}/project-spec/meta-user/recipes-kernel/linux/linux-xlnx/kernel_optee.cfg
73 @#
74 @# Replace exisiting user configued dts file to add optee node
75 @cp zynqmp/device-tree/system-user.dtsi ${PRJ_PATH}/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
Michael Grandb76287b2019-02-24 23:38:57 +010076
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010077
78build: create
Michael Grand08b8dde2019-03-13 17:56:04 +010079 @petalinux-build -p $(PRJ_PATH)
Michael Grandb76287b2019-02-24 23:38:57 +010080
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010081qemu: check
Michael Grand08b8dde2019-03-13 17:56:04 +010082 @cd $(PRJ_PATH) && petalinux-boot --qemu \
83 --qemu-args "-device loader,file=${PRJ_PATH}/images/linux/bl32.elf" \
84 --kernel
85
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010086package: check
87 @petalinux-package --boot --pmufw --fpga --u-boot --add ${PRJ_PATH}/images/linux/tee_raw.bin --cpu a53-0 \
88 --file-attribute "load=0x60000000, startup=0x60000000, exception_level=el-1, trustzone" --force -p ${PRJ_PATH}