Jens Wiklander | 1632806 | 2021-02-17 10:22:25 +0100 | [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 | |
| 11 | OPTEE_OS_PLATFORM = imx-mx8mqevk |
| 12 | BR2_TARGET_GENERIC_GETTY_PORT = ttymxc0 |
| 13 | |
| 14 | include common.mk |
| 15 | |
| 16 | ################################################################################ |
| 17 | # Paths to git projects and various binaries |
| 18 | ################################################################################ |
| 19 | TF_A_PATH ?= $(ROOT)/trusted-firmware-a |
| 20 | |
| 21 | U-BOOT_PATH ?= $(ROOT)/u-boot |
| 22 | U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin |
| 23 | |
| 24 | FIRMWARE_BIN_SHA256_SUM ?= 63ec62f5d229cbed00918c8449173933f1c9d594c59396b8dd217e94f47138b0 |
| 25 | FIRMWARE_BIN ?= firmware-imx-8.0.bin |
| 26 | FIRMWARE_BIN ?= firmware-imx-8.0.bin |
| 27 | FIRMWARE_BIN_URL ?= https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/$(FIRMWARE_BIN) |
| 28 | FIRMWARE_VERSION ?= firmware-imx-8.0 |
| 29 | FIRMWARE_PATH ?= $(ROOT)/out-firmware/$(FIRMWARE_VERSION) |
| 30 | LPDDR_BIN_PATH ?= $(FIRMWARE_PATH)/firmware/ddr/synopsys |
| 31 | |
| 32 | MKIMAGE_PATH ?= $(ROOT)/imx-mkimage |
| 33 | BOOT_IMG ?= $(ROOT)/out/boot.img |
| 34 | |
| 35 | ################################################################################ |
| 36 | # Targets |
| 37 | ################################################################################ |
| 38 | all: tfa u-boot linux optee-os buildroot flash-image |
| 39 | clean: tfa-clean buildroot-clean u-boot-clean optee-os-clean |
| 40 | |
| 41 | include toolchain.mk |
| 42 | |
| 43 | ################################################################################ |
| 44 | # ARM Trusted Firmware |
| 45 | ################################################################################ |
| 46 | TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" |
| 47 | |
| 48 | # BL32=$(OPTEE_OS_HEADER_V2_BIN) \ |
| 49 | # BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \ |
| 50 | # BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \ |
| 51 | |
| 52 | TF_A_FLAGS = PLAT=imx8mq SPD=opteed DEBUG_CONSOLE=1 DEBUG=0 V=1 |
| 53 | TF_A_FLAGS += BL32=$(ROOT)/optee_os/out/arm/core/tee-raw.bin |
| 54 | |
| 55 | tfa: optee-os u-boot |
| 56 | $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) all fip |
| 57 | |
| 58 | tfa-clean: |
| 59 | $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean |
| 60 | |
| 61 | ################################################################################ |
| 62 | # U-Boot |
| 63 | ################################################################################ |
| 64 | |
| 65 | U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" |
| 66 | |
| 67 | U-BOOT_DEFCONFIG_FILES := $(U-BOOT_PATH)/configs/imx8mq_evk_defconfig \ |
| 68 | $(BUILD_PATH)/kconfigs/uboot_imx8.conf |
| 69 | |
| 70 | $(U-BOOT_PATH)/.config: $(U-BOOT_DEFCONFIG_FILES) |
| 71 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) imx8mq_evk_defconfig |
| 72 | (cd $(U-BOOT_PATH) && \ |
| 73 | ARCH=arm64 \ |
| 74 | scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_FILES)) |
| 75 | |
| 76 | .PHONY: u-boot-defconfig |
| 77 | u-boot-defconfig: $(U-BOOT_PATH)/.config |
| 78 | |
| 79 | .PHONY: u-boot |
| 80 | u-boot: u-boot-defconfig |
| 81 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) |
| 82 | |
| 83 | .PHONY: u-boot-clean |
| 84 | u-boot-clean: |
| 85 | cd $(U-BOOT_PATH) && git clean -xdf |
| 86 | |
| 87 | .PHONY: u-boot-cscope |
| 88 | u-boot-cscope: |
| 89 | $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) cscope |
| 90 | |
| 91 | |
| 92 | ################################################################################ |
| 93 | # Linux kernel |
| 94 | ################################################################################ |
| 95 | LINUX_DEFCONFIG_COMMON_ARCH := arm64 |
| 96 | LINUX_DEFCONFIG_COMMON_FILES := \ |
| 97 | $(LINUX_PATH)/arch/arm64/configs/defconfig \ |
| 98 | $(CURDIR)/kconfigs/imx.conf |
| 99 | |
| 100 | linux-defconfig: $(LINUX_PATH)/.config |
| 101 | |
| 102 | LINUX_COMMON_FLAGS += ARCH=arm64 |
| 103 | |
| 104 | linux: linux-common |
| 105 | |
| 106 | linux-defconfig-clean: linux-defconfig-clean-common |
| 107 | |
| 108 | LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64 |
| 109 | |
| 110 | linux-clean: linux-clean-common |
| 111 | |
| 112 | LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64 |
| 113 | |
| 114 | linux-cleaner: linux-cleaner-common |
| 115 | |
| 116 | ################################################################################ |
| 117 | # OP-TEE |
| 118 | ################################################################################ |
| 119 | optee-os: optee-os-common |
| 120 | optee-os-clean: optee-os-clean-common |
| 121 | |
| 122 | ################################################################################ |
| 123 | # DDR firmware |
| 124 | ################################################################################ |
| 125 | # This is prebuilt binaries by NXP, download them and use them. Update path if |
| 126 | # it changes in the future. |
| 127 | |
| 128 | $(ROOT)/out-firmware/$(FIRMWARE_BIN): |
| 129 | mkdir -p $(ROOT)/out-firmware |
| 130 | (cd $(ROOT)/out-firmware && wget $(FIRMWARE_BIN_URL)) |
| 131 | |
| 132 | $(FIRMWARE_PATH)/.unpacked: $(ROOT)/out-firmware/$(FIRMWARE_BIN) |
| 133 | (cd $(ROOT)/out-firmware && \ |
| 134 | echo $(FIRMWARE_BIN_SHA256_SUM) $(FIRMWARE_BIN) | sha256sum -c) |
| 135 | (cd $(ROOT)/out-firmware && \ |
| 136 | chmod 711 $(FIRMWARE_BIN) && ./$(FIRMWARE_BIN) --auto-accept) |
| 137 | touch $(FIRMWARE_PATH)/.unpacked |
| 138 | |
| 139 | .PHONY: ddr-firmware |
| 140 | ddr-firmware: $(FIRMWARE_PATH)/.unpacked |
| 141 | |
| 142 | ddr-firmware-clean: |
| 143 | rm -rf $(ROOT)/out-firmware |
| 144 | |
| 145 | ################################################################################ |
| 146 | # imx-mkimage |
| 147 | ################################################################################ |
| 148 | mkimage: u-boot tfa ddr-firmware |
| 149 | ln -sf $(ROOT)/optee_os/out/arm/core/tee-raw.bin \ |
| 150 | $(MKIMAGE_PATH)/iMX8M/tee.bin |
| 151 | ln -sf $(ROOT)/trusted-firmware-a/build/imx8mq/release/bl31.bin \ |
| 152 | $(MKIMAGE_PATH)/iMX8M/ |
| 153 | ln -sf $(LPDDR_BIN_PATH)/lpddr4_pmu_train_*.bin $(MKIMAGE_PATH)/iMX8M/ |
| 154 | ln -sf $(U-BOOT_PATH)/u-boot-nodtb.bin $(MKIMAGE_PATH)/iMX8M/ |
| 155 | ln -sf $(U-BOOT_PATH)/spl/u-boot-spl.bin $(MKIMAGE_PATH)/iMX8M/ |
| 156 | ln -sf $(U-BOOT_PATH)/arch/arm/dts/imx8mq-evk.dtb \ |
| 157 | $(MKIMAGE_PATH)/iMX8M/fsl-imx8mq-evk.dtb |
| 158 | ln -sf $(U-BOOT_PATH)/tools/mkimage $(MKIMAGE_PATH)/iMX8M/mkimage_uboot |
| 159 | $(MAKE) -C $(MKIMAGE_PATH) SOC=iMX8M flash_spl_uboot |
| 160 | #> +If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M |
| 161 | #> +make SOC=iMX8M flash_spl_uboot or make SOC=iMX8M flash_hdmi_spl_uboot to |
| 162 | #> +generate flash.bin. |
| 163 | mkimage-clean: |
| 164 | cd $(MKIMAGE_PATH) && git clean -xdf |
| 165 | rm -f $(ROOT)/build/mkimage_imx8 |
| 166 | |
| 167 | $(ROOT)/out-br/images/ramdisk.img: $(ROOT)/out-br/images/rootfs.cpio.gz |
| 168 | $(U-BOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \ |
| 169 | -d $< $@ |
| 170 | |
| 171 | $(ROOT)/out: |
| 172 | mkdir -p $@ |
| 173 | |
| 174 | $(ROOT)/out/boot.scr: $(ROOT)/build/imx/u-boot_boot_script | $(ROOT)/out |
| 175 | $(U-BOOT_PATH)/tools/mkimage -T script -C none -n 'Boot script' \ |
| 176 | -d $< $@ |
| 177 | |
| 178 | .PHONY: flash-image |
| 179 | flash-image: buildroot mkimage |
| 180 | $(MAKE) flash-image-only |
| 181 | |
| 182 | .PHONY: flash-image-only |
| 183 | flash-image-only: $(ROOT)/out-br/images/ramdisk.img $(ROOT)/out/boot.scr |
| 184 | rm -f $(BOOT_IMG) |
| 185 | truncate -s 128M ${BOOT_IMG} |
| 186 | echo -ne "16384 64M 7\n147456 + 83\n" | sfdisk ${BOOT_IMG} |
| 187 | mformat -i ${BOOT_IMG}.fat -n 64 -h 255 -T 131072 -v "BOOT IMG" -C :: |
| 188 | mcopy -i ${BOOT_IMG}.fat $(LINUX_PATH)/arch/arm64/boot/Image :: |
| 189 | mcopy -i ${BOOT_IMG}.fat \ |
| 190 | $(LINUX_PATH)/arch/arm64/boot/dts/freescale/imx8mq-evk.dtb :: |
| 191 | mcopy -i ${BOOT_IMG}.fat $(ROOT)/out-br/images/ramdisk.img :: |
| 192 | mcopy -i ${BOOT_IMG}.fat $(ROOT)/out/boot.scr :: |
| 193 | dd if=${BOOT_IMG}.fat of=${BOOT_IMG} bs=512 seek=16384 \ |
| 194 | conv=fsync,notrunc |
| 195 | dd if=${ROOT}/imx-mkimage/iMX8M/flash.bin of=${BOOT_IMG} bs=1k seek=33 \ |
| 196 | conv=fsync,notrunc |