summaryrefslogtreecommitdiffstats
path: root/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/imx-mkimage/imx-boot_1.0.bb')
-rw-r--r--recipes-bsp/imx-mkimage/imx-boot_1.0.bb218
1 files changed, 218 insertions, 0 deletions
diff --git a/recipes-bsp/imx-mkimage/imx-boot_1.0.bb b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
new file mode 100644
index 00000000..4b6ef699
--- /dev/null
+++ b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
@@ -0,0 +1,218 @@
1# Copyright (C) 2017-2020 NXP
2
3require imx-mkimage_git.inc
4
5DESCRIPTION = "Generate Boot Loader for i.MX 8 device"
6LICENSE = "GPLv2"
7LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
8SECTION = "BSP"
9
10inherit use-imx-security-controller-firmware
11
12IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware imx-seco"
13IMX_EXTRA_FIRMWARE_mx8m = "firmware-imx-8m"
14IMX_EXTRA_FIRMWARE_mx8x = "imx-sc-firmware imx-seco"
15DEPENDS += " \
16 u-boot \
17 ${IMX_EXTRA_FIRMWARE} \
18 imx-atf \
19 ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os', '', d)} \
20"
21DEPENDS_append_mx8m = " u-boot-mkimage-native dtc-native"
22BOOT_NAME = "imx-boot"
23PROVIDES = "${BOOT_NAME}"
24
25inherit deploy
26
27# Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build
28CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}"
29
30# This package aggregates output deployed by other packages,
31# so set the appropriate dependencies
32do_compile[depends] += " \
33 virtual/bootloader:do_deploy \
34 ${@' '.join('%s:do_deploy' % r for r in '${IMX_EXTRA_FIRMWARE}'.split() )} \
35 imx-atf:do_deploy \
36 ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os:do_deploy', '', d)} \
37"
38
39SC_FIRMWARE_NAME ?= "scfw_tcm.bin"
40
41ATF_MACHINE_NAME ?= "bl31-imx8qm.bin"
42ATF_MACHINE_NAME_mx8qm = "bl31-imx8qm.bin"
43ATF_MACHINE_NAME_mx8x = "bl31-imx8qx.bin"
44ATF_MACHINE_NAME_mx8mq = "bl31-imx8mq.bin"
45ATF_MACHINE_NAME_mx8mm = "bl31-imx8mm.bin"
46ATF_MACHINE_NAME_mx8mn = "bl31-imx8mn.bin"
47ATF_MACHINE_NAME_mx8mp = "bl31-imx8mp.bin"
48ATF_MACHINE_NAME_mx8phantomdxl = "bl31-imx8qx.bin"
49ATF_MACHINE_NAME_mx8dxl = "bl31-imx8dxl.bin"
50ATF_MACHINE_NAME_mx8dx = "bl31-imx8dx.bin"
51ATF_MACHINE_NAME_append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', '-optee', '', d)}"
52
53UBOOT_NAME = "u-boot-${MACHINE}.bin-${UBOOT_CONFIG}"
54BOOT_CONFIG_MACHINE = "${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG}.bin"
55
56TOOLS_NAME ?= "mkimage_imx8"
57
58SOC_TARGET ?= "INVALID"
59SOC_TARGET_mx8qm = "iMX8QM"
60SOC_TARGET_mx8x = "iMX8QX"
61SOC_TARGET_mx8mq = "iMX8M"
62SOC_TARGET_mx8mm = "iMX8MM"
63SOC_TARGET_mx8mn = "iMX8MN"
64SOC_TARGET_mx8mp = "iMX8MP"
65SOC_TARGET_mx8dxl = "iMX8DXL"
66SOC_TARGET_mx8phantomdxl = "iMX8QX"
67SOC_TARGET_mx8dx = "iMX8DX"
68
69DEPLOY_OPTEE = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'true', 'false', d)}"
70
71IMXBOOT_TARGETS ?= \
72 "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \
73 bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \
74 'flash_multi_cores flash_dcd', d), d)}"
75
76BOOT_STAGING = "${S}/${SOC_TARGET}"
77BOOT_STAGING_mx8m = "${S}/iMX8M"
78BOOT_STAGING_mx8dx = "${S}/iMX8QX"
79
80SOC_FAMILY = "INVALID"
81SOC_FAMILY_mx8 = "mx8"
82SOC_FAMILY_mx8m = "mx8m"
83SOC_FAMILY_mx8x = "mx8x"
84
85REV_OPTION ?= ""
86REV_OPTION_mx8qxpc0 = "REV=C0"
87
88compile_mx8m() {
89 bbnote 8MQ/8MM/8MN/8MP boot binary build
90 for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
91 bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} "
92 cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING}
93 done
94 cp ${DEPLOY_DIR_IMAGE}/signed_dp_imx8m.bin ${BOOT_STAGING}
95 cp ${DEPLOY_DIR_IMAGE}/signed_hdmi_imx8m.bin ${BOOT_STAGING}
96 cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
97 ${BOOT_STAGING}/u-boot-spl.bin
98 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME} ${BOOT_STAGING}
99 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG} \
100 ${BOOT_STAGING}/u-boot-nodtb.bin
101 cp ${STAGING_DIR_NATIVE}/${bindir}/mkimage ${BOOT_STAGING}/mkimage_uboot
102 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
103 cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
104}
105compile_mx8() {
106 bbnote 8QM boot binary build
107 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
108 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
109 cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
110 cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING}
111 if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then
112 cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
113 ${BOOT_STAGING}/u-boot-spl.bin
114 fi
115}
116
117compile_mx8x() {
118 bbnote 8QX boot binary build
119 cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING}
120 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
121 cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
122 cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
123 if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then
124 cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
125 ${BOOT_STAGING}/u-boot-spl.bin
126 fi
127}
128do_compile() {
129 compile_${SOC_FAMILY}
130 # mkimage for i.MX8
131 # Copy TEE binary to SoC target folder to mkimage
132 if ${DEPLOY_OPTEE}; then
133 cp ${DEPLOY_DIR_IMAGE}/tee.bin ${BOOT_STAGING}
134 fi
135 for target in ${IMXBOOT_TARGETS}; do
136 if [ "$target" = "flash_linux_m4_no_v2x" ]; then
137 # Special target build for i.MX 8DXL with V2X off
138 bbnote "building ${SOC_TARGET} - ${REV_OPTION} V2X=NO ${target}"
139 make SOC=${SOC_TARGET} ${REV_OPTION} V2X=NO flash_linux_m4
140 else
141 bbnote "building ${SOC_TARGET} - ${REV_OPTION} ${target}"
142 make SOC=${SOC_TARGET} ${REV_OPTION} ${target}
143 fi
144 if [ -e "${BOOT_STAGING}/flash.bin" ]; then
145 cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${target}
146 fi
147 done
148}
149
150do_install () {
151 install -d ${D}/boot
152 for target in ${IMXBOOT_TARGETS}; do
153 install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${D}/boot/
154 done
155}
156
157deploy_mx8m() {
158 install -d ${DEPLOYDIR}/${BOOT_TOOLS}
159 install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
160 ${DEPLOYDIR}/${BOOT_TOOLS}
161 for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
162 install -m 0644 ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${DEPLOYDIR}/${BOOT_TOOLS}
163 done
164 install -m 0644 ${BOOT_STAGING}/signed_dp_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS}
165 install -m 0644 ${BOOT_STAGING}/signed_hdmi_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS}
166 install -m 0755 ${BOOT_STAGING}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
167 install -m 0755 ${BOOT_STAGING}/mkimage_fit_atf.sh ${DEPLOYDIR}/${BOOT_TOOLS}
168 install -m 0755 ${BOOT_STAGING}/mkimage_uboot ${DEPLOYDIR}/${BOOT_TOOLS}
169}
170deploy_mx8() {
171 install -d ${DEPLOYDIR}/${BOOT_TOOLS}
172 install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
173 install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
174 if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then
175 install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
176 ${DEPLOYDIR}/${BOOT_TOOLS}
177 fi
178}
179deploy_mx8x() {
180 install -d ${DEPLOYDIR}/${BOOT_TOOLS}
181 install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
182 install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
183 if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then
184 install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \
185 ${DEPLOYDIR}/${BOOT_TOOLS}
186 fi
187}
188do_deploy() {
189 deploy_${SOC_FAMILY}
190 # copy the tool mkimage to deploy path and sc fw, dcd and uboot
191 install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
192
193 # copy tee.bin to deploy path
194 if ${DEPLOY_OPTEE}; then
195 install -m 0644 ${DEPLOY_DIR_IMAGE}/tee.bin ${DEPLOYDIR}/${BOOT_TOOLS}
196 fi
197
198 # copy makefile (soc.mak) for reference
199 install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS}
200 # copy the generated boot image to deploy path
201 for target in ${IMXBOOT_TARGETS}; do
202 # Use first "target" as IMAGE_IMXBOOT_TARGET
203 if [ "$IMAGE_IMXBOOT_TARGET" = "" ]; then
204 IMAGE_IMXBOOT_TARGET="$target"
205 echo "Set boot target as $IMAGE_IMXBOOT_TARGET"
206 fi
207 install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${DEPLOYDIR}
208 done
209 cd ${DEPLOYDIR}
210 ln -sf ${BOOT_CONFIG_MACHINE}-${IMAGE_IMXBOOT_TARGET} ${BOOT_NAME}
211 cd -
212}
213addtask deploy before do_build after do_compile
214
215PACKAGE_ARCH = "${MACHINE_ARCH}"
216FILES_${PN} = "/boot"
217
218COMPATIBLE_MACHINE = "(mx8)"