Message ID | 1488335129-12363-13-git-send-email-andre.przywara@arm.com |
---|---|
State | Accepted |
Commit | 1a12fdc461421b5a385ab5d7926e5425d429d48e |
Delegated to: | Jagannadha Sutradharudu Teki |
Headers | show |
On 02/28/2017 08:25 PM, Andre Przywara wrote: > 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> > --- Acked-by: Andrew F. Davis <afd@ti.com> > Kconfig | 17 +++++++++++++++++ > Makefile | 20 ++++++++++++++++++++ > 2 files changed, 37 insertions(+) > > diff --git a/Kconfig b/Kconfig > index 81b4226..f3e4243 100644 > --- a/Kconfig > +++ b/Kconfig > @@ -238,6 +238,23 @@ config SPL_FIT_IMAGE_POST_PROCESS > injected into the FIT creation (i.e. the blobs would have been pre- > 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 > > config OF_BOARD_SETUP > diff --git a/Makefile b/Makefile > index 38b42da..e09b0d9 100644 > --- a/Makefile > +++ b/Makefile > @@ -826,6 +826,10 @@ quiet_cmd_mkimage = MKIMAGE $@ > cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ > $(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 $@ > cmd_cat = cat $(filter-out $(PHONY), $^) > $@ > > @@ -945,6 +949,19 @@ quiet_cmd_cpp_cfg = CFG $@ > cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ > -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 > 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) \ > @@ -977,6 +994,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 > $(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 > $(call if_changed,mkimage) > >
On 28 February 2017 at 19:25, Andre Przywara <andre.przywara@arm.com> wrote: > 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> > --- > Kconfig | 17 +++++++++++++++++ > Makefile | 20 ++++++++++++++++++++ > 2 files changed, 37 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> But please can you mention this in the documentation at doc/uImage.FIT?
diff --git a/Kconfig b/Kconfig index 81b4226..f3e4243 100644 --- a/Kconfig +++ b/Kconfig @@ -238,6 +238,23 @@ config SPL_FIT_IMAGE_POST_PROCESS injected into the FIT creation (i.e. the blobs would have been pre- 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 config OF_BOARD_SETUP diff --git a/Makefile b/Makefile index 38b42da..e09b0d9 100644 --- a/Makefile +++ b/Makefile @@ -826,6 +826,10 @@ quiet_cmd_mkimage = MKIMAGE $@ cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ $(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 $@ cmd_cat = cat $(filter-out $(PHONY), $^) > $@ @@ -945,6 +949,19 @@ quiet_cmd_cpp_cfg = CFG $@ cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ -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 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) \ @@ -977,6 +994,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 $(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 $(call if_changed,mkimage)
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> --- Kconfig | 17 +++++++++++++++++ Makefile | 20 ++++++++++++++++++++ 2 files changed, 37 insertions(+)