[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