diff options
Diffstat (limited to 'classes/image_types_fsl.bbclass')
-rw-r--r-- | classes/image_types_fsl.bbclass | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/classes/image_types_fsl.bbclass b/classes/image_types_fsl.bbclass new file mode 100644 index 0000000..3ae0b17 --- /dev/null +++ b/classes/image_types_fsl.bbclass | |||
@@ -0,0 +1,76 @@ | |||
1 | inherit image_types | ||
2 | |||
3 | IMAGE_BOOTLOADER ?= "u-boot" | ||
4 | |||
5 | # Handle u-boot suffixes | ||
6 | UBOOT_SUFFIX ?= "bin" | ||
7 | |||
8 | # | ||
9 | # Create an image that can by written onto a SD card using dd. | ||
10 | # | ||
11 | # External variables needed: | ||
12 | # ${SDCARD_ROOTFS} - the rootfs image to incorporate | ||
13 | # ${IMAGE_BOOTLOADER} - bootloader to use {u-boot, barebox}x | ||
14 | # | ||
15 | # The disk layout used is: | ||
16 | # | ||
17 | # 0 - 1M - reserved to bootloader and other data | ||
18 | # 1M - BOOT_SPACE - kernel | ||
19 | # BOOT_SPACE - SDCARD_SIZE - rootfs | ||
20 | # | ||
21 | |||
22 | # Default to 3.4GiB images | ||
23 | SDCARD_SIZE ?= "3400" | ||
24 | |||
25 | # Boot partition volume id | ||
26 | BOOTDD_VOLUME_ID ?= "Boot ${MACHINE}" | ||
27 | |||
28 | # Addional space for boot partition | ||
29 | BOOT_SPACE ?= "5M" | ||
30 | |||
31 | IMAGE_DEPENDS_sdcard = "parted-native dosfstools-native mtools-native \ | ||
32 | virtual/kernel ${IMAGE_BOOTLOADER}" | ||
33 | |||
34 | IMAGE_CMD_sdcard () { | ||
35 | if [ -z "${SDCARD_ROOTFS}" ]; then | ||
36 | bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." | ||
37 | exit 1 | ||
38 | fi | ||
39 | |||
40 | TMP=${WORKDIR}/tmp | ||
41 | SDCARD=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.sdcard | ||
42 | |||
43 | dd if=/dev/zero of=${SDCARD} bs=$(expr 1000 \* 1000) count=${SDCARD_SIZE} | ||
44 | |||
45 | # Create partition table | ||
46 | parted -s ${SDCARD} mklabel msdos | ||
47 | parted -s ${SDCARD} mkpart primary 0 1M | ||
48 | parted -s ${SDCARD} mkpart primary 1M ${BOOT_SPACE} | ||
49 | parted -s ${SDCARD} mkpart primary ${BOOT_SPACE} 100% | ||
50 | parted ${SDCARD} print | ||
51 | |||
52 | case "${IMAGE_BOOTLOADER}" in | ||
53 | u-boot) | ||
54 | dd if=${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX} of=${SDCARD} conv=notrunc seek=2 bs=512 | ||
55 | ;; | ||
56 | barebox) | ||
57 | dd if=${DEPLOY_DIR_IMAGE}/barebox-${MACHINE}.bin of=${SDCARD} conv=notrunc seek=1 skip=1 bs=512 | ||
58 | dd if=${DEPLOY_DIR_IMAGE}/bareboxenv-${MACHINE}.bin of=${SDCARD} conv=notrunc seek=1 bs=512k | ||
59 | ;; | ||
60 | *) | ||
61 | bberror "Unkown IMAGE_BOOTLOADER value" | ||
62 | exit 1 | ||
63 | ;; | ||
64 | esac | ||
65 | |||
66 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ | ||
67 | | awk '/ 2 / { print substr($3, 1, length($3 -1)) / 512 }') | ||
68 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
69 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}.bin ::/uImage | ||
70 | |||
71 | dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=1M | ||
72 | dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=${BOOT_SPACE} | ||
73 | |||
74 | cd ${DEPLOY_DIR_IMAGE} | ||
75 | ln -sf ${IMAGE_NAME}.sdcard ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.sdcard | ||
76 | } | ||