blob: 3b5e4caa3a52a46656006888e15041c460e40f55 [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
Joakim Bech2d8cd072023-04-05 19:48:07 +020025# We don't want buildroot to strip kernel8.img, since that will remove the
26# "magic" from the kernel header.
27BR2_STRIP_EXCLUDE_FILES ?= kernel8.img
28
Etienne Carriere3768a2b2019-05-14 17:13:19 +020029OPTEE_OS_PLATFORM = rpi3
30
Victor Chong7a716512017-09-11 15:18:44 +010031include common.mk
Philip Attfield3f9250f2016-09-14 07:43:32 +020032
33################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +020034# Paths to git projects and various binaries
35################################################################################
Victor Chongdf54b112019-08-11 15:58:12 +010036TF_A_PATH ?= $(ROOT)/trusted-firmware-a
Victor Chong371d7c22019-08-08 17:17:14 +010037TF_A_OUT ?= $(TF_A_PATH)/build/rpi3/debug
38TF_A_BOOT ?= $(TF_A_OUT)/armstub8.bin
Philip Attfield3f9250f2016-09-14 07:43:32 +020039
Igor Opaniuk2e947f22018-06-19 22:21:36 +030040OPTEE_PATH ?= $(ROOT)/optee_os
Philip Attfield3f9250f2016-09-14 07:43:32 +020041U-BOOT_PATH ?= $(ROOT)/u-boot
42U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin
Philip Attfield3f9250f2016-09-14 07:43:32 +020043
Joakim Bech54411f22018-06-11 19:28:42 +020044RPI3_FIRMWARE_PATH ?= $(BUILD_PATH)/rpi3/firmware
Joakim Bech54411f22018-06-11 19:28:42 +020045RPI3_BOOT_CONFIG ?= $(RPI3_FIRMWARE_PATH)/config.txt
46RPI3_UBOOT_ENV ?= $(ROOT)/out/uboot.env
47RPI3_UBOOT_ENV_TXT ?= $(RPI3_FIRMWARE_PATH)/uboot.env.txt
48RPI3_STOCK_FW_PATH ?= $(ROOT)/firmware
Igor Opaniuk67959e12016-12-21 15:19:27 +020049RPI3_STOCK_FW_PATH_BOOT ?= $(RPI3_STOCK_FW_PATH)/boot
Igor Opaniuk2e947f22018-06-19 22:21:36 +030050OPTEE_BIN ?= $(OPTEE_PATH)/out/arm/core/tee-header_v2.bin
51OPTEE_BIN_EXTRA1 ?= $(OPTEE_PATH)/out/arm/core/tee-pager_v2.bin
52OPTEE_BIN_EXTRA2 ?= $(OPTEE_PATH)/out/arm/core/tee-pageable_v2.bin
Philip Attfield3f9250f2016-09-14 07:43:32 +020053
54LINUX_IMAGE ?= $(LINUX_PATH)/arch/arm64/boot/Image
Philby Johndf453742019-04-02 20:59:45 +053055LINUX_DTB_RPI3_B ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb
56LINUX_DTB_RPI3_BPLUS ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb
Philip Attfield3f9250f2016-09-14 07:43:32 +020057MODULE_OUTPUT ?= $(ROOT)/module_output
58
59################################################################################
60# Targets
61################################################################################
Igor Opaniuk2e947f22018-06-19 22:21:36 +030062all: arm-tf buildroot optee-os u-boot linux update_rootfs
63clean: arm-tf-clean buildroot-clean u-boot-clean \
64 optee-os-clean
Philip Attfield3f9250f2016-09-14 07:43:32 +020065
Victor Chong7a716512017-09-11 15:18:44 +010066include toolchain.mk
Philip Attfield3f9250f2016-09-14 07:43:32 +020067
68################################################################################
69# ARM Trusted Firmware
70################################################################################
Victor Chong371d7c22019-08-08 17:17:14 +010071TF_A_EXPORTS ?= \
Philip Attfield3f9250f2016-09-14 07:43:32 +020072 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
73
Victor Chong371d7c22019-08-08 17:17:14 +010074TF_A_FLAGS ?= \
Igor Opaniuk2e947f22018-06-19 22:21:36 +030075 NEED_BL32=yes \
76 BL32=$(OPTEE_BIN) \
77 BL32_EXTRA1=$(OPTEE_BIN_EXTRA1) \
78 BL32_EXTRA2=$(OPTEE_BIN_EXTRA2) \
79 BL33=$(U-BOOT_BIN) \
Philip Attfield3f9250f2016-09-14 07:43:32 +020080 DEBUG=1 \
81 V=0 \
82 CRASH_REPORTING=1 \
83 LOG_LEVEL=40 \
84 PLAT=rpi3 \
Joakim Bechbbfcc262019-01-16 22:48:43 +010085 RPI3_PRELOADED_DTB_BASE=0x00010000 \
Philip Attfield3f9250f2016-09-14 07:43:32 +020086 SPD=opteed
87
Joakim Bech95616032019-02-01 12:45:45 +010088arm-tf: optee-os u-boot-env
Victor Chong371d7c22019-08-08 17:17:14 +010089 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
Philip Attfield3f9250f2016-09-14 07:43:32 +020090
91arm-tf-clean:
Victor Chong371d7c22019-08-08 17:17:14 +010092 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
Philip Attfield3f9250f2016-09-14 07:43:32 +020093
94################################################################################
95# Das U-Boot
96################################################################################
Joakim Bech025e6322018-05-23 08:37:57 +020097U-BOOT_EXPORTS ?= CROSS_COMPILE=$(AARCH64_CROSS_COMPILE) ARCH=arm64
Igor Opaniuk2e947f22018-06-19 22:21:36 +030098U-BOOT_DEFCONFIG_COMMON_FILES := \
99 $(U-BOOT_PATH)/configs/rpi_3_defconfig \
100 $(CURDIR)/kconfigs/u-boot_rpi3.conf
Joakim Bech95616032019-02-01 12:45:45 +0100101
Philip Attfield3f9250f2016-09-14 07:43:32 +0200102.PHONY: u-boot
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300103u-boot: u-boot-defconfig
Philip Attfield3f9250f2016-09-14 07:43:32 +0200104 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all
Igor Opaniukc176f572016-12-19 22:47:09 +0200105 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) tools
Philip Attfield3f9250f2016-09-14 07:43:32 +0200106
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300107u-boot-clean: u-boot-defconfig-clean
Philip Attfield3f9250f2016-09-14 07:43:32 +0200108 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
109
Joakim Bech95616032019-02-01 12:45:45 +0100110u-boot-env: $(RPI3_UBOOT_ENV_TXT) u-boot
Igor Opaniukc176f572016-12-19 22:47:09 +0200111 mkdir -p $(ROOT)/out
Joakim Bech95616032019-02-01 12:45:45 +0100112 $(U-BOOT_PATH)/tools/mkenvimage -s 0x4000 -o $(RPI3_UBOOT_ENV) \
113 $(RPI3_UBOOT_ENV_TXT)
Igor Opaniukc176f572016-12-19 22:47:09 +0200114
115u-boot-env-clean:
116 rm -f $(RPI3_UBOOT_ENV)
117
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300118u-boot-defconfig: $(U-BOOT_DEFCONFIG_COMMON_FILES)
119 cd $(U-BOOT_PATH) && \
120 ARCH=arm64 \
121 scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_COMMON_FILES)
122
123.PHONY: u-boot-defconfig-clean
124u-boot-defconfig-clean:
125 rm -f $(U-BOOT_PATH)/.config
Joakim Bech95616032019-02-01 12:45:45 +0100126
Philip Attfield3f9250f2016-09-14 07:43:32 +0200127################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200128# Linux kernel
129################################################################################
130LINUX_DEFCONFIG_COMMON_ARCH := arm64
131LINUX_DEFCONFIG_COMMON_FILES := \
132 $(LINUX_PATH)/arch/arm64/configs/bcmrpi3_defconfig \
133 $(CURDIR)/kconfigs/rpi3.conf
134
135linux-defconfig: $(LINUX_PATH)/.config
136
137LINUX_COMMON_FLAGS += ARCH=arm64
138
139linux: linux-common
140 $(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(MODULE_OUTPUT) modules_install
141
142linux-defconfig-clean: linux-defconfig-clean-common
143
144LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
145
146linux-clean: linux-clean-common
147
148LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
149
150linux-cleaner: linux-cleaner-common
151
152################################################################################
153# OP-TEE
154################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200155optee-os: optee-os-common
Philip Attfield3f9250f2016-09-14 07:43:32 +0200156optee-os-clean: optee-os-clean-common
157
Igor Opaniukd5226382017-07-14 18:11:07 +0300158################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200159# Root FS
160################################################################################
Philip Attfield3f9250f2016-09-14 07:43:32 +0200161.PHONY: update_rootfs
Joakim Beched30f4e2018-06-11 19:24:19 +0200162# Make sure this is built before the buildroot target which will create the
163# root file system based on what's in $(BUILDROOT_TARGET_ROOT)
164buildroot: update_rootfs
165update_rootfs: arm-tf linux u-boot
166 @mkdir -p --mode=755 $(BUILDROOT_TARGET_ROOT)/boot
167 @mkdir -p --mode=755 $(BUILDROOT_TARGET_ROOT)/usr/bin
Philby Johndf453742019-04-02 20:59:45 +0530168 @install -v -p --mode=755 $(LINUX_DTB_RPI3_B) $(BUILDROOT_TARGET_ROOT)/boot/bcm2710-rpi-3-b.dtb
169 @install -v -p --mode=755 $(LINUX_DTB_RPI3_BPLUS) $(BUILDROOT_TARGET_ROOT)/boot/bcm2710-rpi-3-b-plus.dtb
Joakim Beched30f4e2018-06-11 19:24:19 +0200170 @install -v -p --mode=755 $(RPI3_BOOT_CONFIG) $(BUILDROOT_TARGET_ROOT)/boot/config.txt
Igor Opaniuk2e947f22018-06-19 22:21:36 +0300171 @install -v -p --mode=755 $(LINUX_IMAGE) $(BUILDROOT_TARGET_ROOT)/boot/kernel8.img
Victor Chong371d7c22019-08-08 17:17:14 +0100172 @install -v -p --mode=755 $(TF_A_BOOT) $(BUILDROOT_TARGET_ROOT)/boot/armstub8.bin
Joakim Beched30f4e2018-06-11 19:24:19 +0200173 @install -v -p --mode=755 $(RPI3_UBOOT_ENV) $(BUILDROOT_TARGET_ROOT)/boot/uboot.env
Joakim Beched30f4e2018-06-11 19:24:19 +0200174 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/bootcode.bin $(BUILDROOT_TARGET_ROOT)/boot/bootcode.bin
175 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/COPYING.linux $(BUILDROOT_TARGET_ROOT)/boot/COPYING.linux
176 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_cd.dat $(BUILDROOT_TARGET_ROOT)/boot/fixup_cd.dat
177 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup.dat $(BUILDROOT_TARGET_ROOT)/boot/fixup.dat
178 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_db.dat $(BUILDROOT_TARGET_ROOT)/boot/fixup_db.dat
179 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/fixup_x.dat $(BUILDROOT_TARGET_ROOT)/boot/fixup_x.dat
180 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/LICENCE.broadcom $(BUILDROOT_TARGET_ROOT)/boot/LICENCE.broadcom
181 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_cd.elf $(BUILDROOT_TARGET_ROOT)/boot/start_cd.elf
182 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_db.elf $(BUILDROOT_TARGET_ROOT)/boot/start_db.elf
183 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start.elf $(BUILDROOT_TARGET_ROOT)/boot/start.elf
184 @install -v -p --mode=755 $(RPI3_STOCK_FW_PATH)/boot/start_x.elf $(BUILDROOT_TARGET_ROOT)/boot/start_x.elf
185 @cd $(MODULE_OUTPUT) && find . | cpio -pudm $(BUILDROOT_TARGET_ROOT)
Philip Attfield3f9250f2016-09-14 07:43:32 +0200186
187# Creating images etc, could wipe out a drive on the system, therefore we don't
188# want to automate that in script or make target. Instead we just simply provide
189# the steps here.
190.PHONY: img-help
191img-help:
192 @echo "$$ fdisk /dev/sdx # where sdx is the name of your sd-card"
193 @echo " > p # prints partition table"
194 @echo " > d # repeat until all partitions are deleted"
195 @echo " > n # create a new partition"
196 @echo " > p # create primary"
197 @echo " > 1 # make it the first partition"
198 @echo " > <enter> # use the default sector"
Joakim Bech47a303e2021-01-12 15:18:21 +0100199 @echo " > +64M # create a boot partition with 64MB of space"
Philip Attfield3f9250f2016-09-14 07:43:32 +0200200 @echo " > n # create rootfs partition"
201 @echo " > p"
202 @echo " > 2"
203 @echo " > <enter>"
204 @echo " > <enter> # fill the remaining disk, adjust size to fit your needs"
205 @echo " > t # change partition type"
206 @echo " > 1 # select first partition"
207 @echo " > e # use type 'e' (FAT16)"
208 @echo " > a # make partition bootable"
209 @echo " > 1 # select first partition"
210 @echo " > p # double check everything looks right"
211 @echo " > w # write partition table to disk."
212 @echo ""
213 @echo "run the following as root"
214 @echo " $$ mkfs.vfat -F16 -n BOOT /dev/sdx1"
215 @echo " $$ mkdir -p /media/boot"
216 @echo " $$ mount /dev/sdx1 /media/boot"
217 @echo " $$ cd /media"
Joakim Beched30f4e2018-06-11 19:24:19 +0200218 @echo " $$ gunzip -cd $(ROOT)/out-br/images/rootfs.cpio.gz | sudo cpio -idmv \"boot/*\""
Philip Attfield3f9250f2016-09-14 07:43:32 +0200219 @echo " $$ umount boot"
220 @echo ""
221 @echo "run the following as root"
222 @echo " $$ mkfs.ext4 -L rootfs /dev/sdx2"
223 @echo " $$ mkdir -p /media/rootfs"
224 @echo " $$ mount /dev/sdx2 /media/rootfs"
225 @echo " $$ cd rootfs"
Joakim Beched30f4e2018-06-11 19:24:19 +0200226 @echo " $$ gunzip -cd $(ROOT)/out-br/images/rootfs.cpio.gz | sudo cpio -idmv"
Philip Attfield3f9250f2016-09-14 07:43:32 +0200227 @echo " $$ rm -rf /media/rootfs/boot/*"
228 @echo " $$ cd .. && umount rootfs"