From d578533e80934496f56e1521bbf64bda9aa76797 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 12 Sep 2017 11:20:40 -0300 Subject: kernel-imximage.bbclass: Linux kernel with DCD headers This new image type adds support to generate a Linux kernel with DCD headers. Essentially it adds support to directly boot a Linux kernel without a bootloader. As the Linux kernel will be boot directly, it required that the Device Tree is appended to the kernel image, which had support included in OE-Core. To have the Linux kernel generated with the DCD headers, following steps must be followed: - Linux kernel recipe must inherit kernel-imximage class; - Device Tree appended Linux kernel must be used (KERNEL_DEVICETREE_BUNDLE = "1"); - DCD header configuration must be provided (dcd.cfg or dcd-.cfg); Signed-off-by: Otavio Salvador --- classes/kernel-imximage.bbclass | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 classes/kernel-imximage.bbclass (limited to 'classes/kernel-imximage.bbclass') diff --git a/classes/kernel-imximage.bbclass b/classes/kernel-imximage.bbclass new file mode 100644 index 00000000..efc819f0 --- /dev/null +++ b/classes/kernel-imximage.bbclass @@ -0,0 +1,41 @@ +DEPENDS_append = ' u-boot-mkimage-native' + +IMXIMAGE_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}" + +imx_mkimage() { + uboot-mkimage -n $1 -T imximage -e ${IMXIMAGE_ENTRYPOINT} -d $2 $2.imx +} + +gen_imximage() { + if [ -z "${IMXIMAGE_ENTRYPOINT}" ]; then + bbfatal "IMXIMAGE_ENTRYPOINT must have a valid value" + fi + + for DTB in ${KERNEL_DEVICETREE}; do + DTB=`normalize_dtb "${DTB}"` + DTB_EXT=${DTB##*.} + DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"` + base_name="zImage-"${KERNEL_IMAGE_BASE_NAME} + symlink_name="zImage-"${KERNEL_IMAGE_SYMLINK_NAME} + DTB_NAME=`echo ${base_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"` + DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"` + for DCD in dcd-${DTB}.cfg dcd.cfg; do + if [ -e "${WORKDIR}/${DCD}" ]; then + if [ -e ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}.bin ]; then + imx_mkimage ${WORKDIR}/${DCD} ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}.bin + ln -sf ${DTB_NAME}.${DTB_EXT}.bin.imx ${DEPLOYDIR}/$type-${DTB_BASE_NAME}.${DTB_EXT}.bin.imx + fi + + if [ -e ${DEPLOYDIR}/zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin ]; then + imx_mkimage ${WORKDIR}/${DCD} ${DEPLOYDIR}/zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin + ln -sf zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin.imx \ + ${DEPLOYDIR}/zImage-initramfs-${DTB_BASE_NAME}.${DTB_EXT}-${MACHINE}.bin.imx + fi + fi + done + done +} + +do_deploy_append() { + gen_imximage +} -- cgit v1.2.3-54-g00ecf