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 11OPTEE_OS_PLATFORM = vexpress-juno 12 13include common.mk 14 15################################################################################ 16# Paths to git projects and various binaries 17################################################################################ 18TF_A_PATH ?= $(ROOT)/trusted-firmware-a 19 20U-BOOT_PATH ?= $(ROOT)/u-boot 21U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin 22 23SCP_BLX_URL ?= https://downloads.trustedfirmware.org/tf-a/css_scp_2.8.0/juno 24 25################################################################################ 26# Targets 27################################################################################ 28all: scp-blx arm-tf u-boot linux optee-os buildroot 29clean: scp-blx-clean arm-tf-clean buildroot-clean u-boot-clean optee-os-clean 30 31include toolchain.mk 32 33################################################################################ 34# SCP BL1 and BL2 35################################################################################ 36.PHONY: scp-blx 37scp-blx: $(ROOT)/out-firmware/scp_bl1.bin $(ROOT)/out-firmware/scp_bl2.bin 38 39.PHONY: scp-blx 40scp-blx-clean: 41 @rm -f $(ROOT)/out-firmware/scp_bl1.bin 42 @rm -f $(ROOT)/out-firmware/scp_bl2.bin 43 @rm -f $(ROOT)/out-firmware/tmp/scp_bl1.bin 44 @rm -f $(ROOT)/out-firmware/tmp/scp_bl2.bin 45 46define dlscp 47 @mkdir -p $(ROOT)/out-firmware/tmp 48 @rm -f $(ROOT)/out-firmware/tmp/$1 49 @rm -f $(ROOT)/out-firmware/$1 50 @(cd $(ROOT)/out-firmware/tmp/ && wget $(SCP_BLX_URL)/$1) 51 @(echo $2 $(ROOT)/out-firmware/tmp/$1 | sha256sum -c) 52 @(mv $(ROOT)/out-firmware/tmp/$1 $(ROOT)/out-firmware/$1) 53endef 54 55$(ROOT)/out-firmware/scp_bl1.bin: 56 $(call dlscp,scp_bl1.bin,1c690a7d93c82d39d18b720920ced7a712fdcfc744224b4f067e56013522fece) 57 58$(ROOT)/out-firmware/scp_bl2.bin: 59 $(call dlscp,scp_bl2.bin,533eb4a3f9d91e759b98288edf4c1441abe6f7fbc5da87825a8f1bb1b7942aa5) 60 61################################################################################ 62# ARM Trusted Firmware 63################################################################################ 64TF_A_EXPORTS ?= \ 65 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" 66 67TF_A_FLAGS ?= \ 68 SCP_BL2=$(ROOT)/out-firmware/scp_bl2.bin \ 69 BL32=$(OPTEE_OS_HEADER_V2_BIN) \ 70 BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \ 71 BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \ 72 BL33=$(U-BOOT_BIN) \ 73 DEBUG=0 \ 74 ARM_TSP_RAM_LOCATION=dram \ 75 PLAT=juno \ 76 SPD=opteed 77 78arm-tf: scp-blx optee-os u-boot 79 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip 80 81arm-tf-clean: 82 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean 83 84################################################################################ 85# Das U-Boot 86################################################################################ 87 88U-BOOT_EXPORTS ?= CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" 89 90U-BOOT_DEFCONFIG_FILES := \ 91 $(U-BOOT_PATH)/configs/vexpress_aemv8a_juno_defconfig \ 92 $(ROOT)/build/kconfigs/u-boot_juno.conf 93 94.PHONY: u-boot 95u-boot: 96 cd $(U-BOOT_PATH) && \ 97 scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_FILES) 98 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all 99 100u-boot-clean: 101 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean 102 103################################################################################ 104# Linux kernel 105################################################################################ 106LINUX_DEFCONFIG_COMMON_ARCH := arm64 107LINUX_DEFCONFIG_COMMON_FILES := \ 108 $(LINUX_PATH)/arch/arm64/configs/defconfig \ 109 $(CURDIR)/kconfigs/juno.conf 110 111linux-defconfig: $(LINUX_PATH)/.config 112 113LINUX_COMMON_FLAGS += ARCH=arm64 114 115linux: linux-common 116 117linux-defconfig-clean: linux-defconfig-clean-common 118 119LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64 120 121linux-clean: linux-clean-common 122 123LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64 124 125linux-cleaner: linux-cleaner-common 126 127################################################################################ 128# OP-TEE 129################################################################################ 130optee-os: optee-os-common 131optee-os-clean: optee-os-clean-common 132 133 134$(ROOT)/out-br/images/ramdisk.img: $(ROOT)/out-br/images/rootfs.cpio.gz 135 $(U-BOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \ 136 -d $< $@ 137 138FTP-UPLOAD = ftp-upload -v --host $(JUNO_IP) --dir SOFTWARE 139 140.PHONY: flash 141flash: $(ROOT)/out-br/images/ramdisk.img 142 @test -n "$(JUNO_IP)" || \ 143 (echo "JUNO_IP not set" ; exit 1) 144 $(FTP-UPLOAD) $(ROOT)/out-firmware/scp_bl1.bin 145 $(FTP-UPLOAD) $(TF_A_PATH)/build/juno/release/bl1.bin 146 $(FTP-UPLOAD) $(TF_A_PATH)/build/juno/release/fip.bin 147 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/Image 148 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/dts/arm/juno.dtb 149 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/dts/arm/juno-r1.dtb 150 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/dts/arm/juno-r2.dtb 151 $(FTP-UPLOAD) $(ROOT)/out-br/images/ramdisk.img 152