[yocto] [meta-rockchip][PATCH 3/3] rockchip-next-img: add image for rockchip next-dev u-boot
Romain Perier
romain.perier at gmail.com
Sat Feb 18 09:50:05 PST 2017
Hi,
1 patch per feature or per different component. So I should get a patch
for rk3288.inc and another one for the class :)
Suppose I am a user of meta-rockchip. I want to use a class for generating
a image. The name "rockchip-img-next" is not clear at all for me.
If that's for the sdcard call it rockchip-img-sdmmc if later you plan to
add a class for emmc call it rockchip-img-emmc :)
Why so complicated when you can make it simple ? ;)
Also, could you add more details to your commit messages please
Regards,
Romain
2017-02-17 19:07 GMT+01:00 Trevor Woerner <twoerner at gmail.com>:
> From: Jacob Chen <jacob-chen at iotwrt.com>
>
> Being different from the previous rk-boot which use parameter, next-dev
> u-boot
> use gpt partition, so it needs to generate a different image.
>
> Reviewed-by: Trevor Woerner <twoerner at gmail.com>
> Signed-off-by: Jacob Chen <jacob-chen at iotwrt.com>
> ---
> classes/rockchip-next-img.bbclass | 130 ++++++++++++++++++++++++++++++
> ++++++++
> conf/machine/include/rk3288.inc | 4 ++
> 2 files changed, 134 insertions(+)
> create mode 100644 classes/rockchip-next-img.bbclass
>
> diff --git a/classes/rockchip-next-img.bbclass
> b/classes/rockchip-next-img.bbclass
> new file mode 100644
> index 0000000..cd87dee
> --- /dev/null
> +++ b/classes/rockchip-next-img.bbclass
> @@ -0,0 +1,130 @@
> +# Copyright (C) 2017 Fuzhou Rockchip Electronics Co., Ltd
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +inherit image_types
> +
> +# Use an uncompressed ext4 by default as rootfs
> +IMG_ROOTFS_TYPE = "ext4"
> +IMG_ROOTFS = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.${IMG_ROOTFS_TYPE}"
> +
> +# This image depends on the rootfs image
> +IMAGE_TYPEDEP_rockchip-next-img = "${IMG_ROOTFS_TYPE}"
> +
> +NEXT_IMG = "${IMAGE_NAME}.next.img"
> +BOOT_IMG = "boot.img"
> +MINILOADER = "loader.bin"
> +UBOOT = "u-boot.out"
> +TRUST = "trust.out"
> +
> +# Target image total size [in MiB]
> +NEXT_IMG_SIZE ?= "4096"
> +
> +# default partitions [in Sectors]
> +# More info at http://rockchip.wikidot.com/partitions
> +LOADER1_SIZE = "8000"
> +RESERVED1_SIZE = "128"
> +RESERVED2_SIZE = "8192"
> +LOADER2_SIZE = "8192"
> +ATF_SIZE = "8192"
> +BOOT_SIZE = "229376"
> +
> +IMAGE_DEPENDS_rockchip-next-img = "parted-native \
> + u-boot-mkimage-native \
> + mtools-native \
> + dosfstools-native \
> + virtual/kernel:do_deploy \
> + virtual/bootloader:do_deploy"
> +
> +PER_CHIP_IMG_GENERATION_COMMAND_rk3288 = "generate_rk3288_image"
> +
> +IMAGE_CMD_rockchip-next-img () {
> + # Change to image directory
> + cd ${DEPLOY_DIR_IMAGE}
> +
> + create_rk_image
> +
> + ${PER_CHIP_IMG_GENERATION_COMMAND}
> +}
> +
> +create_rk_image () {
> +
> + echo "Creating filesystem with total size ${NEXT_IMG_SIZE} MiB"
> +
> + # Remove the exist image
> + rm -rf *.next.img
> +
> + # Initialize sdcard image file
> + dd if=/dev/zero of=${NEXT_IMG} bs=1M count=0 seek=${NEXT_IMG_SIZE}
> +
> + # Create partition table
> + parted -s ${NEXT_IMG} mklabel gpt
> +
> + # Create vendor defined partitions
> + LOADER1_START=64
> + RESERVED1_START=`expr ${LOADER1_START} + ${LOADER1_SIZE}`
> + RESERVED2_START=`expr ${RESERVED1_START} + ${RESERVED1_SIZE}`
> + LOADER2_START=`expr ${RESERVED2_START} + ${RESERVED2_SIZE}`
> + ATF_START=`expr ${LOADER2_START} + ${LOADER2_SIZE}`
> + BOOT_START=`expr ${ATF_START} + ${ATF_SIZE}`
> + ROOTFS_START=`expr ${BOOT_START} + ${BOOT_SIZE}`
> +
> + parted -s ${NEXT_IMG} unit s mkpart loader1 ${LOADER1_START} `expr
> ${RESERVED1_START} - 1`
> + parted -s ${NEXT_IMG} unit s mkpart reserved1 ${RESERVED1_START}
> `expr ${RESERVED2_START} - 1`
> + parted -s ${NEXT_IMG} unit s mkpart reserved2 ${RESERVED2_START}
> `expr ${LOADER2_START} - 1`
> + parted -s ${NEXT_IMG} unit s mkpart loader2 ${LOADER2_START} `expr
> ${ATF_START} - 1`
> + parted -s ${NEXT_IMG} unit s mkpart atf ${ATF_START} `expr
> ${BOOT_START} - 1`
> +
> + # Create boot partition and mark it as bootable
> + parted -s ${NEXT_IMG} unit s mkpart boot ${BOOT_START} `expr
> ${ROOTFS_START} - 1`
> + parted -s ${NEXT_IMG} set 6 boot on
> +
> + # Create rootfs partition
> + parted -s ${NEXT_IMG} unit s mkpart root ${ROOTFS_START} 100%
> +
> + parted ${NEXT_IMG} print
> +
> + # Delete the boot image to avoid trouble with the build cache
> + rm -f ${WORKDIR}/${BOOT_IMG}
> +
> + # Create boot partition image
> + BOOT_BLOCKS=$(LC_ALL=C parted -s ${NEXT_IMG} unit b print | awk '/
> 6 / { print substr($4, 1, length($4 -1)) / 512 /2 }')
> + BOOT_BLOCKS=`expr $BOOT_BLOCKS / 63 \* 63`
> +
> + mkfs.vfat -n "boot" -S 512 -C ${WORKDIR}/${BOOT_IMG} $BOOT_BLOCKS
> + mcopy -i ${WORKDIR}/${BOOT_IMG} -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
> ::${KERNEL_IMAGETYPE}
> +
> + DEVICETREE_DEFAULT=""
> + for DTS_FILE in ${KERNEL_DEVICETREE}; do
> + [ -n "${DEVICETREE_DEFAULT}"] && DEVICETREE_DEFAULT="${DTS_
> FILE}"
> + mcopy -i ${WORKDIR}/${BOOT_IMG} -s
> ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_FILE} ::${DTS_FILE}
> + done
> +
> + # Create extlinux config file
> + cat > ${WORKDIR}/extlinux.conf <<EOF
> +default yocto
> +
> +label yocto
> + kernel /${KERNEL_IMAGETYPE}
> + devicetree /${DEVICETREE_DEFAULT}
> + append ${APPEND}
> +EOF
> +
> + mmd -i ${WORKDIR}/${BOOT_IMG} ::/extlinux
> + mcopy -i ${WORKDIR}/${BOOT_IMG} -s ${WORKDIR}/extlinux.conf
> ::/extlinux/
> +
> + # Burn Boot Partition
> + dd if=${WORKDIR}/${BOOT_IMG} of=${NEXT_IMG} conv=notrunc,fsync
> seek=${BOOT_START}
> +
> + # Burn Rootfs Partition
> + dd if=${IMG_ROOTFS} of=${NEXT_IMG} seek=${ROOTFS_START}
> +
> +}
> +
> +generate_rk3288_image () {
> +
> + # Burn bootloader
> + mkimage -n rk3288 -T rksd -d ${DEPLOY_DIR_IMAGE}/${SPL_BINARY}
> ${WORKDIR}/${UBOOT}
> + cat ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.bin >>
> ${WORKDIR}/${UBOOT}
> + dd if=${WORKDIR}/${UBOOT} of=${NEXT_IMG} conv=notrunc,fsync seek=64
> +
> +}
> diff --git a/conf/machine/include/rk3288.inc
> b/conf/machine/include/rk3288.inc
> index f067ad5..68936bf 100644
> --- a/conf/machine/include/rk3288.inc
> +++ b/conf/machine/include/rk3288.inc
> @@ -9,7 +9,11 @@ require conf/machine/include/soc-family.inc
> PREFERRED_PROVIDER_virtual/kernel = "linux"
> KERNEL_IMAGETYPE = "zImage"
> KBUILD_DEFCONFIG = "multi_v7_defconfig"
> +APPEND = "console=tty1 console=ttyS2,115200n8 rw root=/dev/mmcblk2p7
> rootfstype=ext4 init=/sbin/init"
>
> PREFERRED_PROVIDER_virtual/bootloader = "u-boot-rockchip"
> SERIAL_CONSOLES = "115200;ttyS2"
> SPL_BINARY = "u-boot-spl-dtb.bin"
> +
> +IMAGE_CLASSES += "rockchip-next-img"
> +IMAGE_FSTYPES += "ext4 rockchip-next-img"
> --
> 2.11.0.258.ge05806d
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170218/bdb4d59f/attachment.html>
More information about the yocto
mailing list