From 49c8638e97dfc568b59f8829f20fa6d8ab8dbaf8 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 1 May 2012 00:31:46 -0300 Subject: image_types_fsl.bbclass: split sdcard generation by SoC family i.MXS and i.MX SoC families has enough partition layout differences that justify to have a specific code for each SoC family to easy maintenance and readability of code. Signed-off-by: Otavio Salvador --- classes/image_types_fsl.bbclass | 58 ++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 10 deletions(-) (limited to 'classes') diff --git a/classes/image_types_fsl.bbclass b/classes/image_types_fsl.bbclass index 86f4e45..89bab5a 100644 --- a/classes/image_types_fsl.bbclass +++ b/classes/image_types_fsl.bbclass @@ -42,18 +42,13 @@ BOOT_SPACE ?= "5M" IMAGE_DEPENDS_sdcard = "parted-native dosfstools-native mtools-native \ virtual/kernel ${IMAGE_BOOTLOADER}" -IMAGE_CMD_sdcard () { - if [ -z "${SDCARD_ROOTFS}" ]; then - bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." - exit 1 - fi +SDCARD = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard" - TMP=${WORKDIR}/tmp - SDCARD=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard - - # Initialize a sparse file - dd if=/dev/zero of=${SDCARD} bs=1 count=0 seek=$(expr 1000 \* 1000 \* ${SDCARD_SIZE}) +SDCARD_GENERATION_COMMAND_mxs = "generate_mxs_sdcard" +SDCARD_GENERATION_COMMAND_mx5 = "generate_imx_sdcard" +SDCARD_GENERATION_COMMAND_mx6 = "generate_imx_sdcard" +generate_imx_sdcard () { # Create partition table parted -s ${SDCARD} mklabel msdos parted -s ${SDCARD} mkpart primary 0 1M @@ -89,3 +84,46 @@ IMAGE_CMD_sdcard () { dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=1M dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=${BOOT_SPACE} } + +generate_mxs_sdcard () { + # Create partition table + parted -s ${SDCARD} mklabel msdos + parted -s ${SDCARD} mkpart primary 1MiB 2MiB + parted -s ${SDCARD} mkpart primary 2MiB ${BOOT_SPACE} + parted -s ${SDCARD} mkpart primary ${BOOT_SPACE} 100% + parted ${SDCARD} print + + # Change partition type for mxs processor family + bbnote "Setting partition type to 0x53 as required for mxs' SoC family." + echo -n S | dd of=${SDCARD} bs=1 count=1 seek=450 conv=notrunc + + case "${IMAGE_BOOTLOADER}" in + u-boot) + dd if=${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX_SDCARD} of=${SDCARD} conv=notrunc seek=1 skip=${UBOOT_PADDING} bs=1MiB + ;; + *) + bberror "Unkown IMAGE_BOOTLOADER value" + exit 1 + ;; + esac + + BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ + | awk '/ 2 / { print substr($3, 1, length($3 -1)) / 512 }') + mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}.bin ::/uImage + + dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=2 bs=1MiB + dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=${BOOT_SPACE} +} + +IMAGE_CMD_sdcard () { + if [ -z "${SDCARD_ROOTFS}" ]; then + bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." + exit 1 + fi + + # Initialize a sparse file + dd if=/dev/zero of=${SDCARD} bs=1 count=0 seek=$(expr 1000 \* 1000 \* ${SDCARD_SIZE}) + + ${SDCARD_GENERATION_COMMAND} +} -- cgit v1.2.3-54-g00ecf