blob: 285f43f9087d30bb2664bcdf5d4cfa16eb13369e [file] [log] [blame]
Philip Attfield3f9250f2016-09-14 07:43:32 +02001################################################################################
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
Joakim Bech359d1302018-06-11 20:48:46 +020011# Need to set this before including common.mk
Joakim Bechaaa7ba32019-10-07 17:22:03 +020012BR2_TARGET_GENERIC_GETTY_PORT ?= ttyS0
Igor Opaniuk42de8042018-12-19 17:37:13 +020013BR2_ROOTFS_POST_BUILD_SCRIPT ?= "board/raspberrypi3-64/post-build.sh"
Joakim Bech359d1302018-06-11 20:48:46 +020014
Jayanth Dodderi Chidanand9c609002020-12-19 17:43:05 +010015# Network support related packages:
16BR2_PACKAGE_DHCPCD ?= y
17BR2_PACKAGE_ETHTOOL ?= y
18BR2_PACKAGE_XINETD ?= y
19
20# SSH Packages :
21BR2_PACKAGE_OPENSSH ?= y
22BR2_PACKAGE_OPENSSH_SERVER ?= y
23BR2_PACKAGE_OPENSSH_KEY_UTILS ?= y
24
Etienne Carriere3768a2b2019-05-14 17:13:19 +020025OPTEE_OS_PLATFORM = rpi3
26
Victor Chong7a716512017-09-11 15:18:44 +010027include common.mk
Philip Attfield3f9250f2016-09-14 07:43:32 +020028
Joakim Becha23d1ae2023-06-08 11:12:59 +020029# Required tools to create the SD image
30BR2_PACKAGE_HOST_GENIMAGE=y
31
32# We need the ext2/4 image to be generated, so we will be able to copy that
33# directly into a parition on the image.
34BR2_TARGET_ROOTFS_EXT2=y
35BR2_TARGET_ROOTFS_EXT2_4=y
Joakim Bech1b063992024-01-15 16:32:59 +010036BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
Joakim Becha23d1ae2023-06-08 11:12:59 +020037
Philip Attfield3f9250f2016-09-14 07:43:32 +020038################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +020039# Paths to git projects and various binaries
40################################################################################
Victor Chongdf54b112019-08-11 15:58:12 +010041TF_A_PATH ?= $(ROOT)/trusted-firmware-a
Victor Chong371d7c22019-08-08 17:17:14 +010042TF_A_OUT ?= $(TF_A_PATH)/build/rpi3/debug
43TF_A_BOOT ?= $(TF_A_OUT)/armstub8.bin
Philip Attfield3f9250f2016-09-14 07:43:32 +020044
Igor Opaniuk2e947f22018-06-19 22:21:36 +030045OPTEE_PATH ?= $(ROOT)/optee_os
Philip Attfield3f9250f2016-09-14 07:43:32 +020046U-BOOT_PATH ?= $(ROOT)/u-boot
47U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin
Philip Attfield3f9250f2016-09-14 07:43:32 +020048
Joakim Bech54411f22018-06-11 19:28:42 +020049RPI3_FIRMWARE_PATH ?= $(BUILD_PATH)/rpi3/firmware
Joakim Bech54411f22018-06-11 19:28:42 +020050RPI3_BOOT_CONFIG ?= $(RPI3_FIRMWARE_PATH)/config.txt
51RPI3_UBOOT_ENV ?= $(ROOT)/out/uboot.env
52RPI3_UBOOT_ENV_TXT ?= $(RPI3_FIRMWARE_PATH)/uboot.env.txt
53RPI3_STOCK_FW_PATH ?= $(ROOT)/firmware
Igor Opaniuk67959e12016-12-21 15:19:27 +020054RPI3_STOCK_FW_PATH_BOOT ?= $(RPI3_STOCK_FW_PATH)/boot
Igor Opaniuk2e947f22018-06-19 22:21:36 +030055OPTEE_BIN ?= $(OPTEE_PATH)/out/arm/core/tee-header_v2.bin
56OPTEE_BIN_EXTRA1 ?= $(OPTEE_PATH)/out/arm/core/tee-pager_v2.bin
57OPTEE_BIN_EXTRA2 ?= $(OPTEE_PATH)/out/arm/core/tee-pageable_v2.bin
Joakim Becha23d1ae2023-06-08 11:12:59 +020058BOOT_PARTITION_FILES ?= $(ROOT)/out/boot
59CREATE_IMAGE ?= $(BUILD_PATH)/rpi3/scripts/create-image.sh
Philip Attfield3f9250f2016-09-14 07:43:32 +020060
61LINUX_IMAGE ?= $(LINUX_PATH)/arch/arm64/boot/Image
Philby Johndf453742019-04-02 20:59:45 +053062LINUX_DTB_RPI3_B ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb
63LINUX_DTB_RPI3_BPLUS ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb
Philip Attfield3f9250f2016-09-14 07:43:32 +020064MODULE_OUTPUT ?= $(ROOT)/module_output
65
66################################################################################
67# Targets
68################################################################################
Joakim Bech0e7778d2023-11-27 12:41:01 +010069all: tf-a buildroot optee-os u-boot linux update_bootfs update_rootfs \
Joakim Becha23d1ae2023-06-08 11:12:59 +020070 sdcard-image
Joakim Bech0e7778d2023-11-27 12:41:01 +010071
72clean: tf-a-clean buildroot-clean u-boot-clean optee-os-clean
Philip Attfield3f9250f2016-09-14 07:43:32 +020073
Victor Chong7a716512017-09-11 15:18:44 +010074include toolchain.mk
Philip Attfield3f9250f2016-09-14 07:43:32 +020075
76################################################################################
77# ARM Trusted Firmware
78################################################################################
Victor Chong371d7c22019-08-08 17:17:14 +010079TF_A_EXPORTS ?= \
Philip Attfield3f9250f2016-09-14 07:43:32 +020080 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
81
Victor Chong371d7c22019-08-08 17:17:14 +010082TF_A_FLAGS ?= \
Igor Opaniuk2e947f22018-06-19 22:21:36 +030083 NEED_BL32=yes \
84 BL32=$(OPTEE_BIN) \
85 BL32_EXTRA1=$(OPTEE_BIN_EXTRA1) \
86 BL32_EXTRA2=$(OPTEE_BIN_EXTRA2) \
87 BL33=$(U-BOOT_BIN) \
Philip Attfield3f9250f2016-09-14 07:43:32 +020088 DEBUG=1 \
89 V=0 \
90 CRASH_REPORTING=1 \
91 LOG_LEVEL=40 \
92 PLAT=rpi3 \
Joakim Bechbbfcc262019-01-16 22:48:43 +010093 RPI3_PRELOADED_DTB_BASE=0x00010000 \
Philip Attfield3f9250f2016-09-14 07:43:32 +020094 SPD=opteed
95
Joakim Bechd26e97e2023-11-27 12:52:05 +010096tf-a: optee-os u-boot
Victor Chong371d7c22019-08-08 17:17:14 +010097 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
Philip Attfield3f9250f2016-09-14 07:43:32 +020098
Joakim Bech0e7778d2023-11-27 12:41:01 +010099tf-a-clean:
Victor Chong371d7c22019-08-08 17:17:14 +0100100 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
Philip Attfield3f9250f2016-09-14 07:43:32 +0200101
Joakim Bech2d961b02023-11-27 12:45:46 +0100102.PHONY: tf-a tf-a-clean
103
Philip Attfield3f9250f2016-09-14 07:43:32 +0200104################################################################################
105# Das U-Boot
106################################################################################
Joakim Bech025e6322018-05-23 08:37:57 +0200107U-BOOT_EXPORTS ?= CROSS_COMPILE=$(AARCH64_CROSS_COMPILE) ARCH=arm64
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300108U-BOOT_DEFCONFIG_COMMON_FILES := \
109 $(U-BOOT_PATH)/configs/rpi_3_defconfig \
110 $(CURDIR)/kconfigs/u-boot_rpi3.conf
Joakim Bech95616032019-02-01 12:45:45 +0100111
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300112u-boot: u-boot-defconfig
Philip Attfield3f9250f2016-09-14 07:43:32 +0200113 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all
Igor Opaniukc176f572016-12-19 22:47:09 +0200114 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) tools
Philip Attfield3f9250f2016-09-14 07:43:32 +0200115
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300116u-boot-clean: u-boot-defconfig-clean
Philip Attfield3f9250f2016-09-14 07:43:32 +0200117 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
118
Joakim Bech95616032019-02-01 12:45:45 +0100119u-boot-env: $(RPI3_UBOOT_ENV_TXT) u-boot
Igor Opaniukc176f572016-12-19 22:47:09 +0200120 mkdir -p $(ROOT)/out
Joakim Bech95616032019-02-01 12:45:45 +0100121 $(U-BOOT_PATH)/tools/mkenvimage -s 0x4000 -o $(RPI3_UBOOT_ENV) \
122 $(RPI3_UBOOT_ENV_TXT)
Igor Opaniukc176f572016-12-19 22:47:09 +0200123
124u-boot-env-clean:
125 rm -f $(RPI3_UBOOT_ENV)
126
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300127u-boot-defconfig: $(U-BOOT_DEFCONFIG_COMMON_FILES)
128 cd $(U-BOOT_PATH) && \
129 ARCH=arm64 \
130 scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_COMMON_FILES)
131
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300132u-boot-defconfig-clean:
133 rm -f $(U-BOOT_PATH)/.config
Joakim Bech95616032019-02-01 12:45:45 +0100134
Joakim Bech2d961b02023-11-27 12:45:46 +0100135.PHONY: u-boot u-boot-clean u-boot-defconfig u-boot-defconfig-clean u-boot-env \
136 u-boot-env-clean
137
Philip Attfield3f9250f2016-09-14 07:43:32 +0200138################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200139# Linux kernel
140################################################################################
141LINUX_DEFCONFIG_COMMON_ARCH := arm64
142LINUX_DEFCONFIG_COMMON_FILES := \
143 $(LINUX_PATH)/arch/arm64/configs/bcmrpi3_defconfig \
144 $(CURDIR)/kconfigs/rpi3.conf
145
146linux-defconfig: $(LINUX_PATH)/.config
147
148LINUX_COMMON_FLAGS += ARCH=arm64
149
150linux: linux-common
151 $(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(MODULE_OUTPUT) modules_install
152
153linux-defconfig-clean: linux-defconfig-clean-common
154
155LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
156
157linux-clean: linux-clean-common
158
159LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
160
161linux-cleaner: linux-cleaner-common
162
Joakim Bech2d961b02023-11-27 12:45:46 +0100163.PHONY: linux linux-defconfig-clean linux-clean linux-cleaner
164
Philip Attfield3f9250f2016-09-14 07:43:32 +0200165################################################################################
166# OP-TEE
167################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200168optee-os: optee-os-common
Philip Attfield3f9250f2016-09-14 07:43:32 +0200169optee-os-clean: optee-os-clean-common
170
Igor Opaniukd5226382017-07-14 18:11:07 +0300171################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200172# Root FS
173################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200174.PHONY: update_rootfs
Joakim Beched30f4e2018-06-11 19:24:19 +0200175# Make sure this is built before the buildroot target which will create the
176# root file system based on what's in $(BUILDROOT_TARGET_ROOT)
177buildroot: update_rootfs
Joakim Becha23d1ae2023-06-08 11:12:59 +0200178update_rootfs: linux
Joakim Beched30f4e2018-06-11 19:24:19 +0200179 @mkdir -p --mode=755 $(BUILDROOT_TARGET_ROOT)/usr/bin
Joakim Beched30f4e2018-06-11 19:24:19 +0200180 @cd $(MODULE_OUTPUT) && find . | cpio -pudm $(BUILDROOT_TARGET_ROOT)
Philip Attfield3f9250f2016-09-14 07:43:32 +0200181
Joakim Bechd26e97e2023-11-27 12:52:05 +0100182update_bootfs: tf-a linux u-boot-env
Joakim Becha23d1ae2023-06-08 11:12:59 +0200183 @mkdir -p --mode=755 $(BOOT_PARTITION_FILES)
184 @install -v -p --mode=755 $(LINUX_DTB_RPI3_B) $(BOOT_PARTITION_FILES)/bcm2710-rpi-3-b.dtb
185 @install -v -p --mode=755 $(LINUX_DTB_RPI3_BPLUS) $(BOOT_PARTITION_FILES)/bcm2710-rpi-3-b-plus.dtb
186 @install -v -p --mode=755 $(RPI3_BOOT_CONFIG) $(BOOT_PARTITION_FILES)/config.txt
187 @install -v -p --mode=755 $(LINUX_IMAGE) $(BOOT_PARTITION_FILES)/kernel8.img
188 @install -v -p --mode=755 $(TF_A_BOOT) $(BOOT_PARTITION_FILES)/armstub8.bin
189 @install -v -p --mode=755 $(RPI3_UBOOT_ENV) $(BOOT_PARTITION_FILES)/uboot.env
190 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/bootcode.bin $(BOOT_PARTITION_FILES)/bootcode.bin
191 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/COPYING.linux $(BOOT_PARTITION_FILES)/COPYING.linux
192 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_cd.dat $(BOOT_PARTITION_FILES)/fixup_cd.dat
193 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup.dat $(BOOT_PARTITION_FILES)/fixup.dat
194 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_db.dat $(BOOT_PARTITION_FILES)/fixup_db.dat
195 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_x.dat $(BOOT_PARTITION_FILES)/fixup_x.dat
196 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/LICENCE.broadcom $(BOOT_PARTITION_FILES)/LICENCE.broadcom
197 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_cd.elf $(BOOT_PARTITION_FILES)/start_cd.elf
198 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_db.elf $(BOOT_PARTITION_FILES)/start_db.elf
199 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start.elf $(BOOT_PARTITION_FILES)/start.elf
200 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_x.elf $(BOOT_PARTITION_FILES)/start_x.elf
201
202.PHONY: sdcard-image
203sdcard-image: update_bootfs update_rootfs buildroot
204 $(CREATE_IMAGE) -w $(ROOT)
205
Philip Attfield3f9250f2016-09-14 07:43:32 +0200206# Creating images etc, could wipe out a drive on the system, therefore we don't
207# want to automate that in script or make target. Instead we just simply provide
208# the steps here.
209.PHONY: img-help
210img-help:
Joakim Becha23d1ae2023-06-08 11:12:59 +0200211 @echo "Use 'dmesg' to find your device/SD-card name, then run the following as root:"
212 @echo " $$ sudo dd if=$(ROOT)/out/rpi3-sdcard.img of=/dev/<name-of-my-sd-card> bs=1024k conv=fsync status=progress"