Makefile: add rules to generate SPL FIT images
Some platforms require more complex U-Boot images than we can easily generate via the mkimage command line, for instance to load additional image files. Introduce a CONFIG_SPL_FIT_SOURCE and CONFIG_SPL_FIT_GENERATOR symbol, which can either hold an .its source file describing the image layout, or, in the second case, a generator tool (script) to create such a source file. This script gets passed the list of device tree files from the CONFIG_OF_LIST variable. A platform or board can define either of those in their defconfig file to allow an easy building of such an image. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
This commit is contained in:
parent
9ea3c35a32
commit
1a12fdc461
2 changed files with 37 additions and 0 deletions
17
Kconfig
17
Kconfig
|
@ -241,6 +241,23 @@ config SPL_FIT_IMAGE_POST_PROCESS
|
||||||
injected into the FIT creation (i.e. the blobs would have been pre-
|
injected into the FIT creation (i.e. the blobs would have been pre-
|
||||||
processed before being added to the FIT image).
|
processed before being added to the FIT image).
|
||||||
|
|
||||||
|
config SPL_FIT_SOURCE
|
||||||
|
string ".its source file for U-Boot FIT image"
|
||||||
|
depends on SPL_FIT
|
||||||
|
help
|
||||||
|
Specifies a (platform specific) FIT source file to generate the
|
||||||
|
U-Boot FIT image. This could specify further image to load and/or
|
||||||
|
execute.
|
||||||
|
|
||||||
|
config SPL_FIT_GENERATOR
|
||||||
|
string ".its file generator script for U-Boot FIT image"
|
||||||
|
depends on SPL_FIT
|
||||||
|
help
|
||||||
|
Specifies a (platform specific) script file to generate the FIT
|
||||||
|
source file used to build the U-Boot FIT image file. This gets
|
||||||
|
passed a list of supported device tree file stub names to
|
||||||
|
include in the generated image.
|
||||||
|
|
||||||
endif # FIT
|
endif # FIT
|
||||||
|
|
||||||
config OF_BOARD_SETUP
|
config OF_BOARD_SETUP
|
||||||
|
|
20
Makefile
20
Makefile
|
@ -833,6 +833,10 @@ quiet_cmd_mkimage = MKIMAGE $@
|
||||||
cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
|
cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
|
||||||
$(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
|
$(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
|
||||||
|
|
||||||
|
quiet_cmd_mkfitimage = MKIMAGE $@
|
||||||
|
cmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(U_BOOT_ITS) -E $@ \
|
||||||
|
$(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
|
||||||
|
|
||||||
quiet_cmd_cat = CAT $@
|
quiet_cmd_cat = CAT $@
|
||||||
cmd_cat = cat $(filter-out $(PHONY), $^) > $@
|
cmd_cat = cat $(filter-out $(PHONY), $^) > $@
|
||||||
|
|
||||||
|
@ -952,6 +956,19 @@ quiet_cmd_cpp_cfg = CFG $@
|
||||||
cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
||||||
-DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
|
-DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
|
||||||
|
|
||||||
|
# Boards with more complex image requirments can provide an .its source file
|
||||||
|
# or a generator script
|
||||||
|
ifneq ($(CONFIG_SPL_FIT_SOURCE),"")
|
||||||
|
U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE))
|
||||||
|
else
|
||||||
|
ifneq ($(CONFIG_SPL_FIT_GENERATOR),"")
|
||||||
|
U_BOOT_ITS := u-boot.its
|
||||||
|
$(U_BOOT_ITS): FORCE
|
||||||
|
$(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \
|
||||||
|
$(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_SPL_LOAD_FIT
|
ifdef CONFIG_SPL_LOAD_FIT
|
||||||
MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
|
MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
|
||||||
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
||||||
|
@ -984,6 +1001,9 @@ u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
|
||||||
$(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE
|
$(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE
|
||||||
$(call if_changed,mkimage)
|
$(call if_changed,mkimage)
|
||||||
|
|
||||||
|
u-boot.itb: u-boot-nodtb.bin dts/dt.dtb $(U_BOOT_ITS) FORCE
|
||||||
|
$(call if_changed,mkfitimage)
|
||||||
|
|
||||||
u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE
|
u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE
|
||||||
$(call if_changed,mkimage)
|
$(call if_changed,mkimage)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue