rk3399: SPI boot: Return from ROM unsuccessful (with TPL)

Suniel Mahesh sunil at amarulasolutions.com
Sun May 24 21:00:45 CEST 2020

On Sun, May 24, 2020 at 3:52 PM Hugh Cole-Baker <sigmaris at gmail.com> wrote:

> > On 20 May 2020, at 13:08, Jagan Teki <jagan at amarulasolutions.com> wrote:
> >
> > It seems like SPI boot on rk3399 with TPL based is unable to return
> > from ROM or switching to from TPL to SPL is unsuccessful.
> >
> > I have verified board_init_f on spl.c and the control is not even
> > reached here. On the other hand the SPL-alone boot flow works fine
> > from SPI.
> >
> > SPI boot log:
> >
> > U-Boot TPL 2020.07-rc2-00047-gd2ebbbd0e6,`irty (May 20 2020 - 17:22:25)
> > Channel 0: LPDDR4, 50MHz
> > BW=30 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Shze=2048LB
> > Channel 1: LPDR4,50MHz
> > BW=32 CoL=10 Bk=8 CR0 Row=15 CS1 Row=15 CS=2 Die BW=16 Cize=2048LB
> > 256B stride
> > 256B spride
> > lpddr4_set_rate: change freq to 400000000 mhz 0, 1
> > lpddr4_set_rate8 changE freq to 800000000 mhz 0, 0
> > Trying to bont from BOOTROM
> > Returning to boot ROM...
> >
> > Any inputs?
> >
> > Jagan.
> In my experience when building the TPL and SPL image to be written to SPI
> flash, they both have to be processed by mkimage to generate an rkspi
> format image. The approach of using mkimage to produce the idbloader.img
> from the TPL and then simply concatenating the SPL at the end, which
> works for SD/eMMC boot images, doesn't work for SPI and it results in a
> similar error to what you reported, so that might be the cause?
> I use the following command to generate the TPL+SPL image for SPI boot:
> mkimage -n rk3399 -T rkspi -d tpl/u-boot-tpl.bin:spl/u-boot-spl.bin
> spi_idbloader.img
> On a rockpro64 board, the resulting spi_idbloader.img can be written to
> offset 0 in SPI flash, then when booting it the bootrom will start the
> TPL, TPL returns to bootrom and then bootrom will start the SPL.
> There are some additional changes to the dts and config for rockpro64
> needed to fully support SPL to load u-boot proper from SPI flash, I'll
> send patches for these changes.

Hi Hugh,

I have used the above command as indicated by you for generating TPL+SPL.
Flashed SPI flash using below
commands from uboot prompt. Tested roc-rk3399-pc and rockpro64 targets.

bootrom loads TPL, TPL returns back to bootrom and then it hangs.

U-Boot TPL 2020.07-rc2-00204-ge74f823-dirty (May 25 2020 - 00:10:26)
Channel 0: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
Channel 1: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
256B stride
256B stride
lpddr4_set_rate: change freq to 400000000 mhz 0, 1
lpddr4_set_rate: change freq to 800000000 mhz 1, 0
Trying to boot from BOOTROM
Returning to boot ROM...

SPI flash:

load mmc 1:1 $kernel_addr_r idbloader.img
sf probe
sf erase 0 +$filesize
sf write $kernel_addr_r 0 ${filesize}
load mmc 1:1 ${kernel_addr_r} u-boot.itb
sf erase 0x40000 +$filesize
sf write $kernel_addr_r 0x40000 ${filesize}



More information about the U-Boot mailing list