Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 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 | ################################################################################ |
| 6 | override COMPILE_NS_USER := 64 |
| 7 | override COMPILE_NS_KERNEL := 64 |
| 8 | override COMPILE_S_USER := 64 |
| 9 | override COMPILE_S_KERNEL := 64 |
| 10 | |
Joakim Bech | 359d130 | 2018-06-11 20:48:46 +0200 | [diff] [blame] | 11 | # Need to set this before including common.mk |
Joakim Bech | aaa7ba3 | 2019-10-07 17:22:03 +0200 | [diff] [blame] | 12 | BR2_TARGET_GENERIC_GETTY_PORT ?= ttyS0 |
Igor Opaniuk | 42de804 | 2018-12-19 17:37:13 +0200 | [diff] [blame] | 13 | BR2_ROOTFS_POST_BUILD_SCRIPT ?= "board/raspberrypi3-64/post-build.sh" |
Joakim Bech | 359d130 | 2018-06-11 20:48:46 +0200 | [diff] [blame] | 14 | |
Jayanth Dodderi Chidanand | 9c60900 | 2020-12-19 17:43:05 +0100 | [diff] [blame] | 15 | # Network support related packages: |
| 16 | BR2_PACKAGE_DHCPCD ?= y |
| 17 | BR2_PACKAGE_ETHTOOL ?= y |
| 18 | BR2_PACKAGE_XINETD ?= y |
| 19 | |
| 20 | # SSH Packages : |
| 21 | BR2_PACKAGE_OPENSSH ?= y |
| 22 | BR2_PACKAGE_OPENSSH_SERVER ?= y |
| 23 | BR2_PACKAGE_OPENSSH_KEY_UTILS ?= y |
| 24 | |
Etienne Carriere | 3768a2b | 2019-05-14 17:13:19 +0200 | [diff] [blame] | 25 | OPTEE_OS_PLATFORM = rpi3 |
| 26 | |
Victor Chong | 7a71651 | 2017-09-11 15:18:44 +0100 | [diff] [blame] | 27 | include common.mk |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 28 | |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 29 | # Required tools to create the SD image |
| 30 | BR2_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. |
| 34 | BR2_TARGET_ROOTFS_EXT2=y |
| 35 | BR2_TARGET_ROOTFS_EXT2_4=y |
Joakim Bech | 1b06399 | 2024-01-15 16:32:59 +0100 | [diff] [blame] | 36 | BR2_TARGET_ROOTFS_EXT2_SIZE="256M" |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 37 | |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 38 | ################################################################################ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 39 | # Paths to git projects and various binaries |
| 40 | ################################################################################ |
Victor Chong | df54b11 | 2019-08-11 15:58:12 +0100 | [diff] [blame] | 41 | TF_A_PATH ?= $(ROOT)/trusted-firmware-a |
Victor Chong | 371d7c2 | 2019-08-08 17:17:14 +0100 | [diff] [blame] | 42 | TF_A_OUT ?= $(TF_A_PATH)/build/rpi3/debug |
| 43 | TF_A_BOOT ?= $(TF_A_OUT)/armstub8.bin |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 44 | |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 45 | OPTEE_PATH ?= $(ROOT)/optee_os |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 46 | U-BOOT_PATH ?= $(ROOT)/u-boot |
| 47 | U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 48 | |
Joakim Bech | 54411f2 | 2018-06-11 19:28:42 +0200 | [diff] [blame] | 49 | RPI3_FIRMWARE_PATH ?= $(BUILD_PATH)/rpi3/firmware |
Joakim Bech | 54411f2 | 2018-06-11 19:28:42 +0200 | [diff] [blame] | 50 | RPI3_BOOT_CONFIG ?= $(RPI3_FIRMWARE_PATH)/config.txt |
| 51 | RPI3_UBOOT_ENV ?= $(ROOT)/out/uboot.env |
| 52 | RPI3_UBOOT_ENV_TXT ?= $(RPI3_FIRMWARE_PATH)/uboot.env.txt |
| 53 | RPI3_STOCK_FW_PATH ?= $(ROOT)/firmware |
Igor Opaniuk | 67959e1 | 2016-12-21 15:19:27 +0200 | [diff] [blame] | 54 | RPI3_STOCK_FW_PATH_BOOT ?= $(RPI3_STOCK_FW_PATH)/boot |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 55 | OPTEE_BIN ?= $(OPTEE_PATH)/out/arm/core/tee-header_v2.bin |
| 56 | OPTEE_BIN_EXTRA1 ?= $(OPTEE_PATH)/out/arm/core/tee-pager_v2.bin |
| 57 | OPTEE_BIN_EXTRA2 ?= $(OPTEE_PATH)/out/arm/core/tee-pageable_v2.bin |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 58 | BOOT_PARTITION_FILES ?= $(ROOT)/out/boot |
| 59 | CREATE_IMAGE ?= $(BUILD_PATH)/rpi3/scripts/create-image.sh |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 60 | |
| 61 | LINUX_IMAGE ?= $(LINUX_PATH)/arch/arm64/boot/Image |
Philby John | df45374 | 2019-04-02 20:59:45 +0530 | [diff] [blame] | 62 | LINUX_DTB_RPI3_B ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb |
| 63 | LINUX_DTB_RPI3_BPLUS ?= $(LINUX_PATH)/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 64 | MODULE_OUTPUT ?= $(ROOT)/module_output |
| 65 | |
| 66 | ################################################################################ |
| 67 | # Targets |
| 68 | ################################################################################ |
Joakim Bech | 0e7778d | 2023-11-27 12:41:01 +0100 | [diff] [blame] | 69 | all: tf-a buildroot optee-os u-boot linux update_bootfs update_rootfs \ |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 70 | sdcard-image |
Joakim Bech | 0e7778d | 2023-11-27 12:41:01 +0100 | [diff] [blame] | 71 | |
| 72 | clean: tf-a-clean buildroot-clean u-boot-clean optee-os-clean |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 73 | |
Victor Chong | 7a71651 | 2017-09-11 15:18:44 +0100 | [diff] [blame] | 74 | include toolchain.mk |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 75 | |
| 76 | ################################################################################ |
| 77 | # ARM Trusted Firmware |
| 78 | ################################################################################ |
Victor Chong | 371d7c2 | 2019-08-08 17:17:14 +0100 | [diff] [blame] | 79 | TF_A_EXPORTS ?= \ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 80 | CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" |
| 81 | |
Victor Chong | 371d7c2 | 2019-08-08 17:17:14 +0100 | [diff] [blame] | 82 | TF_A_FLAGS ?= \ |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 83 | 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 Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 88 | DEBUG=1 \ |
| 89 | V=0 \ |
| 90 | CRASH_REPORTING=1 \ |
| 91 | LOG_LEVEL=40 \ |
| 92 | PLAT=rpi3 \ |
Joakim Bech | bbfcc26 | 2019-01-16 22:48:43 +0100 | [diff] [blame] | 93 | RPI3_PRELOADED_DTB_BASE=0x00010000 \ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 94 | SPD=opteed |
| 95 | |
Joakim Bech | d26e97e | 2023-11-27 12:52:05 +0100 | [diff] [blame] | 96 | tf-a: optee-os u-boot |
Victor Chong | 371d7c2 | 2019-08-08 17:17:14 +0100 | [diff] [blame] | 97 | $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 98 | |
Joakim Bech | 0e7778d | 2023-11-27 12:41:01 +0100 | [diff] [blame] | 99 | tf-a-clean: |
Victor Chong | 371d7c2 | 2019-08-08 17:17:14 +0100 | [diff] [blame] | 100 | $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 101 | |
Joakim Bech | 2d961b0 | 2023-11-27 12:45:46 +0100 | [diff] [blame] | 102 | .PHONY: tf-a tf-a-clean |
| 103 | |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 104 | ################################################################################ |
| 105 | # Das U-Boot |
| 106 | ################################################################################ |
Joakim Bech | 025e632 | 2018-05-23 08:37:57 +0200 | [diff] [blame] | 107 | U-BOOT_EXPORTS ?= CROSS_COMPILE=$(AARCH64_CROSS_COMPILE) ARCH=arm64 |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 108 | U-BOOT_DEFCONFIG_COMMON_FILES := \ |
| 109 | $(U-BOOT_PATH)/configs/rpi_3_defconfig \ |
| 110 | $(CURDIR)/kconfigs/u-boot_rpi3.conf |
Joakim Bech | 9561603 | 2019-02-01 12:45:45 +0100 | [diff] [blame] | 111 | |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 112 | u-boot: u-boot-defconfig |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 113 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all |
Igor Opaniuk | c176f57 | 2016-12-19 22:47:09 +0200 | [diff] [blame] | 114 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) tools |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 115 | |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 116 | u-boot-clean: u-boot-defconfig-clean |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 117 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean |
| 118 | |
Joakim Bech | 9561603 | 2019-02-01 12:45:45 +0100 | [diff] [blame] | 119 | u-boot-env: $(RPI3_UBOOT_ENV_TXT) u-boot |
Igor Opaniuk | c176f57 | 2016-12-19 22:47:09 +0200 | [diff] [blame] | 120 | mkdir -p $(ROOT)/out |
Joakim Bech | 9561603 | 2019-02-01 12:45:45 +0100 | [diff] [blame] | 121 | $(U-BOOT_PATH)/tools/mkenvimage -s 0x4000 -o $(RPI3_UBOOT_ENV) \ |
| 122 | $(RPI3_UBOOT_ENV_TXT) |
Igor Opaniuk | c176f57 | 2016-12-19 22:47:09 +0200 | [diff] [blame] | 123 | |
| 124 | u-boot-env-clean: |
| 125 | rm -f $(RPI3_UBOOT_ENV) |
| 126 | |
Igor Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 127 | u-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 Opaniuk | 2e947f2 | 2018-06-19 22:21:36 +0300 | [diff] [blame] | 132 | u-boot-defconfig-clean: |
| 133 | rm -f $(U-BOOT_PATH)/.config |
Joakim Bech | 9561603 | 2019-02-01 12:45:45 +0100 | [diff] [blame] | 134 | |
Joakim Bech | 2d961b0 | 2023-11-27 12:45:46 +0100 | [diff] [blame] | 135 | .PHONY: u-boot u-boot-clean u-boot-defconfig u-boot-defconfig-clean u-boot-env \ |
| 136 | u-boot-env-clean |
| 137 | |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 138 | ################################################################################ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 139 | # Linux kernel |
| 140 | ################################################################################ |
| 141 | LINUX_DEFCONFIG_COMMON_ARCH := arm64 |
| 142 | LINUX_DEFCONFIG_COMMON_FILES := \ |
| 143 | $(LINUX_PATH)/arch/arm64/configs/bcmrpi3_defconfig \ |
| 144 | $(CURDIR)/kconfigs/rpi3.conf |
| 145 | |
| 146 | linux-defconfig: $(LINUX_PATH)/.config |
| 147 | |
| 148 | LINUX_COMMON_FLAGS += ARCH=arm64 |
| 149 | |
| 150 | linux: linux-common |
| 151 | $(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(MODULE_OUTPUT) modules_install |
| 152 | |
| 153 | linux-defconfig-clean: linux-defconfig-clean-common |
| 154 | |
| 155 | LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64 |
| 156 | |
| 157 | linux-clean: linux-clean-common |
| 158 | |
| 159 | LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64 |
| 160 | |
| 161 | linux-cleaner: linux-cleaner-common |
| 162 | |
Joakim Bech | 2d961b0 | 2023-11-27 12:45:46 +0100 | [diff] [blame] | 163 | .PHONY: linux linux-defconfig-clean linux-clean linux-cleaner |
| 164 | |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 165 | ################################################################################ |
| 166 | # OP-TEE |
| 167 | ################################################################################ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 168 | optee-os: optee-os-common |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 169 | optee-os-clean: optee-os-clean-common |
| 170 | |
Igor Opaniuk | d522638 | 2017-07-14 18:11:07 +0300 | [diff] [blame] | 171 | ################################################################################ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 172 | # Root FS |
| 173 | ################################################################################ |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 174 | .PHONY: update_rootfs |
Joakim Bech | ed30f4e | 2018-06-11 19:24:19 +0200 | [diff] [blame] | 175 | # 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) |
| 177 | buildroot: update_rootfs |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 178 | update_rootfs: linux |
Joakim Bech | ed30f4e | 2018-06-11 19:24:19 +0200 | [diff] [blame] | 179 | @mkdir -p --mode=755 $(BUILDROOT_TARGET_ROOT)/usr/bin |
Joakim Bech | ed30f4e | 2018-06-11 19:24:19 +0200 | [diff] [blame] | 180 | @cd $(MODULE_OUTPUT) && find . | cpio -pudm $(BUILDROOT_TARGET_ROOT) |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 181 | |
Joakim Bech | d26e97e | 2023-11-27 12:52:05 +0100 | [diff] [blame] | 182 | update_bootfs: tf-a linux u-boot-env |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 183 | @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 |
| 203 | sdcard-image: update_bootfs update_rootfs buildroot |
| 204 | $(CREATE_IMAGE) -w $(ROOT) |
| 205 | |
Philip Attfield | 3f9250f | 2016-09-14 07:43:32 +0200 | [diff] [blame] | 206 | # 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 |
| 210 | img-help: |
Joakim Bech | a23d1ae | 2023-06-08 11:12:59 +0200 | [diff] [blame] | 211 | @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" |