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

Paweł Jarosz
2017-09-27T06:55:36Z

Hi,

W dniu 27.09.2017 o 03:48, Andy Yan pisze:
> 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
>

Size of binaries looks good.
You should flash u-boot-dtb.bin not 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
> =>
>
>

This console output looks good ... board tries to boot from mmc but no
card is present and u-boot stops on console.
So what is your current issue?

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

Here is the error as assertion fails in clk_rk3188.c:101. That is why
board resets.

Cheers
Paweł

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