blob: 0ef757181481f931727489c18d41af848435e57d [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 Boudra02779a42024-03-28 13:02:39 +010028ifeq ($(DEBUG),1)
29TF_A_BUILD ?= debug
30else
31TF_A_BUILD ?= release
32endif
33
Fathi Boudra7f988ae2024-03-18 15:57:29 +010034FIRMWARE_PATH ?= $(ROOT)/out-firmware
Fathi Boudra078bfb62024-03-18 15:34:53 +010035MKIMAGE_PATH ?= $(ROOT)/imx-mkimage
Fathi Boudrae22c16e2024-03-19 00:55:05 +010036MKIMAGE_SOC_PATH ?= $(MKIMAGE_PATH)/iMX8M
Jens Wiklander16328062021-02-17 10:22:25 +010037TF_A_PATH ?= $(ROOT)/trusted-firmware-a
Jens Wiklander16328062021-02-17 10:22:25 +010038
Jens Wiklander16328062021-02-17 10:22:25 +010039FIRMWARE_VERSION ?= firmware-imx-8.0
Fathi Boudradd144c32024-03-18 15:33:42 +010040FIRMWARE_BIN_SHA256_SUM ?= 63ec62f5d229cbed00918c8449173933f1c9d594c59396b8dd217e94f47138b0
41FIRMWARE_BIN ?= $(FIRMWARE_VERSION).bin
42FIRMWARE_BIN_URL ?= https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/$(FIRMWARE_BIN)
Jens Wiklander16328062021-02-17 10:22:25 +010043
Jens Wiklander16328062021-02-17 10:22:25 +010044BOOT_IMG ?= $(ROOT)/out/boot.img
45
46################################################################################
47# Targets
48################################################################################
49all: tfa u-boot linux optee-os buildroot flash-image
Fathi Boudrae628ce22024-03-18 23:51:54 +010050clean: ddr-firmware-clean optee-os-clean tfa-clean u-boot-clean buildroot-clean
Jens Wiklander16328062021-02-17 10:22:25 +010051
52include toolchain.mk
53
54################################################################################
55# ARM Trusted Firmware
56################################################################################
57TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
58
59# BL32=$(OPTEE_OS_HEADER_V2_BIN) \
60# BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \
61# BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \
62
Fathi Boudra75a68962024-03-28 12:58:17 +010063TF_A_FLAGS += PLAT=$(TFA_PLATFORM) SPD=opteed DEBUG_CONSOLE=1 DEBUG=0 V=1
Fathi Boudra7f988ae2024-03-18 15:57:29 +010064TF_A_FLAGS += BL32=$(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin
Jens Wiklander16328062021-02-17 10:22:25 +010065
Fathi Boudra56a167a2024-03-18 15:36:04 +010066tfa: optee-os
Jens Wiklander16328062021-02-17 10:22:25 +010067 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
68
69tfa-clean:
70 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
71
72################################################################################
73# U-Boot
74################################################################################
75
76U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
77
Fathi Boudra4b750a82024-03-18 23:13:14 +010078U-BOOT_DEFCONFIG_FILES := $(UBOOT_PATH)/configs/$(U_BOOT_DEFCONFIG) \
Jens Wiklander16328062021-02-17 10:22:25 +010079 $(BUILD_PATH)/kconfigs/uboot_imx8.conf
80
Fathi Boudra7f988ae2024-03-18 15:57:29 +010081$(UBOOT_PATH)/.config: $(U-BOOT_DEFCONFIG_FILES)
Fathi Boudra4b750a82024-03-18 23:13:14 +010082 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) $(U_BOOT_DEFCONFIG)
Fathi Boudra7f988ae2024-03-18 15:57:29 +010083 (cd $(UBOOT_PATH) && ARCH=arm64 scripts/kconfig/merge_config.sh \
Fathi Boudra3db30882024-03-18 15:39:22 +010084 $(U-BOOT_DEFCONFIG_FILES))
Jens Wiklander16328062021-02-17 10:22:25 +010085
86.PHONY: u-boot-defconfig
Fathi Boudra7f988ae2024-03-18 15:57:29 +010087u-boot-defconfig: $(UBOOT_PATH)/.config
Jens Wiklander16328062021-02-17 10:22:25 +010088
89.PHONY: u-boot
Fathi Boudrac043c1a2024-03-18 16:01:59 +010090u-boot: u-boot-defconfig tfa ddr-firmware
Fathi Boudra02779a42024-03-28 13:02:39 +010091 # Copy DDR4 firmware
Fathi Boudrac043c1a2024-03-18 16:01:59 +010092 cp $(FIRMWARE_PATH)/$(FIRMWARE_VERSION)/firmware/ddr/synopsys/lpddr4_pmu_train_*.bin \
Fathi Boudrac043c1a2024-03-18 16:01:59 +010093 $(UBOOT_PATH)
Fathi Boudra02779a42024-03-28 13:02:39 +010094 # Copy BL31 binary from TF-A
95 cp $(TF_A_PATH)/build/$(TFA_PLATFORM)/$(TF_A_BUILD)/bl31.bin $(UBOOT_PATH)
Fathi Boudra7f988ae2024-03-18 15:57:29 +010096 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +010097
98.PHONY: u-boot-clean
99u-boot-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100100 cd $(UBOOT_PATH) && git clean -xdf
Jens Wiklander16328062021-02-17 10:22:25 +0100101
102.PHONY: u-boot-cscope
103u-boot-cscope:
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100104 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) cscope
Jens Wiklander16328062021-02-17 10:22:25 +0100105
106
107################################################################################
108# Linux kernel
109################################################################################
110LINUX_DEFCONFIG_COMMON_ARCH := arm64
111LINUX_DEFCONFIG_COMMON_FILES := \
112 $(LINUX_PATH)/arch/arm64/configs/defconfig \
113 $(CURDIR)/kconfigs/imx.conf
114
115linux-defconfig: $(LINUX_PATH)/.config
116
117LINUX_COMMON_FLAGS += ARCH=arm64
118
119linux: linux-common
120
121linux-defconfig-clean: linux-defconfig-clean-common
122
123LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
124
125linux-clean: linux-clean-common
126
127LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
128
129linux-cleaner: linux-cleaner-common
130
131################################################################################
132# OP-TEE
133################################################################################
134optee-os: optee-os-common
135optee-os-clean: optee-os-clean-common
136
137################################################################################
138# DDR firmware
139################################################################################
140# This is prebuilt binaries by NXP, download them and use them. Update path if
141# it changes in the future.
142
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100143$(FIRMWARE_PATH)/$(FIRMWARE_BIN):
144 mkdir -p $(FIRMWARE_PATH)
145 (cd $(FIRMWARE_PATH) && wget $(FIRMWARE_BIN_URL))
Jens Wiklander16328062021-02-17 10:22:25 +0100146
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100147$(FIRMWARE_PATH)/.unpacked: $(FIRMWARE_PATH)/$(FIRMWARE_BIN)
148 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100149 echo $(FIRMWARE_BIN_SHA256_SUM) $(FIRMWARE_BIN) | sha256sum -c)
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100150 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100151 chmod 711 $(FIRMWARE_BIN) && ./$(FIRMWARE_BIN) --auto-accept)
152 touch $(FIRMWARE_PATH)/.unpacked
Fathi Boudrac043c1a2024-03-18 16:01:59 +0100153
Jens Wiklander16328062021-02-17 10:22:25 +0100154.PHONY: ddr-firmware
155ddr-firmware: $(FIRMWARE_PATH)/.unpacked
156
157ddr-firmware-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100158 rm -rf $(FIRMWARE_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +0100159
160################################################################################
161# imx-mkimage
162################################################################################
Fathi Boudrac043c1a2024-03-18 16:01:59 +0100163mkimage: u-boot
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100164 ln -sf $(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100165 $(MKIMAGE_SOC_PATH)/tee.bin
Fathi Boudra02779a42024-03-28 13:02:39 +0100166 ln -sf $(TF_A_PATH)/build/$(TFA_PLATFORM)/$(TF_A_BUILD)/bl31.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100167 $(MKIMAGE_SOC_PATH)/
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100168 ln -sf $(FIRMWARE_PATH)/$(FIRMWARE_VERSION)/firmware/ddr/synopsys/lpddr4_pmu_train_*.bin \
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100169 $(MKIMAGE_SOC_PATH)/
170 ln -sf $(UBOOT_PATH)/u-boot-nodtb.bin $(MKIMAGE_SOC_PATH)/
171 ln -sf $(UBOOT_PATH)/spl/u-boot-spl.bin $(MKIMAGE_SOC_PATH)/
Fathi Boudra4b750a82024-03-18 23:13:14 +0100172 ln -sf $(UBOOT_PATH)/arch/arm/dts/$(U_BOOT_DT) \
Fathi Boudra950763f2024-03-28 12:54:11 +0100173 $(MKIMAGE_SOC_PATH)/$(MKIMAGE_DT)
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100174 ln -sf $(UBOOT_PATH)/tools/mkimage $(MKIMAGE_SOC_PATH)/mkimage_uboot
175 $(MAKE) -C $(MKIMAGE_PATH) SOC=$(MKIMAGE_SOC) flash_spl_uboot
Jens Wiklander16328062021-02-17 10:22:25 +0100176#> +If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M
177#> +make SOC=iMX8M flash_spl_uboot or make SOC=iMX8M flash_hdmi_spl_uboot to
178#> +generate flash.bin.
179mkimage-clean:
180 cd $(MKIMAGE_PATH) && git clean -xdf
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100181 rm -f $(BUILD_PATH)/mkimage_imx8
Jens Wiklander16328062021-02-17 10:22:25 +0100182
183$(ROOT)/out-br/images/ramdisk.img: $(ROOT)/out-br/images/rootfs.cpio.gz
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100184 $(UBOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \
Jens Wiklander16328062021-02-17 10:22:25 +0100185 -d $< $@
186
187$(ROOT)/out:
188 mkdir -p $@
189
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100190$(ROOT)/out/boot.scr: $(BUILD_PATH)/imx/u-boot_boot_script | $(ROOT)/out
191 $(UBOOT_PATH)/tools/mkimage -T script -C none -n 'Boot script' \
Jens Wiklander16328062021-02-17 10:22:25 +0100192 -d $< $@
193
James Menetrey7223f452021-04-29 17:01:09 +0000194################################################################################
195# Flash images
196################################################################################
197USE_PERSISTENT_ROOTFS ?= 0
198
199# Configuration of the BOOT partition
200FLASH_PARTITIONS_BLOCK_SIZE = 512
201FLASH_PARTITION_BOOT_START_BLOCK = 16384
202FLASH_PARTITION_BOOT_SIZE_IN_BYTES = \
203 $(shell echo $$(( 64 * 1024 * 1024 )))
204FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS = \
205 $(shell echo $$(( $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
206FLASH_PARTITIONS_TABLE = "\
207 start=$(FLASH_PARTITION_BOOT_START_BLOCK) \
208 size=$(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) \
209 type=7\n"
210FLASH_IMAGE_SIZE = \
211 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) * $(FLASH_PARTITIONS_BLOCK_SIZE) \
212 + $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) )))
213
214# Configuration of the ROOTFS partition if enabled
215ifeq ($(USE_PERSISTENT_ROOTFS),1)
216FLASH_PARTITION_ROOTFS_IMAGE_PATH = $(ROOT)/out-br/images/rootfs.ext4
217FLASH_PARTITION_ROOTFS_START_BLOCK = \
218 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) + $(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) )))
219FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES = \
220 $(shell stat -L --printf="%s" $(FLASH_PARTITION_ROOTFS_IMAGE_PATH))
221FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS = \
222 $(shell echo $$(( $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
223FLASH_PARTITIONS_TABLE += "\
224 start=$(FLASH_PARTITION_ROOTFS_START_BLOCK) \
225 size=$(FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS) \
226 type=83\n"
227FLASH_IMAGE_SIZE := $(shell echo $$(( $(FLASH_IMAGE_SIZE) + $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) )))
228endif
229
Jens Wiklander16328062021-02-17 10:22:25 +0100230.PHONY: flash-image
Jens Wiklander426d74a2022-04-11 08:51:43 +0200231flash-image: buildroot mkimage linux
Jens Wiklander16328062021-02-17 10:22:25 +0100232 $(MAKE) flash-image-only
233
234.PHONY: flash-image-only
235flash-image-only: $(ROOT)/out-br/images/ramdisk.img $(ROOT)/out/boot.scr
236 rm -f $(BOOT_IMG)
James Menetrey7223f452021-04-29 17:01:09 +0000237 truncate -s $(FLASH_IMAGE_SIZE) $(BOOT_IMG)
238 echo -ne $(FLASH_PARTITIONS_TABLE) | sfdisk $(BOOT_IMG)
239 mformat -i $(BOOT_IMG).fat -n 64 -h 255 -T 131072 -v "BOOT IMG" -C ::
240 mcopy -i $(BOOT_IMG).fat $(LINUX_PATH)/arch/arm64/boot/Image ::
241 mcopy -i $(BOOT_IMG).fat \
Fathi Boudra4b750a82024-03-18 23:13:14 +0100242 $(LINUX_PATH)/arch/arm64/boot/dts/freescale/$(LINUX_DT) ::
James Menetrey7223f452021-04-29 17:01:09 +0000243 mcopy -i $(BOOT_IMG).fat $(ROOT)/out/boot.scr ::
244
245ifeq ($(USE_PERSISTENT_ROOTFS),1)
246 dd if=$(FLASH_PARTITION_ROOTFS_IMAGE_PATH) of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
247 seek=$(FLASH_PARTITION_ROOTFS_START_BLOCK) conv=fsync,notrunc
248else
249 mcopy -i $(BOOT_IMG).fat $(ROOT)/out-br/images/ramdisk.img ::
250endif
251
252 dd if=$(BOOT_IMG).fat of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
253 seek=$(FLASH_PARTITION_BOOT_START_BLOCK) conv=fsync,notrunc
Fathi Boudrae22c16e2024-03-19 00:55:05 +0100254 dd if=$(MKIMAGE_SOC_PATH)/flash.bin of=$(BOOT_IMG) bs=1k seek=33 \
Jens Wiklander16328062021-02-17 10:22:25 +0100255 conv=fsync,notrunc