[U-Boot] [PATCH v4 10/11] Add u-boot-pad.bin target to the Makefile

José Miguel Gonçalves
2012-09-20T00:38:24Z

Tom & Scott,

On 09/20/2012 12:40 AM, Tom Rini wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 09/19/12 16:36, Scott Wood wrote:
>> On 09/19/2012 06:31:29 PM, Tom Rini wrote:
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>
>>> On 09/19/12 15:39, Scott Wood wrote:
>>>> On 09/19/2012 06:25:26 AM, Jos? Miguel Gon?alves wrote:
>>>>> Samsung's S3C24XX SoCs need this in order to generate a
>>>>> binary image with a padded SPL concatenated with U-Boot.
>>>>>
>>>>> Signed-off-by: Jos? Miguel Gon?alves <jose.goncalves@inov.pt>
>>>>> --- Changes for v2: - None
>>>>>
>>>>> Changes for v3: - Changed new binary target name from
>>>>> u-boot-ubl.bin to u-boot-pad.bin
>>>>>
>>>>> Changes for v4: - None --- Makefile | 11 ++++++----- 1 file
>>>>> changed, 6 insertions(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/Makefile b/Makefile index 8738d55..86dedca
>>>>> 100644 --- a/Makefile +++ b/Makefile @@ -433,14 +433,15 @@
>>>>> $(obj)u-boot.sha1: $(obj)u-boot.bin $(obj)u-boot.dis:
>>>>> $(obj)u-boot $(OBJDUMP) -d $< > $@
>>>>>
>>>>> -$(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin
>>>>> $(obj)u-boot.bin +$(obj)u-boot-pad.bin:
>>>>> $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin $(OBJCOPY)
>>>>> ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary
>>>>> $(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin - cat
>>>>> $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin >
>>>>> $(obj)u-boot-ubl.bin - $(obj)tools/mkimage -n
>>>>> $(UBL_CONFIG) -T ublimage \ - -e
>>>>> $(CONFIG_SYS_TEXT_BASE) -d $(obj)u-boot-ubl.bin
>>>>> $(obj)u-boot.ubl - rm $(obj)u-boot-ubl.bin + cat
>>>>> $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin >
>>>>> $(obj)u-boot-pad.bin rm $(obj)spl/u-boot-spl-pad.bin
>>>> This rule lists u-boot-spl.bin as a prerequisite, but it
>>>> doesn't appear to use it -- it uses u-boot-spl instead.
>>>>
>>>> It seems that either spl/Makefile should produce u-boot-spl
>>>> rather than u-boot-spl.bin and let the toplevel Makefile deal
>>>> with converting it to a binary, or spl/Makefile should take
>>>> care of adding any needed padding for the target and the final
>>>> rule should just be a concatenation.
>>> So, if we use a weak PAD_TO value of say 0x1, we could always
>>> "pad" u-boot-spl.bin out and then do the concatenation here and
>>> in a few other targets as well.
>> Yes, or use a variable that includes the linker option, so that it
>> expands to an empty string if padding isn't required.
> Yes, I don't know if say IMAGE_PAD ?= "" and having boards set that to
> - --pad-to=... or just saying --pad-to=$(PAD_SIZE) and PAD_SIZE ?= 0x1
> ends up looking cleaner once all is said and done. First one to try
> both and patch... :)
>

Please check the following patch. It seems to work for me...

diff --git a/Makefile b/Makefile
index 8738d55..fad8b33 100644
--- a/Makefile
+++ b/Makefile
@@ -433,13 +433,12 @@ $(obj)u-boot.sha1: $(obj)u-boot.bin
$(obj)u-boot.dis: $(obj)u-boot
$(OBJDUMP) -d $< > $@

-$(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
- $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary
$(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
- cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin >
$(obj)u-boot-ubl.bin
+$(obj)u-boot-with-spl.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
+ cat $^ > $@
+
+$(obj)u-boot.ubl: $(obj)u-boot-with-spl.bin
$(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
- -e $(CONFIG_SYS_TEXT_BASE) -d $(obj)u-boot-ubl.bin $(obj)u-boot.ubl
- rm $(obj)u-boot-ubl.bin
- rm $(obj)spl/u-boot-spl-pad.bin
+ -e $(CONFIG_SYS_TEXT_BASE) -d $< $@

$(obj)u-boot.ais: $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
$(obj)tools/mkimage -s -n /dev/null -T aisimage \
diff --git a/spl/Makefile b/spl/Makefile
index f96c08e..6ea9f26 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -23,6 +23,8 @@ include $(TOPDIR)/config.mk
# We want the final binaries in this directory
obj := $(OBJTREE)/spl/

+PAD_TO ?= 1
+
HAVE_VENDOR_COMMON_LIB := $(shell [ -f
$(SRCTREE)/board/$(VENDOR)/common/Makefile ] \
&& echo y || echo n)

@@ -124,7 +126,7 @@ $(obj)$(BOARD)-spl.bin: $(obj)u-boot-spl.bin
endif

$(obj)u-boot-spl.bin: $(obj)u-boot-spl
- $(OBJCOPY) $(OBJCFLAGS) -O binary $< $@
+ $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $< $@

GEN_UBOOT = \
UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) | \

Best regards,
Jos? Gon?alves