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 80722d68..fc7d438c 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 | ;; |