[U-Boot] rk3288: broken boot

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


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> 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