blob: 1dedf3a345ebc4cae4ca0aa5d04e94ac19b93c24 [file] [log] [blame]
################################################################################
# Following variables defines how the NS_USER (Non Secure User - Client
# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
# S_USER (Secure User - TA) are compiled
################################################################################
override COMPILE_NS_USER := 64
override COMPILE_NS_KERNEL := 64
override COMPILE_S_USER := 64
override COMPILE_S_KERNEL := 64
PLATFORM = AMD Versal Gen 2
# Network support related packages:
BR2_PACKAGE_DHCPCD ?= y
BR2_PACKAGE_ETHTOOL ?= y
BR2_PACKAGE_XINETD ?= y
# SSH Packages :
BR2_PACKAGE_OPENSSH ?= y
BR2_PACKAGE_OPENSSH_SERVER ?= y
BR2_PACKAGE_OPENSSH_KEY_UTILS ?= y
# Openssl binary
BR2_PACKAGE_LIBOPENSSL_BIN ?= y
BR2_PACKAGE_LIBP11 ?= y
# Busybox
BR2_PACKAGE_BUSYBOX_WATCHDOG ?= y
# Target specific
BR2_TARGET_GENERIC_ISSUE ?= "OP-TEE embedded distrib for $(PLATFORM)"
BR2_TARGET_GENERIC_GETTY_PORT ?= "console"
BR2_TARGET_ROOTFS_EXT2 ?= y
# OP-TEE
OPTEE_OS_PLATFORM = versal2
OPTEE_OS_COMMON_EXTRA_FLAGS ?= CFG_PKCS11_TA=y CFG_USER_TA_TARGET_pkcs11=ta_arm64 O=out/arm
################################################################################
# Paths to git projects and various binaries
################################################################################
TF_A_PATH ?= $(ROOT)/arm-trusted-firmware
U-BOOT_PATH ?= $(ROOT)/u-boot-xlnx
LINUX_PATH ?= $(ROOT)/linux-xlnx
include common.mk
BINARIES_PATH ?= $(ROOT)/out/bin
TF_A_ELF ?= $(TF_A_PATH)/build/$(OPTEE_OS_PLATFORM)/release/bl31/bl31.elf
OPTEE_OS_ELF ?= $(OPTEE_OS_PATH)/out/arm/core/tee.elf
U-BOOT_ELF ?= $(U-BOOT_PATH)/u-boot.elf
U-BOOT_DTB ?= $(U-BOOT_PATH)/arch/arm/dts/versal2-*.dtb
MKIMAGE_PATH ?= $(U-BOOT_PATH)/tools
LINUX_IMAGE ?= $(LINUX_PATH)/arch/arm64/boot/Image
ROOTFS_GZ ?= $(ROOT)/out-br/images/rootfs.cpio.gz
ROOTFS_SIGN ?= $(BINARIES_PATH)/rootfs.cpio.gz.u-boot
################################################################################
# Targets
################################################################################
all: tfa optee-os u-boot linux dtbo buildroot buildroot_mkimg
clean: tfa-clean optee-os-clean u-boot-clean linux-clean dtbo-clean buildroot-clean
$(BINARIES_PATH):
mkdir -p $@
include toolchain.mk
################################################################################
# ARM Trusted Firmware
################################################################################
TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
TF_A_FLAGS = PLAT=versal2 CONSOLE=pl011 RESET_TO_BL31=1 SPD=opteed DEBUG=0 \
MEM_BASE=0x1600000 MEM_SIZE=0x200000 \
XILINX_OF_BOARD_DTB_ADDR=0x1000000 \
BL32_MEM_BASE=0x1800000 BL32_MEM_SIZE=0x8000000
tfa:
$(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) bl31
mkdir -p $(BINARIES_PATH)
cp $(TF_A_ELF) $(BINARIES_PATH)
tfa-clean:
$(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
################################################################################
# OP-TEE
################################################################################
OPTEE_OS_COMMON_FLAGS += CFG_TEE_CORE_LOG_LEVEL=2 CFG_TEE_TA_LOG_LEVEL=2 \
CFG_DT=y
optee-os: optee-os-common
mkdir -p $(BINARIES_PATH)
cp $(OPTEE_OS_ELF) $(BINARIES_PATH)
optee-os-clean: optee-os-clean-common
rm -rf ${OPTEE_OS_PATH}/out/
################################################################################
# U-Boot
################################################################################
U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
U-BOOT_DEFCONFIG_COMMON_FILES := $(U-BOOT_PATH)/configs/amd_versal2_virt_defconfig \
$(BUILD_PATH)/kconfigs/u-boot_versal2.conf
u-boot-defconfig: $(U-BOOT_DEFCONFIG_COMMON_FILES)
cd $(U-BOOT_PATH) && \
ARCH=arm64 \
scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_COMMON_FILES)
u-boot: u-boot-defconfig
$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH)
mkdir -p $(BINARIES_PATH)
cp $(U-BOOT_ELF) $(BINARIES_PATH)
u-boot-defconfig-clean:
rm -f $(U-BOOT_PATH)/.config
u-boot-clean: u-boot-defconfig-clean
$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
###############################################################################
# Device-Tree
###############################################################################
dtbo: linux u-boot
mkdir -p $(BINARIES_PATH)
${LINUX_PATH}/scripts/dtc/dtc -@ -I dts \
-O dtb -o $(BINARIES_PATH)/versal2-memory-reservation.dtbo \
$(BUILD_PATH)/versal2/versal2-memory-reservation.dtso
@$(foreach dtb,$(wildcard $(U-BOOT_DTB)), \
${LINUX_PATH}/scripts/dtc/fdtoverlay -i $(dtb) \
-o $(dtb) $(BINARIES_PATH)/versal2-memory-reservation.dtbo ; \
echo "Applied overlay to $(dtb)";)
cp $(U-BOOT_DTB) $(BINARIES_PATH)
dtbo-clean:
rm -f $(BINARIES_PATH)/versal2-memory-reservation.dtbo
################################################################################
# Linux kernel
################################################################################
LINUX_DEFCONFIG_COMMON_ARCH := arm64
LINUX_DEFCONFIG_COMMON_FILES := \
$(LINUX_PATH)/arch/arm64/configs/xilinx_defconfig \
$(BUILD_PATH)/kconfigs/versal2.conf
linux-defconfig: $(LINUX_PATH)/.config
LINUX_COMMON_FLAGS += ARCH=arm64
linux: linux-common
mkdir -p $(BINARIES_PATH)
cp $(LINUX_IMAGE) $(BINARIES_PATH)
linux-defconfig-clean: linux-defconfig-clean-common
LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
linux-clean: linux-clean-common
LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
linux-cleaner: linux-cleaner-common
################################################################################
# Buildroot
################################################################################
buildroot_mkimg: buildroot
mkdir -p $(BINARIES_PATH)
$(MKIMAGE_PATH)/mkimage -A arm \
-T ramdisk \
-C gzip \
-d $(ROOTFS_GZ) $(ROOTFS_SIGN)