meta-digi-arm: implement 'boot.vfat' image type

At the moment this image is a VFAT file system containing the kernel
and the device tree blobs.

https://jira.digi.com/browse/DEL-932

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2014-02-20 11:11:31 +01:00
parent 4c79ce2429
commit 2660a0da27
3 changed files with 58 additions and 1 deletions

View File

@ -73,3 +73,52 @@ runimagecmd_jffs2() {
runimagecmd_sum.jffs2 = "${runimagecmd_jffs2}" runimagecmd_sum.jffs2 = "${runimagecmd_jffs2}"
runimagecmd_ubifs = "${runimagecmd_jffs2}" runimagecmd_ubifs = "${runimagecmd_jffs2}"
runimagecmd_boot.vfat() {
#
# Image generation code for image type 'boot.vfat'
#
BOOTIMG_FILES="$(readlink -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE})"
BOOTIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}"
if [ -n "${KERNEL_DEVICETREE}" ]; then
for DTB in ${KERNEL_DEVICETREE}; do
if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB}" ]; then
BOOTIMG_FILES="${BOOTIMG_FILES} $(readlink -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB})"
BOOTIMG_FILES_SYMLINK="${BOOTIMG_FILES_SYMLINK} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB}"
fi
done
fi
# Size of kernel and device tree + 10% extra space (in bytes)
BOOTIMG_FILES_SIZE="$(expr $(du -bc ${BOOTIMG_FILES} | tail -n1 | cut -f1) \* \( 100 + 10 \) / 100)"
# 1KB blocks for mkfs.vfat
BOOTIMG_BLOCKS="$(expr ${BOOTIMG_FILES_SIZE} / 1024)"
if [ -n "${BOARD_BOOTIMAGE_PARTITION_SIZE}" ]; then
BOOTIMG_BLOCKS="$(expr ${BOARD_BOOTIMAGE_PARTITION_SIZE} / 1024)"
fi
# POKY: Ensure total sectors is a multiple of sectors per track or mcopy will
# complain. Blocks are 1024 bytes, sectors are 512 bytes, and we generate
# images with 32 sectors per track. This calculation is done in blocks, thus
# the use of 16 instead of 32.
BOOTIMG_BLOCKS="$(expr \( \( ${BOOTIMG_BLOCKS} + 15 \) / 16 \) \* 16)"
# Build VFAT boot image in copy the contents
mkfs.vfat -n "Boot ${MACHINE}" -S 512 -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ${BOOTIMG_BLOCKS}
# Copy files into the FAT image (renaming DTB's on the fly)
for i in ${BOOTIMG_FILES_SYMLINK}; do
mcopy -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ${i} ::/$(basename ${i} | sed -e '/dtb$/s,^${KERNEL_IMAGETYPE}-,,g')
done
# Truncate the image to speed up the downloading/writing to the EMMC
if [ -n "${BOARD_BOOTIMAGE_PARTITION_SIZE}" ]; then
# U-Boot writes 512 bytes sectors so truncate the image at a sector boundary
truncate -s $(expr \( \( ${BOOTIMG_FILES_SIZE} + 511 \) / 512 \) \* 512) ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat
fi
# Create the symlink
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ]; then
ln -s ${IMAGE_NAME}.boot.vfat ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot.vfat
fi
}

View File

@ -8,3 +8,11 @@ include conf/machine/include/ccimx6.inc
KERNEL_DEVICETREE = "imx6-${MACHINE}.dtb imx6-${MACHINE}-ldo.dtb imx6-${MACHINE}-hdcp.dtb" KERNEL_DEVICETREE = "imx6-${MACHINE}.dtb imx6-${MACHINE}-ldo.dtb imx6-${MACHINE}-hdcp.dtb"
SERIAL_CONSOLES = "115200;ttymxc0" SERIAL_CONSOLES = "115200;ttymxc0"
#
# Partition sizes
# ---------------
# boot: 64 MiB
# system: 512 MiB
#
BOARD_BOOTIMAGE_PARTITION_SIZE ?= "67108864"

View File

@ -52,7 +52,7 @@ IMAGE_FSTYPES ?= "sum.jffs2 tar.bz2 ubifs"
# MX6 does not have flash memory so build sdcard images # MX6 does not have flash memory so build sdcard images
SDCARD_ROOTFS_mx6 ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4" SDCARD_ROOTFS_mx6 ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4"
IMAGE_FSTYPES_mx6 ?= "ext4 sdcard tar.bz2" IMAGE_FSTYPES_mx6 ?= "boot.vfat ext4 sdcard tar.bz2"
KERNEL_IMAGETYPE = "uImage" KERNEL_IMAGETYPE = "uImage"