blob: d179b49667c3de3f40e9a9668a9e2e4bf0fabb22 [file] [log] [blame]
Jens Wiklander16328062021-02-17 10:22:25 +01001################################################################################
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
Fathi Boudraa0264972024-03-18 15:25:23 +010011TFA_PLATFORM ?= imx8mq
Fathi Boudraf8cad7f2024-03-18 15:22:53 +010012OPTEE_OS_PLATFORM ?= imx-mx8mqevk
Fathi Boudra4b750a82024-03-18 23:13:14 +010013U_BOOT_DEFCONFIG ?= imx8mq_evk_defconfig
14U_BOOT_DT ?= imx8mq-evk.dtb
15LINUX_DT ?= imx8mq-evk.dtb
Fathi Boudra950763f2024-03-28 12:54:11 +010016MKIMAGE_DT ?= fsl-imx8mq-evk.dtb
Fathi Boudrae22c16e2024-03-19 00:55:05 +010017MKIMAGE_SOC ?= iMX8MQ
Fathi Boudraf2791652024-03-18 15:27:08 +010018
19BR2_TARGET_GENERIC_GETTY_PORT ?= ttymxc0
20BR2_TARGET_ROOTFS_EXT2 ?= y
21BR2_TARGET_ROOTFS_EXT2_4 ?= y
Jens Wiklander16328062021-02-17 10:22:25 +010022
23include common.mk
24
25################################################################################
26# Paths to git projects and various binaries
27################################################################################
Fathi Boudra7f988ae2024-03-18 15:57:29 +010028FIRMWARE_PATH ?= $(ROOT)/out-firmware
Fathi Boudra078bfb62024-03-18 15:34:53 +010029MKIMAGE_PATH ?= $(ROOT)/imx-mkimage
Fathi Boudrae22c16e2024-03-19 00:55:05 +010030MKIMAGE_SOC_PATH ?= $(MKIMAGE_PATH)/iMX8M
Jens Wiklander16328062021-02-17 10:22:25 +010031TF_A_PATH ?= $(ROOT)/trusted-firmware-a
Jens Wiklander16328062021-02-17 10:22:25 +010032
Jens Wiklander16328062021-02-17 10:22:25 +010033FIRMWARE_VERSION ?= firmware-imx-8.0
Fathi Boudradd144c32024-03-18 15:33:42 +010034FIRMWARE_BIN_SHA256_SUM ?= 63ec62f5d229cbed00918c8449173933f1c9d594c59396b8dd217e94f47138b0
35FIRMWARE_BIN ?= $(FIRMWARE_VERSION).bin
36FIRMWARE_BIN_URL ?= https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/$(FIRMWARE_BIN)
Jens Wiklander16328062021-02-17 10:22:25 +010037
Jens Wiklander16328062021-02-17 10:22:25 +010038BOOT_IMG ?= $(ROOT)/out/boot.img
39
40################################################################################
41# Targets
42################################################################################
43all: tfa u-boot linux optee-os buildroot flash-image
Fathi Boudrae628ce22024-03-18 23:51:54 +010044clean: ddr-firmware-clean optee-os-clean tfa-clean u-boot-clean buildroot-clean
Jens Wiklander16328062021-02-17 10:22:25 +010045
46include toolchain.mk
47
48################################################################################
49# ARM Trusted Firmware
50################################################################################
51TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
52
53# BL32=$(OPTEE_OS_HEADER_V2_BIN) \
54# BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \
55# BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \
56
Fathi Boudra75a68962024-03-28 12:58:17 +010057TF_A_FLAGS += PLAT=$(TFA_PLATFORM) SPD=opteed DEBUG_CONSOLE=1 DEBUG=0 V=1
Fathi Boudra7f988ae2024-03-18 15:57:29 +010058TF_A_FLAGS += BL32=$(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin
Jens Wiklander16328062021-02-17 10:22:25 +010059
Fathi Boudra56a167a2024-03-18 15:36:04 +010060tfa: optee-os
Jens Wiklander16328062021-02-17 10:22:25 +010061 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
62
63tfa-clean:
64 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
65
66################################################################################
67# U-Boot
68################################################################################
69
70U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
71
Fathi Boudra4b750a82024-03-18 23:13:14 +010072U-BOOT_DEFCONFIG_FILES := $(UBOOT_PATH)/configs/$(U_BOOT_DEFCONFIG) \
Jens Wiklander16328062021-02-17 10:22:25 +010073 $(BUILD_PATH)/kconfigs/uboot_imx8.conf
74
Fathi Boudra7f988ae2024-03-18 15:57:29 +010075$(UBOOT_PATH)/.config: $(U-BOOT_DEFCONFIG_FILES)
Fathi Boudra4b750a82024-03-18 23:13:14 +010076 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) $(U_BOOT_DEFCONFIG)
Fathi Boudra7f988ae2024-03-18 15:57:29 +010077 (cd $(UBOOT_PATH) && ARCH=arm64 scripts/kconfig/merge_config.sh \
Fathi Boudra3db30882024-03-18 15:39:22 +010078 $(U-BOOT_DEFCONFIG_FILES))
Jens Wiklander16328062021-02-17 10:22:25 +010079
80.PHONY: u-boot-defconfig
Fathi Boudra7f988ae2024-03-18 15:57:29 +010081u-boot-defconfig: $(UBOOT_PATH)/.config
Jens Wiklander16328062021-02-17 10:22:25 +010082
83.PHONY: u-boot
Fathi Boudrac043c1a2024-03-18 16:01:59 +010084u-boot: u-boot-defconfig tfa ddr-firmware
85 cp $(FIRMWARE_PATH)/$(FIRMWARE_VERSION)/firmware/ddr/synopsys/lpddr4_pmu_train_*.bin \
86 $(TF_A_PATH)/build/$(TFA_PLATFORM)/release/bl31.bin \
87 $(UBOOT_PATH)
Fathi Boudra7f988ae2024-03-18 15:57:29 +010088 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +010089
90.PHONY: u-boot-clean
91u-boot-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +010092 cd $(UBOOT_PATH) && git clean -xdf
Jens Wiklander16328062021-02-17 10:22:25 +010093
94.PHONY: u-boot-cscope
95u-boot-cscope:
Fathi Boudra7f988ae2024-03-18 15:57:29 +010096 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) cscope
Jens Wiklander16328062021-02-17 10:22:25 +010097
98
99################################################################################
100# Linux kernel
101################################################################################
102LINUX_DEFCONFIG_COMMON_ARCH := arm64
103LINUX_DEFCONFIG_COMMON_FILES := \
104 $(LINUX_PATH)/arch/arm64/configs/defconfig \
105 $(CURDIR)/kconfigs/imx.conf
106
107linux-defconfig: $(LINUX_PATH)/.config
108
109LINUX_COMMON_FLAGS += ARCH=arm64
110
111linux: linux-common
112
113linux-defconfig-clean: linux-defconfig-clean-common
114
115LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
116
117linux-clean: linux-clean-common
118
119LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
120
121linux-cleaner: linux-cleaner-common
122
123################################################################################
124# OP-TEE
125################################################################################
126optee-os: optee-os-common
127optee-os-clean: optee-os-clean-common
128
129################################################################################
130# DDR firmware
131################################################################################
132# This is prebuilt binaries by NXP, download them and use them. Update path if
133# it changes in the future.
134
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100135$(FIRMWARE_PATH)/$(FIRMWARE_BIN):
136 mkdir -p $(FIRMWARE_PATH)
137 (cd $(FIRMWARE_PATH) && wget $(FIRMWARE_BIN_URL))
Jens Wiklander16328062021-02-17 10:22:25 +0100138
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100139$(FIRMWARE_PATH)/.unpacked: $(FIRMWARE_PATH)/$(FIRMWARE_BIN)
140 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100141 echo $(FIRMWARE_BIN_SHA256_SUM) $(FIRMWARE_BIN) | sha256sum -c)
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100142 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100143 chmod 711 $(FIRMWARE_BIN) && ./$(FIRMWARE_BIN) --auto-accept)
144 touch $(FIRMWARE_PATH)/.unpacked
Fathi Boudrac043c1a2024-03-18 16:01:59 +0100145
Jens Wiklander16328062021-02-17 10:22:25 +0100146.PHONY: ddr-firmware
147ddr-firmware: $(FIRMWARE_PATH)/.unpacked
148
149ddr-firmware-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100150 rm -rf $(FIRMWARE_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +0100151
152################################################################################
153# imx-mkimage
154################################################################################
Fathi Boudrac043c1a2024-03-18 16:01:59 +0100155mkimage: u-boot
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100156 ln -sf $(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100157 $(MKIMAGE_SOC_PATH)/tee.bin
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100158 ln -sf $(TF_A_PATH)/build/$(TFA_PLATFORM)/release/bl31.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100159 $(MKIMAGE_SOC_PATH)/
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100160 ln -sf $(FIRMWARE_PATH)/$(FIRMWARE_VERSION)/firmware/ddr/synopsys/lpddr4_pmu_train_*.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100161 $(MKIMAGE_SOC_PATH)/
162 ln -sf $(UBOOT_PATH)/u-boot-nodtb.bin $(MKIMAGE_SOC_PATH)/
163 ln -sf $(UBOOT_PATH)/spl/u-boot-spl.bin $(MKIMAGE_SOC_PATH)/
Fathi Boudra4b750a82024-03-18 23:13:14 +0100164 ln -sf $(UBOOT_PATH)/arch/arm/dts/$(U_BOOT_DT) \
Fathi Boudra950763f2024-03-28 12:54:11 +0100165 $(MKIMAGE_SOC_PATH)/$(MKIMAGE_DT)
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100166 ln -sf $(UBOOT_PATH)/tools/mkimage $(MKIMAGE_SOC_PATH)/mkimage_uboot
167 $(MAKE) -C $(MKIMAGE_PATH) SOC=$(MKIMAGE_SOC) flash_spl_uboot
Jens Wiklander16328062021-02-17 10:22:25 +0100168#> +If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M
169#> +make SOC=iMX8M flash_spl_uboot or make SOC=iMX8M flash_hdmi_spl_uboot to
170#> +generate flash.bin.
171mkimage-clean:
172 cd $(MKIMAGE_PATH) && git clean -xdf
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100173 rm -f $(BUILD_PATH)/mkimage_imx8
Jens Wiklander16328062021-02-17 10:22:25 +0100174
175$(ROOT)/out-br/images/ramdisk.img: $(ROOT)/out-br/images/rootfs.cpio.gz
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100176 $(UBOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \
Jens Wiklander16328062021-02-17 10:22:25 +0100177 -d $< $@
178
179$(ROOT)/out:
180 mkdir -p $@
181
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100182$(ROOT)/out/boot.scr: $(BUILD_PATH)/imx/u-boot_boot_script | $(ROOT)/out
183 $(UBOOT_PATH)/tools/mkimage -T script -C none -n 'Boot script' \
Jens Wiklander16328062021-02-17 10:22:25 +0100184 -d $< $@
185
James Menetrey7223f452021-04-29 17:01:09 +0000186################################################################################
187# Flash images
188################################################################################
189USE_PERSISTENT_ROOTFS ?= 0
190
191# Configuration of the BOOT partition
192FLASH_PARTITIONS_BLOCK_SIZE = 512
193FLASH_PARTITION_BOOT_START_BLOCK = 16384
194FLASH_PARTITION_BOOT_SIZE_IN_BYTES = \
195 $(shell echo $$(( 64 * 1024 * 1024 )))
196FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS = \
197 $(shell echo $$(( $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
198FLASH_PARTITIONS_TABLE = "\
199 start=$(FLASH_PARTITION_BOOT_START_BLOCK) \
200 size=$(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) \
201 type=7\n"
202FLASH_IMAGE_SIZE = \
203 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) * $(FLASH_PARTITIONS_BLOCK_SIZE) \
204 + $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) )))
205
206# Configuration of the ROOTFS partition if enabled
207ifeq ($(USE_PERSISTENT_ROOTFS),1)
208FLASH_PARTITION_ROOTFS_IMAGE_PATH = $(ROOT)/out-br/images/rootfs.ext4
209FLASH_PARTITION_ROOTFS_START_BLOCK = \
210 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) + $(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) )))
211FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES = \
212 $(shell stat -L --printf="%s" $(FLASH_PARTITION_ROOTFS_IMAGE_PATH))
213FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS = \
214 $(shell echo $$(( $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
215FLASH_PARTITIONS_TABLE += "\
216 start=$(FLASH_PARTITION_ROOTFS_START_BLOCK) \
217 size=$(FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS) \
218 type=83\n"
219FLASH_IMAGE_SIZE := $(shell echo $$(( $(FLASH_IMAGE_SIZE) + $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) )))
220endif
221
Jens Wiklander16328062021-02-17 10:22:25 +0100222.PHONY: flash-image
Jens Wiklander426d74a2022-04-11 08:51:43 +0200223flash-image: buildroot mkimage linux
Jens Wiklander16328062021-02-17 10:22:25 +0100224 $(MAKE) flash-image-only
225
226.PHONY: flash-image-only
227flash-image-only: $(ROOT)/out-br/images/ramdisk.img $(ROOT)/out/boot.scr
228 rm -f $(BOOT_IMG)
James Menetrey7223f452021-04-29 17:01:09 +0000229 truncate -s $(FLASH_IMAGE_SIZE) $(BOOT_IMG)
230 echo -ne $(FLASH_PARTITIONS_TABLE) | sfdisk $(BOOT_IMG)
231 mformat -i $(BOOT_IMG).fat -n 64 -h 255 -T 131072 -v "BOOT IMG" -C ::
232 mcopy -i $(BOOT_IMG).fat $(LINUX_PATH)/arch/arm64/boot/Image ::
233 mcopy -i $(BOOT_IMG).fat \
Fathi Boudra4b750a82024-03-18 23:13:14 +0100234 $(LINUX_PATH)/arch/arm64/boot/dts/freescale/$(LINUX_DT) ::
James Menetrey7223f452021-04-29 17:01:09 +0000235 mcopy -i $(BOOT_IMG).fat $(ROOT)/out/boot.scr ::
236
237ifeq ($(USE_PERSISTENT_ROOTFS),1)
238 dd if=$(FLASH_PARTITION_ROOTFS_IMAGE_PATH) of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
239 seek=$(FLASH_PARTITION_ROOTFS_START_BLOCK) conv=fsync,notrunc
240else
241 mcopy -i $(BOOT_IMG).fat $(ROOT)/out-br/images/ramdisk.img ::
242endif
243
244 dd if=$(BOOT_IMG).fat of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
245 seek=$(FLASH_PARTITION_BOOT_START_BLOCK) conv=fsync,notrunc
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100246 dd if=$(MKIMAGE_SOC_PATH)/flash.bin of=$(BOOT_IMG) bs=1k seek=33 \
Jens Wiklander16328062021-02-17 10:22:25 +0100247 conv=fsync,notrunc