blob: 721925dd3accf2df2e01cefe9030a977b460e597 [file] [log] [blame]
Akshay Belsare909e85c2024-11-09 17:30:48 +05301################################################################################
2# Following variables defines how the NS_USER (Non Secure User - Client
3# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
4# S_USER (Secure User - TA) are compiled
5################################################################################
6override COMPILE_NS_USER := 64
7override COMPILE_NS_KERNEL := 64
8override COMPILE_S_USER := 64
9override COMPILE_S_KERNEL := 64
10
11# Network support related packages:
12BR2_PACKAGE_DHCPCD ?= y
13BR2_PACKAGE_ETHTOOL ?= y
14BR2_PACKAGE_XINETD ?= y
15
16# SSH Packages :
17BR2_PACKAGE_OPENSSH ?= y
18BR2_PACKAGE_OPENSSH_SERVER ?= y
19BR2_PACKAGE_OPENSSH_KEY_UTILS ?= y
20
21# Openssl binary
22BR2_PACKAGE_LIBOPENSSL_BIN ?= y
23BR2_PACKAGE_LIBP11 ?= y
24
25PLATFORM = AMD Versal Gen 2
26OPTEE_OS_PLATFORM = versal2
27OPTEE_OS_COMMON_EXTRA_FLAGS ?= CFG_PKCS11_TA=y CFG_USER_TA_TARGET_pkcs11=ta_arm64 O=out/arm
28
29################################################################################
30# Paths to git projects and various binaries
31################################################################################
32TF_A_PATH ?= $(ROOT)/arm-trusted-firmware
33U-BOOT_PATH ?= $(ROOT)/u-boot-xlnx
34LINUX_PATH ?= $(ROOT)/linux-xlnx
35
36include common.mk
37
38BINARIES_PATH ?= $(ROOT)/out/bin
39TF_A_ELF ?= $(TF_A_PATH)/build/$(OPTEE_OS_PLATFORM)/release/bl31/bl31.elf
40OPTEE_OS_ELF ?= $(OPTEE_OS_PATH)/out/arm/core/tee.elf
41U-BOOT_ELF ?= $(U-BOOT_PATH)/u-boot.elf
42U-BOOT_DTB ?= $(U-BOOT_PATH)/arch/arm/dts/versal2-*.dtb
43MKIMAGE_PATH ?= $(U-BOOT_PATH)/tools
44LINUX_IMAGE ?= $(LINUX_PATH)/arch/arm64/boot/Image
45ROOTFS_GZ ?= $(ROOT)/out-br/images/rootfs.cpio.gz
46ROOTFS_SIGN ?= $(BINARIES_PATH)/rootfs.cpio.gz.u-boot
47
48################################################################################
49# Targets
50################################################################################
51
52all: tfa optee-os dtbo u-boot linux buildroot buildroot_mkimg
53clean: tfa-clean optee-os-clean dtbo-clean u-boot-clean linux-clean buildroot-clean
54
55$(BINARIES_PATH):
56 mkdir -p $@
57
58include toolchain.mk
59
60################################################################################
61# ARM Trusted Firmware
62################################################################################
63
64TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
65TF_A_FLAGS = PLAT=versal2 CONSOLE=pl011 RESET_TO_BL31=1 SPD=opteed DEBUG=0 \
66 MEM_BASE=0x1600000 MEM_SIZE=0x200000 \
67 XILINX_OF_BOARD_DTB_ADDR=0x1000 \
68 BL32_MEM_BASE=0x1800000 BL32_MEM_SIZE=0x8000000
69
70tfa:
71 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) bl31
72 mkdir -p $(BINARIES_PATH)
73 cp $(TF_A_ELF) $(BINARIES_PATH)
74
75tfa-clean:
76 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
77
78################################################################################
79# OP-TEE
80################################################################################
81
82OPTEE_OS_COMMON_FLAGS += CFG_TEE_CORE_LOG_LEVEL=2 CFG_TEE_TA_LOG_LEVEL=2
83
84optee-os: optee-os-common
85 mkdir -p $(BINARIES_PATH)
86 cp $(OPTEE_OS_ELF) $(BINARIES_PATH)
87
88optee-os-clean: optee-os-clean-common
89 rm -rf ${OPTEE_OS_PATH}/out/
90
91################################################################################
92# U-Boot
93################################################################################
94
95U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
96U-BOOT_DEFCONFIG_COMMON_FILES := $(U-BOOT_PATH)/configs/amd_versal2_virt_defconfig \
97 $(BUILD_PATH)/kconfigs/u-boot_versal2.conf
98
99u-boot-defconfig: $(U-BOOT_DEFCONFIG_COMMON_FILES)
100 cd $(U-BOOT_PATH) && \
101 ARCH=arm64 \
102 scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_COMMON_FILES)
103
104u-boot: u-boot-defconfig
105 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH)
106 mkdir -p $(BINARIES_PATH)
107 cp $(U-BOOT_ELF) $(BINARIES_PATH)
108
109u-boot-defconfig-clean:
110 rm -f $(U-BOOT_PATH)/.config
111
112u-boot-clean: u-boot-defconfig-clean
113 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
114
115###############################################################################
116# Device-Tree
117###############################################################################
118dtbo: u-boot
119 mkdir -p $(BINARIES_PATH)
120 ${LINUX_PATH}/scripts/dtc/dtc -@ -I dts \
121 -O dtb -o $(BINARIES_PATH)/versal2-memory-reservation.dtbo \
122 $(BUILD_PATH)/versal2/versal2-memory-reservation.dtso
123 @$(foreach dtb,$(wildcard $(U-BOOT_DTB)), \
124 ${LINUX_PATH}/scripts/dtc/fdtoverlay -i $(dtb) \
125 -o $(dtb) $(BINARIES_PATH)/versal2-memory-reservation.dtbo ; \
126 echo "Applied overlay to $(dtb)";)
127 cp $(U-BOOT_DTB) $(BINARIES_PATH)
128
129dtbo-clean:
130 rm -f $(BINARIES_PATH)/versal2-memory-reservation.dtbo
131
132################################################################################
133# Linux kernel
134################################################################################
135
136LINUX_DEFCONFIG_COMMON_ARCH := arm64
137LINUX_DEFCONFIG_COMMON_FILES := \
138 $(LINUX_PATH)/arch/arm64/configs/xilinx_defconfig \
139 $(BUILD_PATH)/kconfigs/versal2.conf
140
141linux-defconfig: $(LINUX_PATH)/.config
142
143LINUX_COMMON_FLAGS += ARCH=arm64
144
145linux: linux-common
146 mkdir -p $(BINARIES_PATH)
147 cp $(LINUX_IMAGE) $(BINARIES_PATH)
148
149linux-defconfig-clean: linux-defconfig-clean-common
150
151LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
152
153linux-clean: linux-clean-common
154
155LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
156
157linux-cleaner: linux-cleaner-common
158
159################################################################################
160# Buildroot
161################################################################################
162
163BR2_TARGET_GENERIC_ISSUE ?= "OP-TEE embedded distrib for $(PLATFORM)"
164BR2_TARGET_ROOTFS_EXT2 ?= y
165BR2_PACKAGE_BUSYBOX_WATCHDOG ?= y
166
167buildroot_mkimg: buildroot
168 mkdir -p $(BINARIES_PATH)
169 $(MKIMAGE_PATH)/mkimage -A arm \
170 -T ramdisk \
171 -C gzip \
172 -d $(ROOTFS_GZ) $(ROOTFS_SIGN)