[OE-core] [PATCH v8 3/3] kernel-devicetree.bbclass: Add support to generate append to kernel
André Draszik
git at andred.net
Thu Sep 14 10:19:55 UTC 2017
On Tue, 2017-09-12 at 17:36 -0300, Otavio Salvador wrote:
> The are use cases where the Device Tree appended to the kernel is
> convinient, so we generate the bundle concatenating the kernel (and
> potentionally the initramfs) and the Device Tree binaries.
>
> To enable it, set KERNEL_DEVICETREE_BUNDLE variable to '1'
>
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
> ---
>
> Changes in v8:
> - rework append support to support ARM and MIPS (obi)
>
> Changes in v7:
> - simplified code
> - rename bundle to use .bin extension
>
> Changes in v6: None
> Changes in v5:
> - add support for initramfs bundle
>
> Changes in v4:
> - new patch
>
> Changes in v3: None
> Changes in v2: None
>
> meta/classes/kernel-devicetree.bbclass | 62
> +++++++++++++++++++++++++++++++++-
> 1 file changed, 61 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/kernel-devicetree.bbclass b/meta/classes/kernel-
> devicetree.bbclass
> index 8723f24212..c618594c96 100644
> --- a/meta/classes/kernel-devicetree.bbclass
> +++ b/meta/classes/kernel-devicetree.bbclass
> @@ -1,6 +1,13 @@
> # Support for device tree generation
> -PACKAGES_append = " kernel-devicetree"
> +PACKAGES_append = " \
> + kernel-devicetree \
> + ${@['kernel-image-zimage-bundle',
> ''][d.getVar('KERNEL_DEVICETREE_BUNDLE') != '1']} \
> +"
> FILES_kernel-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb
> /${KERNEL_IMAGEDEST}/*.dtbo"
> +FILES_kernel-image-zimage-bundle = "/${KERNEL_IMAGEDEST}/zImage-
> *.dtb.bin"
> +
> +# Generate kernel+devicetree bundle
> +KERNEL_DEVICETREE_BUNDLE ?= "0"
>
> normalize_dtb () {
> DTB="$1"
> @@ -20,6 +27,38 @@ get_real_dtb_path_in_kernel () {
> echo "${DTB_PATH}"
> }
>
> +
> +do_configure_devicetree() {
> + if [ "${KERNEL_DEVICETREE_BUNDLE}" = "1" ]; then
> + if echo ${KERNEL_IMAGETYPE_FOR_MAKE} | grep -q 'zImage';
> then
> + case "${ARCH}" in
> + "arm")
> + config="${B}/.config"
> + if ! grep -q 'CONFIG_ARM_APPENDED_DTB=y'
> $config; then
> + bbwarn 'CONFIG_ARM_APPENDED_DTB
> is NOT enabled in the kernel. Enabling it to allow the kernel to boot with
> the Device Tree appended!'
> + sed -i "/CONFIG_ARM_APPENDED_DTB[
> =]/d" $config
> + echo "CONFIG_ARM_APPENDED_DTB=y"
> >> $config
> + echo "#
> CONFIG_ARM_ATAG_DTB_COMPAT is not set" >> $config
> + fi
> + ;;
> + "mips")
> + config="${B}/.config"
> + if ! grep -q 'CONFIG_MIPS_APPENDED_DTB=y'
> $config; then
Looking more into this, this Kconfig option doesn't actually exist on mips.
Instead, it has these three related options:
CONFIG_MIPS_NO_APPENDED_DTB
CONFIG_MIPS_ELF_APPENDED_DTB
CONFIG_MIPS_RAW_APPENDED_DTB
I've never used this, but I think you'd have to check for
CONFIG_MIPS_RAW_APPENDED_DTB=y for similar semantics to arm.
And the KERNEL_IMAGETYPE_FOR_MAKE can be either vmlinux.bin, or vmlinuz.bin
(where vmlinuz.bin is similar to the arm zImage).
i.e.:
cat vmlinux.bin <filename>.dtb > vmlinux_w_dtb
cat vmlinuz.bin <filename>.dtb > vmlinuz_w_dtb
To also support CONFIG_MIPS_ELF_APPENDED_DTB, you'd have to
objcopy --update-section .appended_dtb=<filename>.dtb vmlinux
instead.
All untested.
Cheers,
Andre'
More information about the Openembedded-core
mailing list