[U-Boot] rk3288: broken boot

Dr. Philipp Tomsich philipp.tomsich at theobroma-systems.com
Tue Feb 13 11:59:16 UTC 2018


I verified the build for evb-rk3288_defconfig and everything looks fine:

spl/u-boot-spl.bin:     file format binary


Disassembly of section .data:

00000000 <.data>:
       0:       eaffffff        b       0x4	<— this is the extra branch inserted (to be overwritten by mkimage)
       4:       ea000016        b       0x64
        ...
      20:       ea00000f        b       0x64
      24:       e59ff014        ldr     pc, [pc, #20]   ; 0x40
      28:       e59ff014        ldr     pc, [pc, #20]   ; 0x44
      2c:       e59ff014        ldr     pc, [pc, #20]   ; 0x48
      30:       e59ff014        ldr     pc, [pc, #20]   ; 0x4c
      34:       e59ff014        ldr     pc, [pc, #20]   ; 0x50
      38:       e59ff014        ldr     pc, [pc, #20]   ; 0x54
      3c:       e59ff014        ldr     pc, [pc, #20]   ; 0x58


> On 13 Feb 2018, at 12:15, Dr. Philipp Tomsich <philipp.tomsich at theobroma-systems.com> wrote:
> 
> Jagan,
> 
> The boot0-header should insert the additional 4 bytes needed… the resulting
> input format to mkimage is thus compatible with how the ddr.bin images by
> Rockchip where originally formatted  (i.e. prepadded).
> 
> See arch/arm/include/asm/arch-rockchip/boot0.h for the insertion of these
> additional 4 bytes… in the case of U-Boot we pad with a branch (unlike the
> 0-bytes in the prepadded legacy images), so the binary works even when
> loaded in via JTAG.
> 
> For ARMv8 the insertion of the boot0 header should happen via
> 	arch/arm/lib/vectors.S
> 
> Please check that the padding happens as expected.
> If that works, you way want to check that boot0.h is correct (unfortunately
> if contains quite a few #ifdef directives) for the 3288 use-case...
> 
> Regards,
> Philipp.
> 
>> On 13 Feb 2018, at 11:46, Jagan Teki <jagan at amarulasolutions.com <mailto:jagan at amarulasolutions.com>> wrote:
>> 
>> On Fri, Dec 15, 2017 at 2:45 PM, Kever Yang <kever.yang at rock-chips.com <mailto:kever.yang at rock-chips.com>> wrote:
>>> Hi Jagan,
>>> 
>>>    Could you enable global DEBUG and share the log?
>>> 
>>> Thanks,
>>> 
>>> - Kever
>>> 
>>> 
>>> On 12/15/2017 03:08 PM, Jagan Teki wrote:
>>>> 
>>>> Hi Philipp/Kever,
>>>> 
>>>> Issue observed on rk3288 TPL supported board (vyasa), worked on
>>>> previous release v2017.11.
>>>> 
>>>> Tried to bisect but i couldn't do it because of changes in many files any
>>>> help?
>> 
>> I don't understand how rk3288 boards were working since from 2
>> releases, I've bisect this and found the bad
>> 
>> d962e5dadc2cbc21bffd375f29665e5042879e66 is the first bad commit
>> commit d962e5dadc2cbc21bffd375f29665e5042879e66
>> Author: Kever Yang <kever.yang at rock-chips.com <mailto:kever.yang at rock-chips.com>>
>> Date:   Tue Oct 10 16:21:04 2017 +0200
>> 
>>    rockchip: mkimage: use spl_boot0 for all Rockchip SoCs
>> 
>>    Enable the spl_boot0 in SPL and use the pre-padding TAG memory,
>>    the mkimage do not need to pad it but only need to replace the value
>>    with correct TAG value.
>> 
>>    Signed-off-by: Kever Yang <kever.yang at rock-chips.com <mailto:kever.yang at rock-chips.com>>
>>    [Updated:]
>>    Signed-off-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com <mailto:philipp.tomsich at theobroma-systems.com>>
>> 
>> Look like the boot magic can't find it in 0x800 and it can't overwrite
>> 4 bytes, so we need to explicitly specify 0x804 as header size
>> 
>> --- a/tools/rkcommon.c
>> +++ b/tools/rkcommon.c
>> @@ -357,7 +357,7 @@ int rkcommon_vrec_header(struct image_tool_params *params,
>>         * 4 bytes of these images can safely be overwritten using the
>>         * boot magic.
>>         */
>> -       tparams->header_size = RK_SPL_HDR_START;
>> +       tparams->header_size = RK_SPL_HDR_START + 4;
>> 
>>        /* Allocate, clear and install the header */
>>        tparams->hdr = malloc(tparams->header_size);
>> 
>> Please let me know for comments.
>> 
>> Jagan.
> 



More information about the U-Boot mailing list