[U-Boot] u-boot Boot issue about rk3188

Andy Yan
2017-09-27T01:48:17Z

Hi Pawel:

On 2017年09月26日 19:34, Paweł Jarosz wrote:
> Hi,
>
>
> W dniu 25.09.2017 o 12:29, Heiko Stübner pisze:
>> Hi Andy,
>>
>> Am Montag, 25. September 2017, 17:45:03 CEST schrieb Andy Yan:
>>> On 2017年09月22日 13:56, Heiko Stuebner wrote:
>>>> Am Freitag, 22. September 2017, 08:50:49 CEST schrieb Andy Yan:
>>>>> Hi Heiko:
>>>>>
>>>>> On 2017年09月22日 08:24, Andy Yan wrote:
>>>>>> Hi Heiko:
>>>>>>
>>>>>> On 2017年09月21日 22:55, Heiko Stübner wrote:
>>>>>>> Hi Andy,
>>>>>>>
>>>>>>> Am Donnerstag, 21. September 2017, 22:03:32 CEST schrieb Andy Yan:
>>>>>>>> Hi Heiko:
>>>>>>>> I try to boot the upstream u-boot-rockchip branch on my rk3188
>>>>>>>> board
>>>>>>>> with(rock_defconfig)
>>>>>>>>
>>>>>>>> But I got this error:
>>>>>>>> early_init()
>>>>>>>> nit_and_scan() returned error -22
>>>>>>>> early_init() failed: -22
>>>>>>>> ERROR ### Please RESET the board ###
>>>>>>>>
>>>>>>>> the current commit head is: 782088d("rockchip: imply ADC and
>>>>>>>> SARADC_ROCKCHIP
>>>>>>>> on supported SoCs") Do you ever meet something like this?
>>>>>>> that is very strange. When testing Philipp's branch, I was also
>>>>>>> testing the
>>>>>>> commit you mention to see if anything broke since I last changed
>>>>>>> u-boot
>>>>>>> on my radxa rock. And the above commit started just fine, when
>>>>>>> starting
>>>>>>> from an sd-card.
>>>>>>>
>>>>>>> Not sure from which medium you're starting though. But from what I
>>>>>>> remember Pawel got nand working in his rk3066 series, but that
>>>>>>> is not
>>>>>>> yet merged.
>>>>>>>
>>>>>>       I boot from emmc, I will go on hack on it.
>>>>>        I finally can boot it with the rock_defconfig. But the way to
>>>>>
>>>>> package the tpl spl u-boot a little different.
>>>>>
>>>>>        cat ${DIR}/out/tpl/u-boot-tpl.bin > tplspl.bin
>>>>>        truncate -s 1020 tplspl.bin
>>>>>             sed -i "/^/{1s/^/RK31/}" tplspl.bin
>>>>>       cat ${DIR}/out/spl/u-boot-spl.bin > spl.bin
>>>>>       truncate -s %2048 spl.bin
>>>>>       cat spl.bin >> tplspl.bin
>>>>>             Then the tplspl.bin + u-boot.bin should package by
>>>>>
>>>>> boot_merger(tplsplb.in for FLashData, u-boot.bin for FlashBoot) from
>>>>>
>>>>> rockchip downstream u-boot repo:
>>>>>       ./tools/boot_merger ./tools/rk_tools/RKBOOT/RK310BMINIALL.ini
>>>>>             download to emmc by "upgrade_tool ul" command.
>>>>> According to our
>>>>>
>>>>> bootrom code author, the rk31(maybe include rk30) bootrom has a
>>>>> limitation that the idbblock
>>>>> couldn't accessed by upgrade_tool wl command.
>>>> I do have a script handling that [0]. At least for the sd-card variant
>>>> a simple "openssl rc4" works just as well as the legacy boot_merger
>>>> :-)
>>>>
>>>> Heiko
>>>>
>>>> [0]
>>>> https://github.com/mmind/u-boot-rockchip/commit/81458bde873d6cf588e082ccf
>>>>
>>>> 556e818f46ad9df
>>>      Is there a way to download the out that generated by[0] to
>>> emmc/flash? It seems that the upgrate_tool can't access 0x40 of the
>>> emmc/nand on rk3188.
>>>
>>> you have the @rock-chips.com address, so I'd guess you might even have
>>> the better resources to find out ;-)  .
>>>
>>> In any case, as I said I haven't looked at all at the internal
>>> storage on
>>> my radxarock so far.
>>>
>>> But as the rk3066 and rk3188 are so similar I've added Paweł.
>>>
>>> @Paweł: you had uboot starting from nand on your rk3066 board, maybe
>>> you
>>> could describe how you wrote it to the board so maybe Andy can check if
>>> he needs to adapt anything?
> Almost all knowledge i had about rk3066 boot process was from Heiko
> and bootrom disassembly.
>
> Andy, do you have any output on serial console ? (TPL, Uboot-spl or
> anything else)
> Can you compile u-boot with #define DEBUG in rk3188_common and send
> the output?

Here is my console output [1] that boot from a nand on rk3188 board.
But I found that the board will reset again and again in spl stage if I
defined DEBUG in rk3188_common [2]

> Also you can check size of u-boot tpl (less than 1kb), u-boot spl +
> tpl (less than sram size on rk3188, i think it's 32KB)? This is
> important as you wont get any output on serial console if you don't
> meet this conditions.
> Also on rk3066 bootmerger FlashBoot size + FlashData size should be
> less than 256KB (32KB for FlashData, and the rest for FlashBoot, if
> it's more than 256KB, you get few lines of errors when flashing with
> upgrade_tool and might have no output on serial console)
>
Bellow is my binary blob size. And I got a knowledge that the safe size
of  FlashBoot  + FlashData shoud be less than 128kb(some flashed can up
to 256, but some may not).

-rwxrwxr-x 1 andy andy 788  u-boot-tpl.bin
-rwxrwxr-x 1 andy andy 15956 u-boot-spl.bin
-rw-rw-r-- 1 andy andy 98249 u-boot.bin

> One more thing ... to boot from usb with openssl rc4 method on rk3066
> i think only one back to bootrom is needed, two if you are booting
> from nand.
>
[1]
tpl-1
Returning to boot ROM...
tpl-2
spl
first data training fail!

U-Boot SPL 2017.09-00107-g99c4c38-dirty (Sep 27 2017 - 08:46:48)
Returning to boot ROM...

U-Boot 2017.09-00107-g99c4c38-dirty (Sep 27 2017 - 08:46:48 +0800)

Model: Radxa Rock
DRAM:  2 GiB
MMC:
MMC Device 0 not found
*** Warning - No MMC card found, using default environment

In:    serial at 20064000
Out:   serial at 20064000
Err:   serial at 20064000
Model: Radxa Rock
=>

[2]
tpl-1
Returning to boot ROM...
tpl-2
spl
spl_early_init()
malloc_simple: size=18, ptr=18, limit=2000: 10085ff0
malloc_simple: size=54, ptr=6c, limit=2000: 10086008
malloc_simple: size=4, ptr=70, limit=2000: 1008605c
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'root_driver'
- not found
malloc_simple: size=18, ptr=88, limit=2000: 10086060
malloc_simple: size=54, ptr=dc, limit=2000: 10086078
malloc_simple: size=18, ptr=f4, limit=2000: 100860cc
malloc_simple: size=54, ptr=148, limit=2000: 100860e4
Bound device reset to root_driver
Bound device rockchip_rk3188_cru to root_driver
malloc_simple: size=18, ptr=160, limit=2000: 10086138
malloc_simple: size=54, ptr=1b4, limit=2000: 10086150
malloc_simple: size=1cc, ptr=380, limit=2000: 100861a4
Bound device rockchip_rk3188_dmc to root_driver
malloc_simple: size=18, ptr=398, limit=2000: 10086370
malloc_simple: size=54, ptr=3ec, limit=2000: 10086388
syscon: rockchip_rk3188_grf 1
Bound device rockchip_rk3188_grf to root_driver
malloc_simple: size=18, ptr=404, limit=2000: 100863dc
malloc_simple: size=54, ptr=458, limit=2000: 100863f4
Bound device rockchip_rk3188_pinctrl to root_driver
malloc_simple: size=54, ptr=4ac, limit=2000: 10086448
syscon: rockchip_rk3188_pmu 3
Bound device rockchip_rk3188_pmu to root_driver
malloc_simple: size=18, ptr=4c4, limit=2000: 1008649c
malloc_simple: size=54, ptr=518, limit=2000: 100864b4
malloc_simple: size=44, ptr=55c, limit=2000: 10086508
Bound device rockchip_rk3188_uart to root_driver
malloc_simple: size=54, ptr=5b0, limit=2000: 1008654c
syscon: rockchip_rk3188_noc 0
Bound device rockchip_rk3188_noc to root_driver
malloc_simple: size=10, ptr=5c0, limit=2000: 100865a0
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'rockchip_rk3188_cru'
- not found
malloc_simple: size=c, ptr=5cc, limit=2000: 100865b0
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'rockchip_rk3188_pinctrl'
- not found
malloc_simple: size=4, ptr=5d0, limit=2000: 100865bc
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'rockchip_rk3188_grf'
- -1 -1 'rockchip_rk3188_pmu'
- -1 -1 'rockchip_rk3188_noc'
- not found
malloc_simple: size=14, ptr=5e4, limit=2000: 100865c0
malloc_simple: size=10, ptr=5f4, limit=2000: 100865d4
malloc_simple: size=4, ptr=5f8, limit=2000: 100865e4
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'rockchip_rk3188_grf'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'rockchip_rk3188_grf'
- -1 -1 'rockchip_rk3188_pmu'
- -1 -1 'rockchip_rk3188_noc'
- not found
malloc_simple: size=14, ptr=60c, limit=2000: 100865e8
malloc_simple: size=10, ptr=61c, limit=2000: 100865fc
rk3188_pinctrl_probe: grf=20008000, pmu=20004000
PLL at 20000030: nf=99, nr=2, no=2, vco=1188000000 Hz, output=594000000 Hz
PLL at 20000020: nf=32, nr=1, no=2, vco=768000000 Hz, output=384000000 Hz
rockchip_mmc_set_clk: gclk_rate=148500000
malloc_simple: size=2c, ptr=648, limit=2000: 1008660c
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'rockchip_rk3188_dmc'
- not found
malloc_simple: size=14, ptr=65c, limit=2000: 10086638
malloc_simple: size=10, ptr=66c, limit=2000: 1008664c
malloc_simple: size=4, ptr=670, limit=2000: 1008665c
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'rockchip_rk3188_grf'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'rockchip_rk3188_grf'
- -1 1 'rockchip_rk3188_pmu'
- found
uclass_find_device_by_seq: 0 2
- -1 0 'rockchip_rk3188_grf'
- -1 1 'rockchip_rk3188_pmu'
- -1 -1 'rockchip_rk3188_noc'
- not found
malloc_simple: size=14, ptr=684, limit=2000: 10086660
malloc_simple: size=10, ptr=694, limit=2000: 10086674
clk_request(dev=10086078, clk=10086620)
clk_set_rate(clk=10086620, rate=300000000)
PLL at 20000010: nf=25, nr=2, no=1, vco=300000000 Hz, output=300000000 Hz
/home/andy/WorkSpace/U-BOOT/u-boot/drivers/clk/rockchip/clk_rk3188.c:101:
rkclk_set_pll: Assertion `vco_hz >= VCO_MIN_HZ &
& vco_hz <= VCO_MAX_HZ && output_hz >= OUTPUT_MIN_HZ && output_hz <=
OUTPUT_MAX_HZ && (div->no == 1 || !(div->no % 2))' fa
iled.
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'reset'
- not found
tpl-1
Returning to boot ROM..

> Cheers
> Paweł
>> Thanks
>> Heiko
>
>
>
>