[Buildroot] [PATCH 2/2] boot/uboot: allow to build multiple Uboot images
Arnout Vandecappelle
arnout at mind.be
Fri Sep 2 07:13:09 UTC 2016
On 01-09-16 16:51, Petr Kulhavy wrote:
> Sometimes it is desired to build multiple U-boot images. E.g. one to save into
> flash memory and one for serial load. This was not possible.
So this would be u-boot.bin and u-boot.img, right? I guess actually the only
sane combination would be u-boot.bin together with something else. Oh,
u-boot.elf might be useful as well.
But anyway, this way is much simpler than if we decide which combinations are sane.
>
> This change allows to select any combination of the target formats. They are
> all copied to the image folder.
>
> Signed-off-by: Petr Kulhavy <brain at jikos.cz>
> ---
> boot/uboot/Config.in | 9 +++--
> boot/uboot/uboot.mk | 98 +++++++++++++++++++++++++++++++++-------------------
> 2 files changed, 67 insertions(+), 40 deletions(-)
>
> diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
> index b024b66..23af845 100644
> --- a/boot/uboot/Config.in
> +++ b/boot/uboot/Config.in
> @@ -137,9 +137,7 @@ config BR2_TARGET_UBOOT_NEEDS_DTC
> Select this option if your U-Boot board configuration
> requires the Device Tree compiler to be available.
>
> -choice
> - prompt "U-Boot binary format"
> - default BR2_TARGET_UBOOT_FORMAT_BIN
> +menu "U-Boot binary format"
>
> config BR2_TARGET_UBOOT_FORMAT_AIS
> bool "u-boot.ais"
> @@ -150,6 +148,7 @@ config BR2_TARGET_UBOOT_FORMAT_AIS
>
> config BR2_TARGET_UBOOT_FORMAT_BIN
> bool "u-boot.bin"
> + default true
default y, not true.
>
> config BR2_TARGET_UBOOT_FORMAT_DTB_IMG
> bool "u-boot-dtb.img"
> @@ -255,8 +254,6 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM
> you should select this option and specify the correct name
> in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME.
>
> -endchoice
> -
> config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
> string "U-Boot binary format: custom name"
> depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM
Please update the help text here to say that it can be a space-separate list of
custom names. Also change the prompt name -> names.
> @@ -265,6 +262,8 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
> U-Boot, if it is not one of the default names. For example:
> u-boot_magic.bin
>
> +endmenu
> +
> config BR2_TARGET_UBOOT_OMAP_IFT
> depends on BR2_TARGET_UBOOT_FORMAT_BIN
> depends on BR2_arm || BR2_armeb
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index a62f7be..255ae01 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -37,47 +37,73 @@ endif
> endif
>
> ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y)
> -UBOOT_BIN = u-boot
> +UBOOT_BIN += u-boot
> # To make elf usable for debuging on ARC use special target
> ifeq ($(BR2_arc),y)
> -UBOOT_MAKE_TARGET = mdbtrick
> +UBOOT_MAKE_TARGET += mdbtrick
> endif
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
> -UBOOT_BIN = u-boot.kwb
> -UBOOT_MAKE_TARGET = $(UBOOT_BIN)
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)
> -UBOOT_BIN = u-boot.ais
> -UBOOT_MAKE_TARGET = $(UBOOT_BIN)
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
> -UBOOT_BIN = u-boot.ldr
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)
> -UBOOT_BIN = u-boot-nand.bin
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)
> -UBOOT_BIN = u-boot-dtb.img
> -UBOOT_MAKE_TARGET = all $(UBOOT_BIN)
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)
> -UBOOT_BIN = u-boot.img
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)
> -UBOOT_BIN = u-boot.imx
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
> -UBOOT_BIN = u-boot.sb
> -UBOOT_MAKE_TARGET = $(UBOOT_BIN)
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
> +UBOOT_BIN += u-boot.kwb
> +UBOOT_MAKE_TARGET += u-boot.kwb
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)
> +UBOOT_BIN += u-boot.ais
> +UBOOT_MAKE_TARGET += u-boot.ais
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
> +UBOOT_BIN += u-boot.ldr
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)
> +UBOOT_BIN += u-boot-nand.bin
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)
> +UBOOT_BIN += u-boot-dtb.img
> +UBOOT_MAKE_TARGET += all u-boot-dtb.img
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)
> +UBOOT_BIN += u-boot.img
> +UBOOT_MAKE_TARGET += u-boot.img
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)
> +UBOOT_BIN += u-boot.imx
> +UBOOT_MAKE_TARGET += u-boot.imx
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
> +UBOOT_BIN += u-boot.sb
> +UBOOT_MAKE_TARGET += u-boot.sb
> # mxsimage needs OpenSSL
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
> # BootStream (.sb) is generated by U-Boot, we convert it to SD format
> -UBOOT_BIN = u-boot.sd
> -UBOOT_MAKE_TARGET = u-boot.sb
> +UBOOT_BIN += u-boot.sd
> +UBOOT_MAKE_TARGET += u-boot.sb
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
> -UBOOT_BIN = u-boot.nand
> -UBOOT_MAKE_TARGET = u-boot.sb
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
> +UBOOT_BIN += u-boot.nand
> +UBOOT_MAKE_TARGET += u-boot.sb
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
> -UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
> -else
> -UBOOT_BIN = u-boot.bin
> -UBOOT_BIN_IFT = $(UBOOT_BIN).ift
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
> +UBOOT_BIN += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
> +endif
> +
> +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)
> +UBOOT_BIN += u-boot.bin
> +UBOOT_BIN_IFT = u-boot.bin.ift
> endif
>
> # The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so
> @@ -166,9 +192,11 @@ define UBOOT_BUILD_OMAP_IFT
> endef
>
> define UBOOT_INSTALL_IMAGES_CMDS
> - cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
> + $(foreach f,$(call qstrip,$(UBOOT_BIN)), \
qstrip shouldn't be needed here... All the assignments are unquoted, and custom
name is already qstripped. Did you have a reason to add it?
Regards,
Arnout
> + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/
> + )
> $(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
> - cp -dpf $(@D)/$(UBOOT_MAKE_TARGET) $(BINARIES_DIR))
> + cp -dpf $(@D)/u-boot.sb $(BINARIES_DIR))
> $(if $(BR2_TARGET_UBOOT_SPL),
> $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \
> cp -dpf $(@D)/$(f) $(BINARIES_DIR)/
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list