1################################################################################ 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) 173