build: image: add append-dtb-elf helper
authorJohn Thomson <git@johnthomson.fastmail.com.au>
Thu, 15 Oct 2020 09:06:41 +0000 (19:06 +1000)
committerChuanhong Guo <gch981213@gmail.com>
Thu, 29 Oct 2020 13:35:03 +0000 (21:35 +0800)
The mips kernel vmlinux image supports adding an empty ELF section
for DTB to be later inserted into with MIPS_ELF_APPENDED_DTB.

This ELF + inserted DTB image can then be directly booted on some
devices.

Example usage:
image/subtarget.mk:
KERNEL_NAME := vmlinux.elf
KERNEL_INITRAMFS_NAME := vmlinux-initramfs.elf
KERNEL := kernel-bin | append-dtb-elf

On mt7621 memory size needed to be manually specified.

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
include/image-commands.mk

index 740d627fc735cb32d9a5297fd688ab86481166db..ea94059d20c12b8cf4f62683b2281ed3daefbf6b 100644 (file)
@@ -142,6 +142,13 @@ define Build/append-dtb
        cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@
 endef
 
+define Build/append-dtb-elf
+       $(TARGET_CROSS)objcopy \
+               --set-section-flags=.appended_dtb=alloc,contents \
+               --update-section \
+               .appended_dtb=$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@
+endef
+
 define Build/install-dtb
        $(call locked, \
                $(foreach dts,$(DEVICE_DTS), \