diff options
Diffstat (limited to 'classes')
| -rw-r--r-- | classes/image_types_fsl.bbclass | 89 |
1 files changed, 42 insertions, 47 deletions
diff --git a/classes/image_types_fsl.bbclass b/classes/image_types_fsl.bbclass index 80722d687..fc7d438c2 100644 --- a/classes/image_types_fsl.bbclass +++ b/classes/image_types_fsl.bbclass | |||
| @@ -92,6 +92,45 @@ SDCARD_GENERATION_COMMAND_mx6 = "generate_imx_sdcard" | |||
| 92 | SDCARD_GENERATION_COMMAND_mx7 = "generate_imx_sdcard" | 92 | SDCARD_GENERATION_COMMAND_mx7 = "generate_imx_sdcard" |
| 93 | SDCARD_GENERATION_COMMAND_vf = "generate_imx_sdcard" | 93 | SDCARD_GENERATION_COMMAND_vf = "generate_imx_sdcard" |
| 94 | 94 | ||
| 95 | |||
| 96 | # | ||
| 97 | # Generate the boot image with the boot scripts and required Device Tree | ||
| 98 | # files | ||
| 99 | _generate_boot_image() { | ||
| 100 | local boot_part=$1 | ||
| 101 | |||
| 102 | # Create boot partition image | ||
| 103 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ | ||
| 104 | | awk "/ $boot_part / { print substr(\$4, 1, length(\$4 -1)) / 1024 }") | ||
| 105 | |||
| 106 | rm -f ${WORKDIR}/boot.img | ||
| 107 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 108 | |||
| 109 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE} | ||
| 110 | |||
| 111 | # Copy boot scripts | ||
| 112 | for item in ${BOOT_SCRIPTS}; do | ||
| 113 | src=`echo $item | awk -F':' '{ print $1 }'` | ||
| 114 | dst=`echo $item | awk -F':' '{ print $2 }'` | ||
| 115 | |||
| 116 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst | ||
| 117 | done | ||
| 118 | |||
| 119 | # Copy device tree file | ||
| 120 | if test -n "${KERNEL_DEVICETREE}"; then | ||
| 121 | for DTS_FILE in ${KERNEL_DEVICETREE}; do | ||
| 122 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 123 | if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then | ||
| 124 | kernel_bin="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin`" | ||
| 125 | kernel_bin_for_dtb="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`" | ||
| 126 | if [ $kernel_bin = $kernel_bin_for_dtb ]; then | ||
| 127 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb | ||
| 128 | fi | ||
| 129 | fi | ||
| 130 | done | ||
| 131 | fi | ||
| 132 | } | ||
| 133 | |||
| 95 | # | 134 | # |
| 96 | # Create an image that can by written onto a SD card using dd for use | 135 | # Create an image that can by written onto a SD card using dd for use |
| 97 | # with i.MX SoC family | 136 | # with i.MX SoC family |
| @@ -150,35 +189,7 @@ generate_imx_sdcard () { | |||
| 150 | ;; | 189 | ;; |
| 151 | esac | 190 | esac |
| 152 | 191 | ||
| 153 | # Create boot partition image | 192 | _generate_boot_image 1 |
| 154 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ | ||
| 155 | | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }') | ||
| 156 | rm -f ${WORKDIR}/boot.img | ||
| 157 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 158 | |||
| 159 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE} | ||
| 160 | |||
| 161 | # Copy boot scripts | ||
| 162 | for item in ${BOOT_SCRIPTS}; do | ||
| 163 | src=`echo $item | awk -F':' '{ print $1 }'` | ||
| 164 | dst=`echo $item | awk -F':' '{ print $2 }'` | ||
| 165 | |||
| 166 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst | ||
| 167 | done | ||
| 168 | |||
| 169 | # Copy device tree file | ||
| 170 | if test -n "${KERNEL_DEVICETREE}"; then | ||
| 171 | for DTS_FILE in ${KERNEL_DEVICETREE}; do | ||
| 172 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 173 | if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then | ||
| 174 | kernel_bin="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin`" | ||
| 175 | kernel_bin_for_dtb="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`" | ||
| 176 | if [ $kernel_bin = $kernel_bin_for_dtb ]; then | ||
| 177 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb | ||
| 178 | fi | ||
| 179 | fi | ||
| 180 | done | ||
| 181 | fi | ||
| 182 | 193 | ||
| 183 | # Burn Partition | 194 | # Burn Partition |
| 184 | dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc,fsync seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) | 195 | dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc,fsync seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) |
| @@ -255,24 +266,8 @@ generate_mxs_sdcard () { | |||
| 255 | parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) | 266 | parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) |
| 256 | 267 | ||
| 257 | dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-sdcard of=${SDCARD} conv=notrunc seek=1 bs=$(expr 1024 \* 1024) | 268 | dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-sdcard of=${SDCARD} conv=notrunc seek=1 bs=$(expr 1024 \* 1024) |
| 258 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ | 269 | |
| 259 | | awk '/ 2 / { print substr($4, 1, length($4 -1)) / 1024 }') | 270 | _generate_boot_image 2 |
| 260 | |||
| 261 | rm -f ${WORKDIR}/boot.img | ||
| 262 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 263 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE} | ||
| 264 | if test -n "${KERNEL_DEVICETREE}"; then | ||
| 265 | for DTS_FILE in ${KERNEL_DEVICETREE}; do | ||
| 266 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 267 | if [ -e "${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then | ||
| 268 | kernel_bin="`readlink ${KERNEL_IMAGETYPE}-${MACHINE}.bin`" | ||
| 269 | kernel_bin_for_dtb="`readlink ${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`" | ||
| 270 | if [ $kernel_bin = $kernel_bin_for_dtb ]; then | ||
| 271 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb | ||
| 272 | fi | ||
| 273 | fi | ||
| 274 | done | ||
| 275 | fi | ||
| 276 | 271 | ||
| 277 | dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=2 bs=$(expr 1024 \* 1024) | 272 | dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=2 bs=$(expr 1024 \* 1024) |
| 278 | ;; | 273 | ;; |
