]> code.ossystems Code Review - meta-freescale.git/commitdiff
image_types_fsl.bbclass: split sdcard generation by SoC family
authorOtavio Salvador <otavio@ossystems.com.br>
Tue, 1 May 2012 03:31:46 +0000 (00:31 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Wed, 2 May 2012 13:06:44 +0000 (10:06 -0300)
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 <otavio@ossystems.com.br>
meta-fsl-arm/classes/image_types_fsl.bbclass

index 86f4e450ae6303b21e2c3fc83b101a87c524ca5c..89bab5a6e95cb526da1cd4e6ddee18692666e0d3 100644 (file)
@@ -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}
+}