[U-Boot] [RESEND PATCH v3 1/2] Makefile: Add target to generate hex output for combined spl and dtb

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Wed Oct 9 13:34:18 UTC 2019


On Wed, Oct 9, 2019 at 2:57 PM Dalon L Westergreen
<dalon.westergreen at linux.intel.com> wrote:
>
> On Sat, 2019-10-05 at 21:40 +0200, Simon Goldschmidt wrote:
>
> Am 27.09.2019 um 20:27 schrieb Dalon Westergreen:
>
> From: Dalon Westergreen <
>
> dalon.westergreen at intel.com
>
> >
>
>
> Stratix10 requires a hex image of the spl plus spl devicetree offset to
>
> the Stratix10 onchip memory located at SPL_TEXT_BASE.  This patch adds
>
> a target to generate a hex file from the u-boot-spl binary including the
>
> dtb offset at SPL_TEST_BASE.
>
>
> Objcopy is used to convert the $(SPL_BIN).bin, which includes the spl
>
> dtb, to a hex file.  the --change-address option is used to offset the
>
> hex to SPL_TEXT_BASE as objcopy on the spl binary will not result in
>
> a hex file appropriately offset at SPL_TEXT_BASE.
>
>
> Signed-off-by: Dalon Westergreen <
>
> dalon.westergreen at intel.com
>
> >
>
>
> ---
>
> Changes in v3:
>
>   -> Cleanup commit message and better describe the problem being
>
>      resolved
>
>   -> Remove extraneous hunk
>
>   -> use SPL_BIN instead of u-boot-spl
>
> Changes in v2:
>
>   -> Move spl hex file generation to SPL Makefile
>
>   -> Create hexfile from $(SPL_BIN).bin which will include the dtb
>
>      ifneq(build_dtb,)
>
> ---
>
>   Makefile             | 8 +++-----
>
>   scripts/Makefile.spl | 7 +++++++
>
>   2 files changed, 10 insertions(+), 5 deletions(-)
>
>
> diff --git a/Makefile b/Makefile
>
> index 1d9ade948b..0bc9d1589f 100644
>
> --- a/Makefile
>
> +++ b/Makefile
>
> @@ -1152,11 +1152,6 @@ OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
>
>   $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \
>
>   $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),-R .bootpg -R .resetvec)
>
>
>
> -OBJCOPYFLAGS_u-boot-spl.hex = $(OBJCOPYFLAGS_u-boot.hex)
>
> -
>
> -spl/u-boot-spl.hex: spl/u-boot-spl FORCE
>
> - $(call if_changed,objcopy)
>
> -
>
>   binary_size_check: u-boot-nodtb.bin FORCE
>
>   @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
>
>   map_size=$(shell cat u-boot.map | \
>
> @@ -1756,6 +1751,9 @@ spl/u-boot-spl.bin: spl/u-boot-spl
>
>   @:
>
>   $(SPL_SIZE_CHECK)
>
>
>
> +spl/u-boot-spl.hex: spl/u-boot-spl
>
> + @:
>
> +
>
>   spl/u-boot-spl: tools prepare \
>
>   $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \
>
>   $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)
>
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>
> index 7af6b120b6..551002194e 100644
>
> --- a/scripts/Makefile.spl
>
> +++ b/scripts/Makefile.spl
>
> @@ -216,6 +216,8 @@ ifneq ($(CONFIG_TARGET_SOCFPGA_GEN5)$(CONFIG_TARGET_SOCFPGA_ARRIA10),)
>
>   ALL-y += $(obj)/$(SPL_BIN).sfp
>
>   endif
>
>
>
> +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
>
> +
>
>   ifdef CONFIG_ARCH_SUNXI
>
>   ALL-y += $(obj)/sunxi-spl.bin
>
>
>
> @@ -363,6 +365,11 @@ endif
>
>   $(obj)/$(SPL_BIN).sfp: $(obj)/$(SPL_BIN).bin FORCE
>
>   $(call if_changed,mkimage)
>
>
>
> +OBJCOPYFLAGS_$(SPL_BIN).hex := -I binary -O ihex --change-address=$(CONFIG_SPL_TEXT_BASE)
>
> +
>
> +$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN).bin FORCE
>
> + $(call if_changed,objcopy)
>
> +
>
>
> While I like the idea of this patch, and I *think* that this is what an
>
> SPL hex should look like for all platforms, I'm not 100% sure that
>
> globally changing the rule and objcopy flags for u-boot-spl.hex is OK
>
> for all architectures?
>
>
> Let's try to apply this at the start of next merge window, then we'll
>
> hopefully see if this does break any board.
>
>
> Reviewed-by: Simon Goldschmidt <
>
> simon.k.r.goldschmidt at gmail.com
>
> >
>
>
> Regards,
>
> Simon
>
>
> sounds good, i dont believe there are other boards with SPL hex as a
>
> target, at least none that i found.

Even better. Sadly, the Quartus gen5 tools require the HEX to be at offset 0
to create a 'boot-from-FPGA' image, but since that one is easy enough to
create without Makefile help, I think this patch is still ok.

Regards,
Simon

>
>
> --dalon
>
>
>   quiet_cmd_mksunxiboot = MKSUNXI $@
>
>   cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \
>
>   --default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@
>
>
>


More information about the U-Boot mailing list