summaryrefslogtreecommitdiffstats
path: root/classes/image_types_fsl.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/image_types_fsl.bbclass')
-rw-r--r--classes/image_types_fsl.bbclass76
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 @@
1inherit image_types
2
3IMAGE_BOOTLOADER ?= "u-boot"
4
5# Handle u-boot suffixes
6UBOOT_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
23SDCARD_SIZE ?= "3400"
24
25# Boot partition volume id
26BOOTDD_VOLUME_ID ?= "Boot ${MACHINE}"
27
28# Addional space for boot partition
29BOOT_SPACE ?= "5M"
30
31IMAGE_DEPENDS_sdcard = "parted-native dosfstools-native mtools-native \
32 virtual/kernel ${IMAGE_BOOTLOADER}"
33
34IMAGE_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}