blob: aca5021a987db33a0a1f3ea5661de0abd096e341 [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 Boudraf2791652024-03-18 15:27:08 +010013
14BR2_TARGET_GENERIC_GETTY_PORT ?= ttymxc0
15BR2_TARGET_ROOTFS_EXT2 ?= y
16BR2_TARGET_ROOTFS_EXT2_4 ?= y
Jens Wiklander16328062021-02-17 10:22:25 +010017
18include common.mk
19
20################################################################################
21# Paths to git projects and various binaries
22################################################################################
Fathi Boudra7f988ae2024-03-18 15:57:29 +010023FIRMWARE_PATH ?= $(ROOT)/out-firmware
Fathi Boudra078bfb62024-03-18 15:34:53 +010024MKIMAGE_PATH ?= $(ROOT)/imx-mkimage
Jens Wiklander16328062021-02-17 10:22:25 +010025TF_A_PATH ?= $(ROOT)/trusted-firmware-a
Jens Wiklander16328062021-02-17 10:22:25 +010026
Jens Wiklander16328062021-02-17 10:22:25 +010027FIRMWARE_VERSION ?= firmware-imx-8.0
Fathi Boudradd144c32024-03-18 15:33:42 +010028FIRMWARE_BIN_SHA256_SUM ?= 63ec62f5d229cbed00918c8449173933f1c9d594c59396b8dd217e94f47138b0
29FIRMWARE_BIN ?= $(FIRMWARE_VERSION).bin
30FIRMWARE_BIN_URL ?= https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/$(FIRMWARE_BIN)
Jens Wiklander16328062021-02-17 10:22:25 +010031
Jens Wiklander16328062021-02-17 10:22:25 +010032BOOT_IMG ?= $(ROOT)/out/boot.img
33
34################################################################################
35# Targets
36################################################################################
37all: tfa u-boot linux optee-os buildroot flash-image
38clean: tfa-clean buildroot-clean u-boot-clean optee-os-clean
39
40include toolchain.mk
41
42################################################################################
43# ARM Trusted Firmware
44################################################################################
45TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
46
47# BL32=$(OPTEE_OS_HEADER_V2_BIN) \
48# BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \
49# BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \
50
Fathi Boudraa0264972024-03-18 15:25:23 +010051TF_A_FLAGS = PLAT=$(TFA_PLATFORM) SPD=opteed DEBUG_CONSOLE=1 DEBUG=0 V=1
Fathi Boudra7f988ae2024-03-18 15:57:29 +010052TF_A_FLAGS += BL32=$(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin
Jens Wiklander16328062021-02-17 10:22:25 +010053
Fathi Boudra56a167a2024-03-18 15:36:04 +010054tfa: optee-os
Jens Wiklander16328062021-02-17 10:22:25 +010055 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip
56
57tfa-clean:
58 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
59
60################################################################################
61# U-Boot
62################################################################################
63
64U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
65
Fathi Boudra7f988ae2024-03-18 15:57:29 +010066U-BOOT_DEFCONFIG_FILES := $(UBOOT_PATH)/configs/imx8mq_evk_defconfig \
Jens Wiklander16328062021-02-17 10:22:25 +010067 $(BUILD_PATH)/kconfigs/uboot_imx8.conf
68
Fathi Boudra7f988ae2024-03-18 15:57:29 +010069$(UBOOT_PATH)/.config: $(U-BOOT_DEFCONFIG_FILES)
70 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) imx8mq_evk_defconfig
71 (cd $(UBOOT_PATH) && ARCH=arm64 scripts/kconfig/merge_config.sh \
Fathi Boudra3db30882024-03-18 15:39:22 +010072 $(U-BOOT_DEFCONFIG_FILES))
Jens Wiklander16328062021-02-17 10:22:25 +010073
74.PHONY: u-boot-defconfig
Fathi Boudra7f988ae2024-03-18 15:57:29 +010075u-boot-defconfig: $(UBOOT_PATH)/.config
Jens Wiklander16328062021-02-17 10:22:25 +010076
77.PHONY: u-boot
78u-boot: u-boot-defconfig
Fathi Boudra7f988ae2024-03-18 15:57:29 +010079 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +010080
81.PHONY: u-boot-clean
82u-boot-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +010083 cd $(UBOOT_PATH) && git clean -xdf
Jens Wiklander16328062021-02-17 10:22:25 +010084
85.PHONY: u-boot-cscope
86u-boot-cscope:
Fathi Boudra7f988ae2024-03-18 15:57:29 +010087 $(U-BOOT_EXPORTS) $(MAKE) -C $(UBOOT_PATH) cscope
Jens Wiklander16328062021-02-17 10:22:25 +010088
89
90################################################################################
91# Linux kernel
92################################################################################
93LINUX_DEFCONFIG_COMMON_ARCH := arm64
94LINUX_DEFCONFIG_COMMON_FILES := \
95 $(LINUX_PATH)/arch/arm64/configs/defconfig \
96 $(CURDIR)/kconfigs/imx.conf
97
98linux-defconfig: $(LINUX_PATH)/.config
99
100LINUX_COMMON_FLAGS += ARCH=arm64
101
102linux: linux-common
103
104linux-defconfig-clean: linux-defconfig-clean-common
105
106LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
107
108linux-clean: linux-clean-common
109
110LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
111
112linux-cleaner: linux-cleaner-common
113
114################################################################################
115# OP-TEE
116################################################################################
117optee-os: optee-os-common
118optee-os-clean: optee-os-clean-common
119
120################################################################################
121# DDR firmware
122################################################################################
123# This is prebuilt binaries by NXP, download them and use them. Update path if
124# it changes in the future.
125
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100126$(FIRMWARE_PATH)/$(FIRMWARE_BIN):
127 mkdir -p $(FIRMWARE_PATH)
128 (cd $(FIRMWARE_PATH) && wget $(FIRMWARE_BIN_URL))
Jens Wiklander16328062021-02-17 10:22:25 +0100129
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100130$(FIRMWARE_PATH)/.unpacked: $(FIRMWARE_PATH)/$(FIRMWARE_BIN)
131 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100132 echo $(FIRMWARE_BIN_SHA256_SUM) $(FIRMWARE_BIN) | sha256sum -c)
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100133 (cd $(FIRMWARE_PATH) && \
Jens Wiklander16328062021-02-17 10:22:25 +0100134 chmod 711 $(FIRMWARE_BIN) && ./$(FIRMWARE_BIN) --auto-accept)
135 touch $(FIRMWARE_PATH)/.unpacked
136
137.PHONY: ddr-firmware
138ddr-firmware: $(FIRMWARE_PATH)/.unpacked
139
140ddr-firmware-clean:
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100141 rm -rf $(FIRMWARE_PATH)
Jens Wiklander16328062021-02-17 10:22:25 +0100142
143################################################################################
144# imx-mkimage
145################################################################################
146mkimage: u-boot tfa ddr-firmware
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100147 ln -sf $(OPTEE_OS_PATH)/out/arm/core/tee-raw.bin \
Jens Wiklander16328062021-02-17 10:22:25 +0100148 $(MKIMAGE_PATH)/iMX8M/tee.bin
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100149 ln -sf $(TF_A_PATH)/build/$(TFA_PLATFORM)/release/bl31.bin \
Jens Wiklander16328062021-02-17 10:22:25 +0100150 $(MKIMAGE_PATH)/iMX8M/
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100151 ln -sf $(FIRMWARE_PATH)/$(FIRMWARE_VERSION)/firmware/ddr/synopsys/lpddr4_pmu_train_*.bin \
152 $(MKIMAGE_PATH)/iMX8M/
153 ln -sf $(UBOOT_PATH)/u-boot-nodtb.bin $(MKIMAGE_PATH)/iMX8M/
154 ln -sf $(UBOOT_PATH)/spl/u-boot-spl.bin $(MKIMAGE_PATH)/iMX8M/
155 ln -sf $(UBOOT_PATH)/arch/arm/dts/imx8mq-evk.dtb \
Jens Wiklander16328062021-02-17 10:22:25 +0100156 $(MKIMAGE_PATH)/iMX8M/fsl-imx8mq-evk.dtb
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100157 ln -sf $(UBOOT_PATH)/tools/mkimage $(MKIMAGE_PATH)/iMX8M/mkimage_uboot
Jens Wiklander16328062021-02-17 10:22:25 +0100158 $(MAKE) -C $(MKIMAGE_PATH) SOC=iMX8M flash_spl_uboot
159#> +If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M
160#> +make SOC=iMX8M flash_spl_uboot or make SOC=iMX8M flash_hdmi_spl_uboot to
161#> +generate flash.bin.
162mkimage-clean:
163 cd $(MKIMAGE_PATH) && git clean -xdf
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100164 rm -f $(BUILD_PATH)/mkimage_imx8
Jens Wiklander16328062021-02-17 10:22:25 +0100165
166$(ROOT)/out-br/images/ramdisk.img: $(ROOT)/out-br/images/rootfs.cpio.gz
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100167 $(UBOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \
Jens Wiklander16328062021-02-17 10:22:25 +0100168 -d $< $@
169
170$(ROOT)/out:
171 mkdir -p $@
172
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100173$(ROOT)/out/boot.scr: $(BUILD_PATH)/imx/u-boot_boot_script | $(ROOT)/out
174 $(UBOOT_PATH)/tools/mkimage -T script -C none -n 'Boot script' \
Jens Wiklander16328062021-02-17 10:22:25 +0100175 -d $< $@
176
James Menetrey7223f452021-04-29 17:01:09 +0000177################################################################################
178# Flash images
179################################################################################
180USE_PERSISTENT_ROOTFS ?= 0
181
182# Configuration of the BOOT partition
183FLASH_PARTITIONS_BLOCK_SIZE = 512
184FLASH_PARTITION_BOOT_START_BLOCK = 16384
185FLASH_PARTITION_BOOT_SIZE_IN_BYTES = \
186 $(shell echo $$(( 64 * 1024 * 1024 )))
187FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS = \
188 $(shell echo $$(( $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
189FLASH_PARTITIONS_TABLE = "\
190 start=$(FLASH_PARTITION_BOOT_START_BLOCK) \
191 size=$(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) \
192 type=7\n"
193FLASH_IMAGE_SIZE = \
194 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) * $(FLASH_PARTITIONS_BLOCK_SIZE) \
195 + $(FLASH_PARTITION_BOOT_SIZE_IN_BYTES) )))
196
197# Configuration of the ROOTFS partition if enabled
198ifeq ($(USE_PERSISTENT_ROOTFS),1)
199FLASH_PARTITION_ROOTFS_IMAGE_PATH = $(ROOT)/out-br/images/rootfs.ext4
200FLASH_PARTITION_ROOTFS_START_BLOCK = \
201 $(shell echo $$(( $(FLASH_PARTITION_BOOT_START_BLOCK) + $(FLASH_PARTITION_BOOT_SIZE_IN_BLOCKS) )))
202FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES = \
203 $(shell stat -L --printf="%s" $(FLASH_PARTITION_ROOTFS_IMAGE_PATH))
204FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS = \
205 $(shell echo $$(( $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) / $(FLASH_PARTITIONS_BLOCK_SIZE) )))
206FLASH_PARTITIONS_TABLE += "\
207 start=$(FLASH_PARTITION_ROOTFS_START_BLOCK) \
208 size=$(FLASH_PARTITION_ROOTFS_SIZE_IN_BLOCKS) \
209 type=83\n"
210FLASH_IMAGE_SIZE := $(shell echo $$(( $(FLASH_IMAGE_SIZE) + $(FLASH_PARTITION_ROOTFS_SIZE_IN_BYTES) )))
211endif
212
Jens Wiklander16328062021-02-17 10:22:25 +0100213.PHONY: flash-image
Jens Wiklander426d74a2022-04-11 08:51:43 +0200214flash-image: buildroot mkimage linux
Jens Wiklander16328062021-02-17 10:22:25 +0100215 $(MAKE) flash-image-only
216
217.PHONY: flash-image-only
218flash-image-only: $(ROOT)/out-br/images/ramdisk.img $(ROOT)/out/boot.scr
219 rm -f $(BOOT_IMG)
James Menetrey7223f452021-04-29 17:01:09 +0000220 truncate -s $(FLASH_IMAGE_SIZE) $(BOOT_IMG)
221 echo -ne $(FLASH_PARTITIONS_TABLE) | sfdisk $(BOOT_IMG)
222 mformat -i $(BOOT_IMG).fat -n 64 -h 255 -T 131072 -v "BOOT IMG" -C ::
223 mcopy -i $(BOOT_IMG).fat $(LINUX_PATH)/arch/arm64/boot/Image ::
224 mcopy -i $(BOOT_IMG).fat \
Jens Wiklander16328062021-02-17 10:22:25 +0100225 $(LINUX_PATH)/arch/arm64/boot/dts/freescale/imx8mq-evk.dtb ::
James Menetrey7223f452021-04-29 17:01:09 +0000226 mcopy -i $(BOOT_IMG).fat $(ROOT)/out/boot.scr ::
227
228ifeq ($(USE_PERSISTENT_ROOTFS),1)
229 dd if=$(FLASH_PARTITION_ROOTFS_IMAGE_PATH) of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
230 seek=$(FLASH_PARTITION_ROOTFS_START_BLOCK) conv=fsync,notrunc
231else
232 mcopy -i $(BOOT_IMG).fat $(ROOT)/out-br/images/ramdisk.img ::
233endif
234
235 dd if=$(BOOT_IMG).fat of=$(BOOT_IMG) bs=$(FLASH_PARTITIONS_BLOCK_SIZE) \
236 seek=$(FLASH_PARTITION_BOOT_START_BLOCK) conv=fsync,notrunc
Fathi Boudra7f988ae2024-03-18 15:57:29 +0100237 dd if=$(MKIMAGE_PATH)/iMX8M/flash.bin of=$(BOOT_IMG) bs=1k seek=33 \
Jens Wiklander16328062021-02-17 10:22:25 +0100238 conv=fsync,notrunc