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

Andy Yan
2017-09-27T07:46:43Z

Hi Pawel:

On 2017年09月27日 14:55, Paweł Jarosz wrote:
> 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

u-boot-dtb.bin has the same size as u-boot.bin, so I think they are
the same.
>
>>
>>
>>> 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?

I have no problem now,  I just want to know if you have  some new
way to flash the binary to nand except using "upgrate_tool ul " command
to download the blob generated by bootmerger.
>
>>
>> [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
>>>
>>>
>>>
>>>
>>
>>
>
>
>
>