Skip to content

Commit a08c269

Browse files
authored
Rework boot firmware handling (#803)
Having boot firmware as machine-spefic recipes complicates testing (as one would have to filter those from CI builds lke #797) and prevents building rescue images with generic machine configs. Rework boot firmware, partiion configuration and qcomflash recipes in order to make that code work with any machine. Closes #713
2 parents 6e182b5 + d6a1a6c commit a08c269

22 files changed

+124
-130
lines changed

classes-recipe/image_types_qcom.bbclass

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,19 @@ QCOM_ESP_FILE ?= "${@'efi.bin' if d.getVar('QCOM_ESP_IMAGE') else ''}"
1515
QCOM_DTB_DEFAULT ?= "${@os.path.basename(d.getVar('KERNEL_DEVICETREE').split()[0][:-4]) if d.getVar('KERNEL_DEVICETREE') else ''}"
1616
QCOM_DTB_FILE ?= "dtb.bin"
1717

18+
QCOM_BOOT_FILES_SUBDIR ?= ""
19+
20+
QCOM_PARTITION_CONF ?= ""
21+
1822
QCOM_ROOTFS_FILE ?= "rootfs.img"
1923
IMAGE_QCOMFLASH_FS_TYPE ??= "ext4"
2024

2125
QCOMFLASH_DIR = "${IMGDEPLOYDIR}/${IMAGE_NAME}.qcomflash"
2226
IMAGE_CMD:qcomflash = "create_qcomflash_pkg"
2327
do_image_qcomflash[dirs] = "${QCOMFLASH_DIR}"
2428
do_image_qcomflash[cleandirs] = "${QCOMFLASH_DIR}"
25-
do_image_qcomflash[depends] += "qcom-gen-partition-bins:do_deploy virtual/kernel:do_deploy \
29+
do_image_qcomflash[depends] += "${@ ['', '${QCOM_PARTITION_CONF}:do_deploy'][d.getVar('QCOM_PARTITION_CONF') != '']} \
30+
virtual/kernel:do_deploy \
2631
${@'${QCOM_ESP_IMAGE}:do_image_complete' if d.getVar('QCOM_ESP_IMAGE') != '' else ''}"
2732
IMAGE_TYPEDEP:qcomflash += "${IMAGE_QCOMFLASH_FS_TYPE}"
2833

@@ -60,24 +65,32 @@ create_qcomflash_pkg() {
6065
install -m 0644 ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_QCOMFLASH_FS_TYPE} ${QCOM_ROOTFS_FILE}
6166

6267
# partition bins
63-
for pbin in `find ${DEPLOY_DIR_IMAGE} -type f -name 'gpt_main*.bin' \
64-
-o -name 'gpt_backup*.bin' -o -name 'patch*.xml' -o -name 'cdt.bin'`; do
68+
for pbin in `find ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR} -maxdepth 1 -type f -name 'gpt_main*.bin' \
69+
-o -name 'gpt_backup*.bin' -o -name 'patch*.xml'`; do
6570
install -m 0644 ${pbin} .
6671
done
72+
6773
# skip BLANK_GPT and WIPE_PARTITIONS for rawprogram xml files
68-
for rawpg in `find ${DEPLOY_DIR_IMAGE} -type f -name 'rawprogram*.xml' \
74+
for rawpg in `find ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR} -maxdepth 1 -type f -name 'rawprogram*.xml' \
6975
! -name 'rawprogram*_BLANK_GPT.xml' ! -name 'rawprogram*_WIPE_PARTITIONS.xml'`; do
7076
install -m 0644 ${rawpg} .
7177
done
72-
for logfs in `find ${DEPLOY_DIR_IMAGE} -type f -name 'logfs_*.bin'`; do
78+
79+
if [ -n "${QCOM_CDT_FILE}" ]; then
80+
install -m 0644 ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR}/${QCOM_CDT_FILE}.bin cdt.bin
81+
# For machines with a published cdt file, let's make sure we flash it
82+
sed -i '/label="cdt"/ s/filename=""/filename="cdt.bin"/' rawprogram*.xml
83+
fi
84+
85+
for logfs in `find ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR} -maxdepth 1 -type f -name 'logfs_*.bin'`; do
7386
install -m 0644 ${logfs} .
7487
done
75-
for zeros in `find ${DEPLOY_DIR_IMAGE} -type f -name 'zeros_*.bin'`; do
88+
for zeros in `find ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR} -maxdepth 1 -type f -name 'zeros_*.bin'`; do
7689
install -m 0644 ${zeros} .
7790
done
7891

7992
# boot firmware
80-
for bfw in `find ${DEPLOY_DIR_IMAGE} -type f -name '*.elf' -o -name '*.mbn' -o -name '*.fv'`; do
93+
for bfw in `find ${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR} -maxdepth 1 -type f -name '*.elf' -o -name '*.mbn' -o -name '*.fv'`; do
8194
install -m 0644 ${bfw} .
8295
done
8396

conf/machine/include/qcom-qcm2290.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ MACHINE_EXTRA_RRECOMMENDS += " \
1616
packagegroup-qcom-boot-additional \
1717
"
1818

19-
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qrb2210-rb1 qcom-gen-partition-bins"
19+
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qrb2210-rb1"

conf/machine/include/qcom-qcs6490.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ MACHINE_EXTRA_RRECOMMENDS += " \
1717
packagegroup-qcom-boot-additional \
1818
"
1919

20-
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qcs6490 qcom-gen-partition-bins"
20+
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qcs6490"

conf/machine/include/qcom-qcs9100.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ MACHINE_EXTRA_RRECOMMENDS += " \
1717
packagegroup-qcom-boot-additional \
1818
"
1919

20-
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qcs9100 qcom-gen-partition-bins"
20+
EXTRA_IMAGEDEPENDS += "firmware-qcom-boot-qcs9100"

conf/machine/qcs6490-rb3gen2-core-kit.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
1717
packagegroup-rb3gen2-firmware \
1818
packagegroup-rb3gen2-hexagon-dsp-binaries \
1919
"
20+
21+
QCOM_CDT_FILE = "cdt_core_kit"
22+
QCOM_BOOT_FILES_SUBDIR = "qcm6490"
23+
QCOM_PARTITION_CONF = "qcom-partition-conf-qcs6490-rb3gen2"

conf/machine/qcs9100-ride-sx.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
1919
packagegroup-sa8775p-ride-firmware \
2020
packagegroup-sa8775p-ride-hexagon-dsp-binaries \
2121
"
22+
23+
QCOM_CDT_FILE = "cdt_ride_sx"
24+
QCOM_BOOT_FILES_SUBDIR = "qcs9100"
25+
QCOM_PARTITION_CONF = "qcom-partition-conf-qcs9100-ride-sx"

conf/machine/qrb2210-rb1-core-kit.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ KERNEL_CLASSES += "linux-qcom-bootimg"
2121
# Helper util to tell the android bootloader to mark the boot as successfull.
2222
# The boot firmware will switch to slot B and fail to boot otherwise.
2323
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "qbootctl"
24+
25+
QCOM_BOOT_FILES_SUBDIR = "qrb2210"
26+
QCOM_PARTITION_CONF = "qcom-partition-conf-qrb2210-rb1"

recipes-bsp/firmware-boot/firmware-qcom-boot-common.inc

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
S = "${WORKDIR}/sources"
44
UNPACKDIR = "${S}"
55

6-
CDT_FILE ?= ""
6+
QCOM_BOOT_IMG_SUBDIR ?= ""
77

88
INHIBIT_DEFAULT_DEPS = "1"
99

@@ -13,17 +13,16 @@ do_compile[noexec] = "1"
1313
inherit deploy
1414

1515
do_deploy() {
16+
install -d ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR}
1617
find "${UNPACKDIR}/${BOOTBINARIES}" -name 'gpt_*.bin' -delete
17-
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.bin' -exec install -m 0644 {} ${DEPLOYDIR} \;
18-
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.elf' -exec install -m 0644 {} ${DEPLOYDIR} \;
19-
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.fv' -exec install -m 0644 {} ${DEPLOYDIR} \;
20-
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.mbn' -exec install -m 0644 {} ${DEPLOYDIR} \;
21-
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.melf' -exec install -m 0644 {} ${DEPLOYDIR} \;
22-
23-
if [ -f "${UNPACKDIR}/${CDT_FILE}.bin" ]; then
24-
install -m 0644 ${UNPACKDIR}/${CDT_FILE}.bin ${DEPLOYDIR}/cdt.bin
25-
fi
18+
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.bin' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
19+
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.elf' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
20+
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.fv' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
21+
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.mbn' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
22+
find "${UNPACKDIR}/${BOOTBINARIES}" -name '*.melf' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
23+
24+
find "${UNPACKDIR}" -name 'cdt*bin' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR} \;
2625
}
2726
addtask deploy before do_build after do_install
2827

29-
PACKAGE_ARCH = "${MACHINE_ARCH}"
28+
inherit allarch

recipes-bsp/firmware-boot/firmware-qcom-boot-dragonboard410c-sdcard_17.09.bb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ SRC_URI[sha256sum] = "9885f915ebd4986432340cf1d03b8fd2bfdd97ad6a4a7466200fddbe41
99

1010
BOOTBINARIES = ""
1111

12+
QCOM_BOOT_IMG_SUBDIR = "dragonboard410c"
13+
1214
include firmware-qcom-boot-common.inc

recipes-bsp/firmware-boot/firmware-qcom-boot-qcs6490_00058.0.bb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@ DESCRIPTION = "QCOM NHLOS Firmware for Qualcomm Robotics RB3Gen2 platform"
22
LICENSE = "Proprietary"
33
LIC_FILES_CHKSUM = "file://${UNPACKDIR}/${BOOTBINARIES}/Qualcomm-Technologies-Inc.-Proprietary;md5=58d50a3d36f27f1a1e6089308a49b403"
44

5-
COMPATIBLE_MACHINE = "qcm6490"
6-
75
FW_ARTIFACTORY = "softwarecenter.qualcomm.com/download/software/chip/qualcomm_linux-spf-1-0/qualcomm-linux-spf-1-0_test_device_public"
86
FW_BUILD_ID = "r1.0_${PV}/qcm6490-le-1-0"
97
FW_BIN_PATH = "common/build/ufs/bin"
108
BOOTBINARIES = "QCM6490_bootbinaries"
119

12-
SRC_URI = "https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/${FW_BIN_PATH}/${BOOTBINARIES}.zip;downloadfilename=${BOOTBINARIES}_r1.0_${PV}.zip;name=bootbinaries"
10+
SRC_URI = " \
11+
https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/${FW_BIN_PATH}/${BOOTBINARIES}.zip;downloadfilename=${BOOTBINARIES}_r1.0_${PV}.zip;name=bootbinaries \
12+
https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/QCS6490/cdt/rb3gen2-core-kit.zip;downloadfilename=cdt-rb3gen2-core-kit_${PV}.zip;name=rb3gen2-core-kit \
13+
"
1314
SRC_URI[bootbinaries.sha256sum] = "08c0798f1ab9f380c94b54141847c7b365c87f2a072a2461779cf282809aeeb4"
14-
15-
SRC_URI:append:qcs6490-rb3gen2-core-kit = " https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/QCS6490/cdt/rb3gen2-core-kit.zip;downloadfilename=cdt-rb3gen2-core-kit_${PV}.zip;name=rb3gen2-core-kit"
1615
SRC_URI[rb3gen2-core-kit.sha256sum] = "0fe1c0b4050cf54203203812b2c1f0d9698823d8defc8b6516414a4e5e0c557e"
1716

18-
CDT_FILE:qcs6490-rb3gen2-core-kit ?= "cdt_core_kit"
17+
QCOM_BOOT_IMG_SUBDIR = "qcm6490"
1918

2019
include firmware-qcom-boot-common.inc

0 commit comments

Comments
 (0)