blob: d19c7c04b817ced6ee0503254222a1a74dc1a465 [file] [log] [blame]
Michael Grandb76287b2019-02-24 23:38:57 +01001ROOT = $(PWD)/..
2PLATFORM ?= zcu102
Michael Grand08b8dde2019-03-13 17:56:04 +01003PETALINUX_PATH ?= $(PETALINUX)
4BSP_PATH ?= ./xilinx-${PLATFORM}-v$(PETALINUX_VER)-final.bsp
5PRJ_PATH ?= $(ROOT)/$(PLATFORM)-$(PETALINUX_VER)
Michael Grandb76287b2019-02-24 23:38:57 +01006PETALINUX_CFG_PATH ?= $(ROOT)/build/zynqmp
7OPTEE_VER ?= latest
8
9define set_cfg
10 @sed -i 's/$(1)=.*/$(1)=$(2)/' $(3)
11endef
12
13define set_optee_version
14 @if [ "$(1)" != "latest" ]; then \
15 echo 'OPTEE_VERSION ?= "$(1)"' > $(2); \
16 echo 'SRCREV ?= "$(1)"' >> $(2); \
17 else \
18 echo 'OPTEE_VERSION ?= "latest"' > $(2); \
19 echo 'SRCREV ?= "$${AUTOREV}"' >> $(2); \
20 fi
21endef
22
Michael Grand08b8dde2019-03-13 17:56:04 +010023ifeq ($(PLATFORM),ultra96-reva)
24 ZYNQMP_CONSOLE=cadence1
25else
26 ZYNQMP_CONSOLE=cadence0
27endif
Michael Grandb76287b2019-02-24 23:38:57 +010028
Michael Grand08b8dde2019-03-13 17:56:04 +010029.PHONY: all
30all: petalinux-create petalinux-config petalinux-build petalinux-package
31
32.PHONY: check-petalinux
Michael Grandb76287b2019-02-24 23:38:57 +010033check-petalinux:
34ifndef PETALINUX_VER
35 $(error You have to source Petalinux settings)
36endif
37ifneq ($(PETALINUX_VER),2018.2)
38 $(error This makefile only support Petalinux 2018.2)
39endif
40
Michael Grand08b8dde2019-03-13 17:56:04 +010041petalinux-create: check-petalinux
42 @cd $(ROOT) && petalinux-create -n $(PLATFORM)-$(PETALINUX_VER) \
43 -t project -s $(BSP_PATH)
Michael Grandb76287b2019-02-24 23:38:57 +010044 $(call set_cfg,CONFIG_SUBSYSTEM_ATF_COMPILE_EXTRA_SETTINGS,"SPD=opteed ZYNQMP_BL32_MEM_BASE=0x60000000 ZYNQMP_BL32_MEM_SIZE=0x80000",$(PRJ_PATH)/project-spec/configs/config)
45 $(call set_cfg,CONFIG_SUBSYSTEM_ZYNQMP_ATF_MEM_SIZE,0x16001,$(PRJ_PATH)/project-spec/configs/config)
46 @#
Michael Grand08b8dde2019-03-13 17:56:04 +010047 @# Replace BSP default rootfs by a minimal one to speed up building
48 @# process and ease compatibility between different boards. Default
49 @# rootfs is saved in rootfs_config_full file
50 @mv $(PRJ_PATH)/project-spec/configs/rootfs_config \
51 $(PRJ_PATH)/project-spec/configs/rootfs_config_full
52 @cp $(PETALINUX_CFG_PATH)/rootfs_config \
53 $(PRJ_PATH)/project-spec/configs/
Michael Grandb76287b2019-02-24 23:38:57 +010054 @#
Michael Grand08b8dde2019-03-13 17:56:04 +010055 @mkdir -p $(PRJ_PATH)/project-spec/meta-user/recipes-kernel/linux/linux-xlnx/
56 @cp $(PETALINUX_CFG_PATH)/kernel_optee.cfg \
57 $(PRJ_PATH)/project-spec/meta-user/recipes-kernel/linux/linux-xlnx/
58 @cp $(PETALINUX_CFG_PATH)/linux-xlnx_%.bbappend \
59 $(PRJ_PATH)/project-spec/meta-user/recipes-kernel/linux/linux-xlnx_%.bbappend
60 @cp $(PETALINUX_CFG_PATH)/system-user.dtsi \
61 $(PRJ_PATH)/project-spec/meta-user/recipes-bsp/device-tree/files/
62 @#
63 @# Override default TF-A 1.4 with TF-A 1.5 because it does not work with
64 @# OP-TEE
Michael Grandb76287b2019-02-24 23:38:57 +010065 @mkdir -p $(PRJ_PATH)/project-spec/meta-user/recipes-bsp/arm-trusted-firmware/
Michael Grand08b8dde2019-03-13 17:56:04 +010066 @cp -r $(PETALINUX_CFG_PATH)/arm-trusted-firmware/* \
67 $(PRJ_PATH)/project-spec/meta-user/recipes-bsp/arm-trusted-firmware/
Michael Grandb76287b2019-02-24 23:38:57 +010068 @#
Michael Grand08b8dde2019-03-13 17:56:04 +010069 @petalinux-create -p $(PRJ_PATH) -t apps --template install \
70 -n optee-client --enable
71 @petalinux-create -p $(PRJ_PATH) -t apps --template install \
72 -n optee-test --enable
Michael Grandb76287b2019-02-24 23:38:57 +010073 @mkdir -p $(PRJ_PATH)/project-spec/meta-user/recipes-bsp/optee-os
Michael Grand08b8dde2019-03-13 17:56:04 +010074 @cp -r $(PETALINUX_CFG_PATH)/optee-os/* \
75 $(PRJ_PATH)/project-spec/meta-user/recipes-bsp/optee-os/
76 @cp -r $(PETALINUX_CFG_PATH)/optee-client/* \
77 $(PRJ_PATH)/project-spec/meta-user/recipes-apps/optee-client/
78 @cp -r $(PETALINUX_CFG_PATH)/optee-test/* \
79 $(PRJ_PATH)/project-spec/meta-user/recipes-apps/optee-test/
Michael Grandb76287b2019-02-24 23:38:57 +010080
Michael Grand08b8dde2019-03-13 17:56:04 +010081petalinux-config: check-petalinux
Michael Grandb76287b2019-02-24 23:38:57 +010082 $(call set_optee_version,$(OPTEE_VER),$(PRJ_PATH)/project-spec/meta-user/recipes-apps/optee-test/optee-test.bbappend)
83 $(call set_optee_version,$(OPTEE_VER),$(PRJ_PATH)/project-spec/meta-user/recipes-apps/optee-client/optee-client.bbappend)
84 $(call set_optee_version,$(OPTEE_VER),$(PRJ_PATH)/project-spec/meta-user/recipes-bsp/optee-os/optee-os.bbappend)
Michael Grand08b8dde2019-03-13 17:56:04 +010085 @petalinux-config -p $(PRJ_PATH) --oldconfig
Michael Grandb76287b2019-02-24 23:38:57 +010086
Michael Grand08b8dde2019-03-13 17:56:04 +010087petalinux-build: check-petalinux
88 @petalinux-build -p $(PRJ_PATH)
Michael Grandb76287b2019-02-24 23:38:57 +010089
Michael Grand08b8dde2019-03-13 17:56:04 +010090qemu: check-petalinux
91 @cd $(PRJ_PATH) && petalinux-boot --qemu \
92 --qemu-args "-device loader,file=${PRJ_PATH}/images/linux/bl32.elf" \
93 --kernel
94
95petalinux-package: check-petalinux
96 @cd $(PRJ_PATH) && petalinux-package --boot --pmufw --fpga --u-boot \
97 --add ${PRJ_PATH}/images/linux/bl32.elf --cpu a53-0 \
98 --file-attribute "exception_level=el-1, trustzone" --force