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

From: Dalon Westergreen dalon.westergreen@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@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) + quiet_cmd_mksunxiboot = MKSUNXI $@ cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \ --default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@

From: Dalon Westergreen dalon.westergreen@intel.com
CONFIG_OF_EMBED was primarily enabled to support the stratix10 spl hex file requirements. Since this option now produces a warning during build, and the spl hex can be created using alternate methods, CONFIG_OF_EMBED is no longer needed.
Signed-off-by: Dalon Westergreen dalon.westergreen@intel.com --- configs/socfpga_stratix10_defconfig | 1 - include/configs/socfpga_stratix10_socdk.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index 5ae53a4db9..ae1b9bead1 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -27,7 +27,6 @@ CONFIG_CMD_CACHE=y CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y -CONFIG_OF_EMBED=y CONFIG_DEFAULT_DEVICE_TREE="socfpga_stratix10_socdk" CONFIG_ENV_IS_IN_MMC=y CONFIG_NET_RANDOM_ETHADDR=y diff --git a/include/configs/socfpga_stratix10_socdk.h b/include/configs/socfpga_stratix10_socdk.h index 7b55dd14da..f9ecf9d2df 100644 --- a/include/configs/socfpga_stratix10_socdk.h +++ b/include/configs/socfpga_stratix10_socdk.h @@ -204,6 +204,6 @@ unsigned int cm_get_l4_sys_free_clk_hz(void);
/* SPL SDMMC boot support */ #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 -#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" +#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot-dtb.img"
#endif /* __CONFIG_H */

Am 27.09.2019 um 20:27 schrieb Dalon Westergreen:
From: Dalon Westergreen dalon.westergreen@intel.com
CONFIG_OF_EMBED was primarily enabled to support the stratix10 spl hex file requirements. Since this option now produces a warning during build, and the spl hex can be created using alternate methods, CONFIG_OF_EMBED is no longer needed.
Signed-off-by: Dalon Westergreen dalon.westergreen@intel.com
configs/socfpga_stratix10_defconfig | 1 - include/configs/socfpga_stratix10_socdk.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index 5ae53a4db9..ae1b9bead1 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -27,7 +27,6 @@ CONFIG_CMD_CACHE=y CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y -CONFIG_OF_EMBED=y CONFIG_DEFAULT_DEVICE_TREE="socfpga_stratix10_socdk" CONFIG_ENV_IS_IN_MMC=y CONFIG_NET_RANDOM_ETHADDR=y diff --git a/include/configs/socfpga_stratix10_socdk.h b/include/configs/socfpga_stratix10_socdk.h index 7b55dd14da..f9ecf9d2df 100644 --- a/include/configs/socfpga_stratix10_socdk.h +++ b/include/configs/socfpga_stratix10_socdk.h @@ -204,6 +204,6 @@ unsigned int cm_get_l4_sys_free_clk_hz(void);
/* SPL SDMMC boot support */ #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 -#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" +#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot-dtb.img"
Didn't we have this before? The payload name "u-boot.img" is correct for all configurations. Without CONFIG_OF_EMBED the two above are the same, but changing the name should not be necessary.
Regards, Simon
#endif /* __CONFIG_H */

On Sat, 2019-10-05 at 21:41 +0200, Simon Goldschmidt wrote:
Am 27.09.2019 um 20:27 schrieb Dalon Westergreen:
From: Dalon Westergreen dalon.westergreen@intel.com CONFIG_OF_EMBED was primarily enabled to support the stratix10spl hex file requirements. Since this option now produces awarning during build, and the spl hex can be created usingalternate methods, CONFIG_OF_EMBED is no longer needed. Signed-off-by: Dalon Westergreen dalon.westergreen@intel.com --- configs/socfpga_stratix10_defconfig | 1
- include/configs/socfpga_stratix10_socdk.h | 2 +- 2 files changed, 1
insertion(+), 2 deletions(-) diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfigindex 5ae53a4db9..ae1b9bead1 100644--- a/configs/socfpga_stratix10_defconfig+++ b/configs/socfpga_stratix10_defconfig@@ -27,7 +27,6 @@ CONFIG_CMD_CACHE=y CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENER IC=y- CONFIG_OF_EMBED=y CONFIG_DEFAULT_DEVICE_TREE="socfpga_stratix10_socdk" CON FIG_ENV_IS_IN_MMC=y CONFIG_NET_RANDOM_ETHADDR=ydiff --git a/include/configs/socfpga_stratix10_socdk.h b/include/configs/socfpga_stratix10_socdk.hindex 7b55dd14da..f9ecf9d2df 100644--- a/include/configs/socfpga_stratix10_socdk.h+++ b/include/configs/socfpga_stratix10_socdk.h@@ -204,6 +204,6 @@ unsigned int cm_get_l4_sys_free_clk_hz(void); /* SPL SDMMC boot support */ #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1-#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot-dtb.img"
Didn't we have this before? The payload name "u-boot.img" is correct for all configurations. Without CONFIG_OF_EMBED the two above are the same, but changing the name should not be necessary. Regards,Simon
Correct, but it seems convention is to just use u-boot.img and i would like all the socfpga devicesto do the same thing. --dalon
#endif /* __CONFIG_H */

On Wed, Oct 9, 2019 at 2:56 PM Dalon L Westergreen dalon.westergreen@linux.intel.com wrote:
On Sat, 2019-10-05 at 21:41 +0200, Simon Goldschmidt wrote:
Am 27.09.2019 um 20:27 schrieb Dalon Westergreen:
From: Dalon Westergreen <
dalon.westergreen@intel.com
CONFIG_OF_EMBED was primarily enabled to support the stratix10
spl hex file requirements. Since this option now produces a
warning during build, and the spl hex can be created using
alternate methods, CONFIG_OF_EMBED is no longer needed.
Signed-off-by: Dalon Westergreen <
dalon.westergreen@intel.com
configs/socfpga_stratix10_defconfig | 1 -
include/configs/socfpga_stratix10_socdk.h | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig
index 5ae53a4db9..ae1b9bead1 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -27,7 +27,6 @@ CONFIG_CMD_CACHE=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
-CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="socfpga_stratix10_socdk"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_NET_RANDOM_ETHADDR=y
diff --git a/include/configs/socfpga_stratix10_socdk.h b/include/configs/socfpga_stratix10_socdk.h
index 7b55dd14da..f9ecf9d2df 100644
--- a/include/configs/socfpga_stratix10_socdk.h
+++ b/include/configs/socfpga_stratix10_socdk.h
@@ -204,6 +204,6 @@ unsigned int cm_get_l4_sys_free_clk_hz(void);
/* SPL SDMMC boot support */
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
-#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot-dtb.img"
Didn't we have this before? The payload name "u-boot.img" is correct for
all configurations. Without CONFIG_OF_EMBED the two above are the same,
but changing the name should not be necessary.
Regards,
Simon
Correct, but it seems convention is to just use u-boot.img and i would like all the socfpga devices to do the same thing.
Right. 'u-boot.img' is the one to use. Why do you change it to 'u-boot-dtb.img' then in this patch?
Regards, Simon
--dalon
#endif /* __CONFIG_H */

On Fri, Sep 27, 2019 at 11:27:56AM -0700, Dalon Westergreen wrote:
From: Dalon Westergreen dalon.westergreen@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@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)
quiet_cmd_mksunxiboot = MKSUNXI $@ cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \ --default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@
SoCFPGA folks? This has been posted a few times, is this OK for the next release? Thanks

Am 27.09.2019 um 20:27 schrieb Dalon Westergreen:
From: Dalon Westergreen dalon.westergreen@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@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@gmail.com
Regards, Simon
quiet_cmd_mksunxiboot = MKSUNXI $@ cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \ --default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@

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@intel.com Stratix10 requires a hex image of the spl plus spl devicetree offset tothe Stratix10 onchip memory located at SPL_TEXT_BASE. This patch addsa target to generate a hex file from the u-boot-spl binary including thedtb offset at SPL_TEST_BASE. Objcopy is used to convert the $(SPL_BIN).bin, which includes the spldtb, to a hex file. the --change-address option is used to offset thehex to SPL_TEXT_BASE as objcopy on the spl binary will not result ina hex file appropriately offset at SPL_TEXT_BASE. Signed-off-by: Dalon Westergreen dalon.westergreen@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-splChanges 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/Makefileindex 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_si ze=$(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.splindex 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@gmail.com Regards,Simon
sounds good, i dont believe there are other boards with SPL hex as atarget, at least none that i found. --dalon
quiet_cmd_mksunxiboot = MKSUNXI $@ cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \ --default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@

On Wed, Oct 9, 2019 at 2:57 PM Dalon L Westergreen dalon.westergreen@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@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@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@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) $< $@
participants (4)
-
Dalon L Westergreen
-
Dalon Westergreen
-
Simon Goldschmidt
-
Tom Rini