From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dr. Philipp Tomsich Date: Tue, 13 Feb 2018 12:59:16 +0100 Subject: [U-Boot] rk3288: broken boot In-Reply-To: <2145B975-8719-4A80-A18D-205EC0834B73@theobroma-systems.com> References: <2145B975-8719-4A80-A18D-205EC0834B73@theobroma-systems.com> Message-ID: <4F5E4507-57AA-4C33-BCBF-69A638D5092E@theobroma-systems.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de 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 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 > wrote: >> >> On Fri, Dec 15, 2017 at 2:45 PM, Kever Yang > 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 > >> 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 > >> [Updated:] >> Signed-off-by: Philipp Tomsich > >> >> 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. >