[U-Boot] [PATCH v2 1/2] spl: socfpga: only gen5 devices and arria10 require sfp image

Only the Cyclone5/Arria5 and Arria10 devices require the sfp formated image for booting. This path ensures that the file is only generated for those devices.
Signed-off-by: Dalon Westergreen dwesterg@gmail.com --- scripts/Makefile.spl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 252f13826d..76d08fd92b 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -188,7 +188,8 @@ ALL-y += $(obj)/$(BOARD)-spl.bin endif
ifdef CONFIG_ARCH_SOCFPGA -ALL-y += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp endif
ifdef CONFIG_ARCH_SUNXI

Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen dwesterg@gmail.com --- configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex endif
ifdef CONFIG_ARCH_SUNXI @@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy)
+OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex + +$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE + $(call if_changed,objcopy) + LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.

On Thu, Sep 6, 2018 at 5:04 AM Dalon Westergreen dwesterg@gmail.com wrote:
Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
Although not running a Stratix10, I also need a hex image for spl to boot unconfigured CycloneV devices. However, for this, it is enough to objcopy u-boot.spl.sfp to hex and add the resulting file to the FPGA configuration image.
Quartus does complain about the format a bit, but it does work. Is this different for Stratix10?
Simon
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen dwesterg@gmail.com
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex endif
ifdef CONFIG_ARCH_SUNXI @@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy)
+OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex
+$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE
$(call if_changed,objcopy)
LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
2.17.1
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

On Thu, 2018-09-06 at 07:51 +0200, Simon Goldschmidt wrote:
On Thu, Sep 6, 2018 at 5:04 AM Dalon Westergreen dwesterg@gmail.com wrote:
Stratix10 requires a hex image of the spl for boot. The heximage is added to the FPGA configuration image and loaded tothe processor memory by the configuration engine. Although not running a Stratix10, I also need a hex image for spl toboot unconfigured CycloneV devices.However, for this, it is enough to objcopy u- boot.spl.sfp to hex andadd the resulting file to the FPGA configuration image. Quartus does complain about the format a bit, but it does work. Isthis different for Stratix10?
The difference is that in stratix10 the SDM loads the spl image into the HPS onchip ram. The SPL image is actually a part of the fpga configuration image. The tool that adds the image to the fpga configuration image validates its address span, so using objcopy on the binary requires a --change- address. Since the file is always needed for stratix10, it seems prudent to generate it as part of the build.
Simon
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source Signed-off-by: Dalon Westergreen dwesterg@gmail.com--- configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfigindex dceadff439..17cc732cbe 100644--- a/configs/socfpga_stratix10_defconfig+++ b/configs/socfpga_stratix10_defconfig@@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y+CONFIG_OF_EMBED=ydiff --git a/scripts/Makefile.spl b/scripts/Makefile.splindex 76d08fd92b..b09bd40b2a 100644--- a/scripts/Makefile.spl+++ b/scripts/Makefile.spl@@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp+ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex endif ifdef CONFIG_ARCH_SUNXI@@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit- spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy) +OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex++$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE+ $(call if_changed,objcopy)+ LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL) # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.--2.17.1 _______________________________________________U-Boot mailing listU- Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot_______________________________________... mailing listU-Boot@lists.denx.dehttps://lists.denx.de/listinfo/u-boot

On 09/06/2018 05:02 AM, Dalon Westergreen wrote:
Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen dwesterg@gmail.com
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
endif
ifdef CONFIG_ARCH_SUNXI @@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy)
+OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex
+$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE
- $(call if_changed,objcopy)
This is generic, separate patch please.
LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.

On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote:
On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The heximage is added to the FPGA configuration image and loaded tothe processor memory by the configuration engine. v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source Signed-off-by: Dalon Westergreen dwesterg@gmail.com--- configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfigindex dceadff439..17cc732cbe 100644--- a/configs/socfpga_stratix10_defconfig+++ b/configs/socfpga_stratix10_defconfig@@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y+CONFIG_OF_EMBED=y Why is this needed ? And where did the objcopy hack go ? What is theexplanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot- spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine.You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
diff --git a/scripts/Makefile.spl b/scripts/Makefile.splindex 76d08fd92b..b09bd40b2a 100644--- a/scripts/Makefile.spl+++ b/scripts/Makefile.spl@@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL- $(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL- $(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp+ALL- $(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ? endif ifdef CONFIG_ARCH_SUNXI@@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86- 16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit- spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy) +OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex++$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE+ $(call if_changed,objcopy)+ This is generic, separate patch please. LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
Will do
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.

On 09/06/2018 03:39 PM, Dalon L Westergreen wrote:
On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote:
On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
endif
ifdef CONFIG_ARCH_SUNXI @@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy)
+OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex
+$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE
- $(call if_changed,objcopy)
This is generic, separate patch please.
LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
Will do
Thanks

On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote:
On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote:Stratix10 requires a hex image of the spl for boot. The heximage is added to the FPGA configuration image and loaded tothe processor memory by the configuration engine. v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto: dwesterg@gmail.com>--- configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfigindex dceadff439..17cc732cbe 100644--- a/configs/socfpga_stratix10_defconfig+++ b/configs/socfpga_stratix10_defconfig@@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y+CONFIG_OF_EMBED=y Why is this needed ? And where did the objcopy hack go ? What is theexplanation here ? You suggested the use of CONFIG_OF_EMBED as an alternative to using theu-boot- spl-dtb.bin for objcopy.The intent is to ensure that the spl elf has the dtb included, and thena simple objcopy to elf to hex is fine.You no longer need the --change-address as the elf indicates the correctstart address, unlike the binary. And that's fine with your usecase ? Fine be me then ...
Is it possible to apply CONFIG_OF_EMBED=y only to the SPL build?
diff --git a/scripts/Makefile.spl b/scripts/Makefile.splindex 76d08fd92b..b09bd40b2a 100644--- a/scripts/Makefile.spl+++ b/scripts/Makefile.spl@@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL- $(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL- $(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp+ALL- $(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ? endif ifdef CONFIG_ARCH_SUNXI@@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86- 16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit- spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy) +OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex++$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE+ $(call if_changed,objcopy)+ This is generic, separate patch please. LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL) Will do Thanks

On 09/06/2018 07:40 PM, Dalon L Westergreen wrote:
On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote:
On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
Is it possible to apply CONFIG_OF_EMBED=y only to the SPL build?
I think so, and if not, create CONFIG_SPL_OF_EMBED

On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote:
On 09/06/2018 03:39 PM, Dalon L Westergreen wrote:
On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote:
On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
endif
ifdef CONFIG_ARCH_SUNXI @@ -299,6 +300,11 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE $(call if_changed,objcopy)
+OBJCOPYFLAGS_$(SPL_BIN).hex = -O ihex
+$(obj)/$(SPL_BIN).hex: $(obj)/$(SPL_BIN) FORCE
- $(call if_changed,objcopy)
This is generic, separate patch please.
LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
Will do
Thanks

On 09/06/2018 11:26 PM, Dalon L Westergreen wrote:
On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote:
On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.

On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote:
On 09/06/2018 11:26 PM, Dalon L Westergreen wrote:On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote:On 09/06/2018 03:39 PM, Dalon L Westergreen wrote:On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote:On 09/06/2018 05:02 AM, Dalon Westergreen wrote:Stratix10 requires a hex image of the spl for boot. The heximage is added to the FPGA configuration image and loaded tothe processor memory by the configuration engine. v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto: dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>> --- configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfigindex dceadff439..17cc732cbe 100644--- a/configs/socfpga_stratix10_defconfig+++ b/configs/socfpga_stratix10_defconfig@@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y+CONFIG_OF_EMBED=y Why is this needed ? And where did the objcopy hack go ? What is theexplanation here ? You suggested the use of CONFIG_OF_EMBED as an alternative to using theu-boot- spl-dtb.bin for objcopy.The intent is to ensure that the spl elf has the dtb included, and thena simple objcopy to elf to hex is fine.You no longer need the --change-address as the elf indicates the correctstart address, unlike the binary. And that's fine with your usecase ? Fine be me then ... diff --git a/scripts/Makefile.spl b/scripts/Makefile.splindex 76d08fd92b..b09bd40b2a 100644--- a/scripts/Makefile.spl+++ b/scripts/Makefile.spl@@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL- $(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL- $(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp+ALL- $(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ? This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be anSPL target, but rather atarget for creating combined u-boot + spl images at the top level. Adding ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex in Makefile.spl andCONFIG_SPL_TARGET="u-boot-spl.hex"in the socfpga_stratix10_config results in a build failure with no target for u-boot-spl.hex I mean, just define CONFIG_SPL_TARGET and it should generate thematching file automatically. See the README, it explains this macro.
I still get:make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop. When i look at all of the other defined CONFIG_SPL_TARGET, for example [dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *......include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCEMakefile:u-boot.ubl: u-boot-with-spl.bin FORCE[dwesterg@dwesterg-mobl u- boot]$ or [dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u- boot.uim FORCEinclude/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE you find the corresponding target in the makefile. There is no target for u- boot-spl.hex,furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image. ifdef CONFIG_TPLSPL_PAYLOAD := tpl/u-boot-with-tpl.binelseSPL_PAYLOAD := u- boot.binendif OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ --pad-to=$(CONFIG_SPL_PAD_TO)u-boot-with- spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE $(call if_changed,pad_cat) So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGETi see combine spl and u-boot. --dalon

On 09/07/2018 06:15 PM, Dalon L Westergreen wrote:
On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote:
On 09/06/2018 11:26 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote: On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.
I still get:
make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop.
When i look at all of the other defined CONFIG_SPL_TARGET, for example
I guess you did add the u-boot-spl.hex target already ?
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *
...
...
include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
Makefile:u-boot.ubl: u-boot-with-spl.bin FORCE
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$
or
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *
arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
include/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
you find the corresponding target in the makefile. There is no target for u-boot-spl.hex,
furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image.
ifdef CONFIG_TPL
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
SPL_PAYLOAD := u-boot.bin
endif
OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGET
i see combine spl and u-boot.
Try this:
include/configs/ls1046a_common.h:#define CONFIG_SPL_TARGET "spl/u-boot-spl.pbl"

On Fri, 2018-09-07 at 18:25 +0200, Marek Vasut wrote:
On 09/07/2018 06:15 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote: On 09/06/2018 11:26 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote: On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.
I still get:
make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop.
When i look at all of the other defined CONFIG_SPL_TARGET, for example
I guess you did add the u-boot-spl.hex target already ?
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *
...
...
include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
Makefile:u-boot.ubl: u-boot-with-spl.bin FORCE
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$
or
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *
arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
include/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
you find the corresponding target in the makefile. There is no target for u-boot-spl.hex,
furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image.
ifdef CONFIG_TPL
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
SPL_PAYLOAD := u-boot.bin
endif
OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGET
i see combine spl and u-boot.
Try this:
include/configs/ls1046a_common.h:#define CONFIG_SPL_TARGET "spl/u-boot-spl.pbl"
True, but i would still need to add an spl/u-boot-spl.hex target in the main Makefile. What is the benefit of doing this over just adding the hex target in Makefile.spl?

On 09/07/2018 06:40 PM, Dalon L Westergreen wrote:
On Fri, 2018-09-07 at 18:25 +0200, Marek Vasut wrote:
On 09/07/2018 06:15 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote: On 09/06/2018 11:26 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote: On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.
I still get:
make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop.
When i look at all of the other defined CONFIG_SPL_TARGET, for example
I guess you did add the u-boot-spl.hex target already ?
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *
...
...
include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
Makefile:u-boot.ubl: u-boot-with-spl.bin FORCE
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$
or
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *
arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
include/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
you find the corresponding target in the makefile. There is no target for u-boot-spl.hex,
furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image.
ifdef CONFIG_TPL
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
SPL_PAYLOAD := u-boot.bin
endif
OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGET
i see combine spl and u-boot.
Try this:
include/configs/ls1046a_common.h:#define CONFIG_SPL_TARGET "spl/u-boot-spl.pbl"
True, but i would still need to add an spl/u-boot-spl.hex target in the main Makefile.
What is the benefit of doing this over just adding the hex target in Makefile.spl?
My whole point was that I'd like this: +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex to go away.
If you need to add a target to a Makefile, that's fine of course.

On Fri, 2018-09-07 at 19:36 +0200, Marek Vasut wrote:
On 09/07/2018 06:40 PM, Dalon L Westergreen wrote: On Fri, 2018-09-07 at 18:25 +0200, Marek Vasut wrote: On 09/07/2018 06:15 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote: On 09/06/2018 11:26 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote: On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.
I still get:
make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop.
When i look at all of the other defined CONFIG_SPL_TARGET, for example
I guess you did add the u-boot-spl.hex target already ?
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *
...
...
include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
Makefile:u-boot.ubl: u-boot-with-spl.bin FORCE
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$
or
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *
arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
include/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
you find the corresponding target in the makefile. There is no target for u-boot-spl.hex,
furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image.
ifdef CONFIG_TPL
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
SPL_PAYLOAD := u-boot.bin
endif
OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGET
i see combine spl and u-boot.
Try this:
include/configs/ls1046a_common.h:#define CONFIG_SPL_TARGET "spl/u-boot-spl.pbl"
True, but i would still need to add an spl/u-boot-spl.hex target in the main Makefile.
What is the benefit of doing this over just adding the hex target in Makefile.spl?
My whole point was that I'd like this: +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex to go away.
If you need to add a target to a Makefile, that's fine of course.
Should i move the sfp generation stuff while I am at it? use CONFIG_SPL_TARGET in the gen5 /Arria10 devices as well? I think it would clean things up.

On 09/07/2018 08:02 PM, Westergreen, Dalon wrote:
On Fri, 2018-09-07 at 19:36 +0200, Marek Vasut wrote:
On 09/07/2018 06:40 PM, Dalon L Westergreen wrote: On Fri, 2018-09-07 at 18:25 +0200, Marek Vasut wrote: On 09/07/2018 06:15 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 23:56 +0200, Marek Vasut wrote: On 09/06/2018 11:26 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 15:41 +0200, Marek Vasut wrote: On 09/06/2018 03:39 PM, Dalon L Westergreen wrote: On Thu, 2018-09-06 at 12:09 +0200, Marek Vasut wrote: On 09/06/2018 05:02 AM, Dalon Westergreen wrote: Stratix10 requires a hex image of the spl for boot. The hex image is added to the FPGA configuration image and loaded to the processor memory by the configuration engine.
v2: -> add CONFIG_OF_EMBED to include dtb in elf -> generate hex from elf source
Signed-off-by: Dalon Westergreen <dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com> <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com <mailto:dwesterg@gmail.com mailto:dwesterg@gmail.com>>>>>
configs/socfpga_stratix10_defconfig | 1 + scripts/Makefile.spl | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/configs/socfpga_stratix10_defconfig b/configs/socfpga_stratix10_defconfig index dceadff439..17cc732cbe 100644 --- a/configs/socfpga_stratix10_defconfig +++ b/configs/socfpga_stratix10_defconfig @@ -56,3 +56,4 @@ CONFIG_DM_USB=y CONFIG_USB_DWC2=y CONFIG_USB_STORAGE=y CONFIG_USE_TINY_PRINTF=y +CONFIG_OF_EMBED=y
Why is this needed ? And where did the objcopy hack go ? What is the explanation here ?
You suggested the use of CONFIG_OF_EMBED as an alternative to using the u-boot-spl-dtb.bin for objcopy. The intent is to ensure that the spl elf has the dtb included, and then a simple objcopy to elf to hex is fine. You no longer need the --change-address as the elf indicates the correct start address, unlike the binary.
And that's fine with your usecase ? Fine be me then ...
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 76d08fd92b..b09bd40b2a 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -190,6 +190,7 @@ endif ifdef CONFIG_ARCH_SOCFPGA ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex
CONFIG_SPL_TARGET "u-boot-spl.hex" can replace this addition I think ?
This doesnt actually work as CONFIG_SPL_TARGET doesnt appear to be an SPL target, but rather a target for creating combined u-boot + spl images at the top level. Adding
ALL-$(CONFIG_SPL_TARGET) += $(obj)/$(SPL_BIN).hex
in Makefile.spl and CONFIG_SPL_TARGET="u-boot-spl.hex" in the socfpga_stratix10_config
results in a build failure with no target for u-boot-spl.hex
I mean, just define CONFIG_SPL_TARGET and it should generate the matching file automatically. See the README, it explains this macro.
I still get:
make: *** No rule to make target 'u-boot-spl.hex', needed by 'all'. Stop.
When i look at all of the other defined CONFIG_SPL_TARGET, for example
I guess you did add the u-boot-spl.hex target already ?
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-spl.bin *
...
...
include/configs/uniphier.h:#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
Makefile:OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
Makefile:u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
Makefile:u-boot.ubl: u-boot-with-spl.bin FORCE
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$
or
[dwesterg@dwesterg-mobl mailto:dwesterg@dwesterg-mobl u-boot]$ grep -R u-boot-with-nand-spl.imx *
arch/arm/mach-imx/Makefile:u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
include/configs/m53evk.h:#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
Makefile:u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
you find the corresponding target in the makefile. There is no target for u-boot-spl.hex,
furthermore the CONFIG_SPL_TARGET seems to combine spl with uboot to create a combined image.
ifdef CONFIG_TPL
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
SPL_PAYLOAD := u-boot.bin
endif
OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
So I can add a simple u-boot-spl.hex target, but all of the other CONFIG_SPL_TARGET
i see combine spl and u-boot.
Try this:
include/configs/ls1046a_common.h:#define CONFIG_SPL_TARGET "spl/u-boot-spl.pbl"
True, but i would still need to add an spl/u-boot-spl.hex target in the main Makefile.
What is the benefit of doing this over just adding the hex target in Makefile.spl?
My whole point was that I'd like this: +ALL-$(CONFIG_TARGET_SOCFPGA_STRATIX10) += $(obj)/$(SPL_BIN).hex to go away.
If you need to add a target to a Makefile, that's fine of course.
Should i move the sfp generation stuff while I am at it? use CONFIG_SPL_TARGET
in the gen5 /Arria10 devices as well? I think it would clean things up.
Sure, please do.

On 09/06/2018 05:02 AM, Dalon Westergreen wrote:
Only the Cyclone5/Arria5 and Arria10 devices require the sfp formated image for booting. This path ensures that the file is only generated for those devices.
Signed-off-by: Dalon Westergreen dwesterg@gmail.com
scripts/Makefile.spl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 252f13826d..76d08fd92b 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -188,7 +188,8 @@ ALL-y += $(obj)/$(BOARD)-spl.bin endif
ifdef CONFIG_ARCH_SOCFPGA -ALL-y += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp endif
ifdef CONFIG_ARCH_SUNXI
What about adding Kconfig option , something like CONFIG_TARGET_SOCFPGA_SFP , using it above and enabling it on Gen5 and A10 ? That way ,we won't have two entries with the same content.

On Thu, 2018-09-06 at 12:08 +0200, Marek Vasut wrote:
On 09/06/2018 05:02 AM, Dalon Westergreen wrote:
Only the Cyclone5/Arria5 and Arria10 devices require the sfp formated image for booting. This path ensures that the file is only generated for those devices.
Signed-off-by: Dalon Westergreen dwesterg@gmail.com
scripts/Makefile.spl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 252f13826d..76d08fd92b 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -188,7 +188,8 @@ ALL-y += $(obj)/$(BOARD)-spl.bin endif
ifdef CONFIG_ARCH_SOCFPGA -ALL-y += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_GEN5) += $(obj)/$(SPL_BIN).sfp +ALL-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += $(obj)/$(SPL_BIN).sfp endif
ifdef CONFIG_ARCH_SUNXI
What about adding Kconfig option , something like CONFIG_TARGET_SOCFPGA_SFP , using it above and enabling it on Gen5 and A10 ? That way ,we won't have two entries with the same content.
Good idea.
participants (5)
-
Dalon L Westergreen
-
Dalon Westergreen
-
Marek Vasut
-
Simon Goldschmidt
-
Westergreen, Dalon