[U-Boot] [PATCH v2 2/2] spl: socfpga: stratix10: add hex file output for spl image

Marek Vasut marex at denx.de
Fri Sep 7 16:25:20 UTC 2018


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 at gmail.com <mailto:dwesterg at gmail.com> <mailto:dwesterg at gmail.com <mailto:dwesterg at gmail.com>> <mailto:dwesterg at gmail.com <mailto:dwesterg at gmail.com> <mailto:dwesterg at gmail.com <mailto:dwesterg at 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 at dwesterg-mobl <mailto:dwesterg at 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 at dwesterg-mobl <mailto:dwesterg at dwesterg-mobl> u-boot]$ 
> 
> 
> or 
> 
> 
> [dwesterg at dwesterg-mobl <mailto:dwesterg at 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"


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list