diff options
4 files changed, 75 insertions, 8 deletions
diff --git a/conf/machine/dragonboard-410c.conf b/conf/machine/dragonboard-410c.conf index 65393c8..97b2d72 100644 --- a/conf/machine/dragonboard-410c.conf +++ b/conf/machine/dragonboard-410c.conf @@ -21,3 +21,11 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \ " QCOM_BOOTIMG_ROOTFS ?= "mmcblk0p10" + +# Define rootfs partiton (kernel argument) +SD_QCOM_BOOTIMG_ROOTFS ?= "mmcblk1p7" + +# Assemble SD card +IMAGE_FSTYPES_append = " wic" +WKS_FILE = "dragonboard410c-sd.wks" +WKS_FILE_DEPENDS = "firmware-qcom-dragonboard410c-bootloader-sdcard" diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb new file mode 100644 index 0000000..537dae3 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb @@ -0,0 +1,22 @@ +SUMMARY = "Prebuilt bootlader images for Dragonboard 410c" + +inherit deploy + +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4d087ee0965cb059f1b2f9429e166f64" + +SRC_URI = "https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/17.09/dragonboard410c_bootloader_sd_linux-88.zip" +SRC_URI[md5sum] = "e15da2a623442d66587aea506599fb69" +SRC_URI[sha256sum] = "9885f915ebd4986432340cf1d03b8fd2bfdd97ad6a4a7466200fddbe41cdcf5c" + +COMPATIBLE_MACHINE = "(dragonboard-410c)" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +S = "${WORKDIR}" + +do_deploy() { + install -D -p -m644 ${S}/*.mbn ${DEPLOYDIR} +} + +addtask deploy before do_build after do_compile + diff --git a/recipes-kernel/linux/linux-qcom-bootimg.inc b/recipes-kernel/linux/linux-qcom-bootimg.inc index ab1065b..e0969ef 100644 --- a/recipes-kernel/linux/linux-qcom-bootimg.inc +++ b/recipes-kernel/linux/linux-qcom-bootimg.inc @@ -1,12 +1,28 @@ DEPENDS += "skales-native" QCOM_BOOTIMG_ROOTFS ?= "undefined" +SD_QCOM_BOOTIMG_ROOTFS ?= "undefined" # set output file names DT_IMAGE_BASE_NAME = "dt-${KERNEL_IMAGE_BASE_NAME}" DT_IMAGE_SYMLINK_NAME = "dt-${KERNEL_IMAGE_SYMLINK_NAME}" BOOT_IMAGE_BASE_NAME = "boot-${KERNEL_IMAGE_BASE_NAME}" BOOT_IMAGE_SYMLINK_NAME = "boot-${KERNEL_IMAGE_SYMLINK_NAME}" +SD_BOOT_IMAGE_BASE_NAME = "boot-sd${KERNEL_IMAGE_BASE_NAME}" +SD_BOOT_IMAGE_SYMLINK_NAME = "boot-sd-${KERNEL_IMAGE_SYMLINK_NAME}" + +# param ${1} partition where rootfs is located +# param ${2} output boot image file name +priv_make_image() { + ${STAGING_BINDIR_NATIVE}/skales/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \ + --ramdisk ${B}/initrd.img \ + --output ${DEPLOYDIR}/${2}.img \ + $mkbootimg_dtarg \ + --pagesize ${QCOM_BOOTIMG_PAGE_SIZE} \ + --base ${QCOM_BOOTIMG_KERNEL_BASE} \ + --cmdline \ + "root=/dev/${1} rw rootwait console=${ttydev},${baudrate}n8" +} do_deploy_append() { @@ -26,14 +42,17 @@ do_deploy_append() { # during boot echo "This is not an initrd" > ${B}/initrd.img - ${STAGING_BINDIR_NATIVE}/skales/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \ - --ramdisk ${B}/initrd.img \ - --output ${DEPLOYDIR}/${BOOT_IMAGE_BASE_NAME}.img \ - $mkbootimg_dtarg \ - --pagesize ${QCOM_BOOTIMG_PAGE_SIZE} \ - --base ${QCOM_BOOTIMG_KERNEL_BASE} \ - --cmdline \ - "root=/dev/${QCOM_BOOTIMG_ROOTFS} rw rootwait console=${ttydev},${baudrate}n8" + # don't build bootimg if rootfs partition is not defined + if [ "${QCOM_BOOTIMG_ROOTFS}" == "undefined"]; then + bbfatal "Rootfs partition must be defined" + fi + priv_make_image ${QCOM_BOOTIMG_ROOTFS} ${BOOT_IMAGE_BASE_NAME} ln -sf ${BOOT_IMAGE_BASE_NAME}.img ${DEPLOYDIR}/${BOOT_IMAGE_SYMLINK_NAME}.img + + # build sd boot image only for machines supporting it. + if [ "${SD_QCOM_BOOTIMG_ROOTFS}" != "undefined" ]; then + priv_make_image ${SD_QCOM_BOOTIMG_ROOTFS} ${SD_BOOT_IMAGE_BASE_NAME} + ln -sf ${SD_BOOT_IMAGE_BASE_NAME}.img ${DEPLOYDIR}/${SD_BOOT_IMAGE_SYMLINK_NAME}.img + fi } diff --git a/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks b/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks new file mode 100644 index 0000000..8014655 --- /dev/null +++ b/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks @@ -0,0 +1,18 @@ +# short-description: Create an SD card image with LittleKernel +# long-description: Creates partitioned SD card image for Dragonboard 410c +# that user can directly dd into card and run distro from externa memory + +# partitions sec and devinfo are not created for now, because WIC can't create +# empty partition yet and they are not mandatory for Little Kernel + +part --ondisk mmcblk1 --size 512K --part-name sbl1 --part-type DEA0BA2C-CBDD-4805-B4F9-F428251C3E98 --source rawcopy --sourceparams "file=sbl1.mbn" --align 65536 +part --ondisk mmcblk1 --size 512K --part-name rpm --part-type 098DF793-D712-413D-9D4E-89D711772228 --source rawcopy --sourceparams "file=rpm.mbn" +part --ondisk mmcblk1 --size 1024K --part-name tz --part-type A053AA7F-40B8-4B1C-BA08-2F68AC71A4F4 --source rawcopy --sourceparams "file=tz.mbn" +part --ondisk mmcblk1 --size 512K --part-name hyp --part-type E1A6A689-0C8D-4CC6-B4E8-55A4320FBD8A --source rawcopy --sourceparams "file=hyp.mbn" +# part --ondisk mmcblk1 --size 16K --part-name sec --part-type 303E6AC3-AF15-4C54-9E9B-D9A8FBECF401 --source empty --align 65536 +part --ondisk mmcblk1 --size 1024K --part-name aboot --part-type 400FFDCD-22E0-47E7-9A23-F16ED9382388 --source rawcopy --sourceparams "file=emmc_appsboot.mbn" +part --ondisk mmcblk1 --size 64M --part-name boot --part-type 20117F86-E985-4357-B9EE-374BC1D8487D --source rawcopy --sourceparams "file=boot-sd-dragonboard-410c.img" +# part --ondisk mmcblk1 --size 1024K --part-name devinfo --part-type 1B81E7E6-F50D-419B-A739-2AEEF8DA3335 --source empty +part / --ondisk mmcblk1 --fstype=ext4 --source rootfs --part-name rootfs + +bootloader --ptable gpt |