[PATCH v4 2/4] rockchip: Use an external TPL binary on RK3568
Jonas Karlman
jonas at kwiboo.se
Thu Feb 23 10:05:07 CET 2023
Hi Kever,
On 2023-02-23 05:38, Kever Yang wrote:
> Hi Jonas, Simon,
>
> I got below error in buildman with BINMAN_ALLOW_MISSING=1
>
> Building current source for 1 boards (1 thread, 16 jobs per thread)
> aarch64: + evb-rk3568
> +binman: Filename 'rockchip-tpl' bbb not found in input path
> (.,/home/kever/src/u-boot,board/rockchip/evb_rk3568,arch/arm/dts)
> (cwd='/home/kever/src/.bm-work/00/build')
> +make[1]: *** [Makefile:1107: .binman_stamp] Error 1
> +make: *** [Makefile:177: sub-make] Error 2
>
> It should be like atf-bl31, only below warining is output, anything
> is missing?
This is a known issue, builds only work with ROCKCHIP_TPL/rockchip-tpl-path
defined, the allow-missing flag is not fully functional for the mkimage
entry in binman. Fixing that issue grew into its own series, see [1].
[1] https://patchwork.ozlabs.org/project/uboot/cover/20230219220158.4160763-1-jonas@kwiboo.se/
Regards,
Jonas
>
> Building current source for 1 boards (1 thread, 16 jobs per thread)
> aarch64: w+ evb-rk3399
> +Image 'simple-bin' aaais missing external blobs and is non-functional:
> atf-bl31
> +
> +/binman/simple-bin/fit/images/@atf-SEQ/atf-bl31:
> + See the documentation for your board. You may need to build ARM Trusted
> + Firmware and build with BL31=/path/to/bl31.bin
> +Some images are invalid
> 0 1 0 /1 evb-rk3399
>
> Thanks,
>
> - Kever
>
> On 2023/2/19 23:06, Jonas Karlman wrote:
>> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
>> back to BootRom to load next stage, U-Boot SPL, into DRAM. BootRom then
>> jumps to U-Boot SPL to continue the normal boot flow.
>>
>> However, there is no support to initialize DRAM on RK35xx SoCs using
>> U-Boot TPL and instead an external TPL binary must be used to generate a
>> bootable u-boot-rockchip.bin image.
>>
>> Add CONFIG_ROCKCHIP_EXTERNAL_TPL to indicate that an external TPL should
>> be used. Build U-Boot with ROCKCHIP_TPL=/path/to/ddr.bin to generate a
>> bootable u-boot-rockchip.bin image for RK3568.
>>
>> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
>> Reviewed-by: Simon Glass <sjg at chromium.org>
>> Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
>> Tested-by: Eugen Hristev <eugen.hristev at collabora.com>
>> ---
>> v4:
>> - No change
>>
>> v3:
>> - Add help text to Kconfig option
>> - Add build step for rk3568 to documentation
>> - Collect r-b and t-b tags
>>
>> v2:
>> - Rename external-tpl-path to rockchip-tpl-path
>> - Rename EXTERNAL_TPL to ROCKCHIP_TPL
>> - Add CONFIG_ROCKCHIP_EXTERNAL_TPL option
>>
>> Makefile | 1 +
>> arch/arm/dts/rockchip-u-boot.dtsi | 10 ++++++++--
>> arch/arm/mach-rockchip/Kconfig | 8 ++++++++
>> doc/board/rockchip/rockchip.rst | 11 +++++++++++
>> 4 files changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 54f894dab841..58f8c7a35335 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1335,6 +1335,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
>> -a opensbi-path=${OPENSBI} \
>> -a default-dt=$(default_dt) \
>> -a scp-path=$(SCP) \
>> + -a rockchip-tpl-path=$(ROCKCHIP_TPL) \
>> -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
>> -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
>> -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
>> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi b/arch/arm/dts/rockchip-u-boot.dtsi
>> index 6c662a72d4f9..2878b80926c4 100644
>> --- a/arch/arm/dts/rockchip-u-boot.dtsi
>> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
>> @@ -20,9 +20,12 @@
>> mkimage {
>> filename = "idbloader.img";
>> args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
>> -#ifdef CONFIG_TPL
>> multiple-data-files;
>>
>> +#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
>> + rockchip-tpl {
>> + };
>> +#elif defined(CONFIG_TPL)
>> u-boot-tpl {
>> };
>> #endif
>> @@ -134,9 +137,12 @@
>> mkimage {
>> filename = "idbloader-spi.img";
>> args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
>> -#ifdef CONFIG_TPL
>> multiple-data-files;
>>
>> +#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
>> + rockchip-tpl {
>> + };
>> +#elif defined(CONFIG_TPL)
>> u-boot-tpl {
>> };
>> #endif
>> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
>> index b678ec41318e..0b191b364264 100644
>> --- a/arch/arm/mach-rockchip/Kconfig
>> +++ b/arch/arm/mach-rockchip/Kconfig
>> @@ -401,6 +401,14 @@ config TPL_ROCKCHIP_COMMON_BOARD
>> common board is a basic TPL board init which can be shared for most
>> of SoCs to avoid copy-paste for different SoCs.
>>
>> +config ROCKCHIP_EXTERNAL_TPL
>> + bool "Use external TPL binary"
>> + default y if ROCKCHIP_RK3568
>> + help
>> + Some Rockchip SoCs require an external TPL to initialize DRAM.
>> + Enable this option and build with ROCKCHIP_TPL=/path/to/ddr.bin to
>> + include the external TPL in the image built by binman.
>> +
>> config ROCKCHIP_BOOT_MODE_REG
>> hex "Rockchip boot mode flag register address"
>> help
>> diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst
>> index 28c837a38200..ac4dcce1a77d 100644
>> --- a/doc/board/rockchip/rockchip.rst
>> +++ b/doc/board/rockchip/rockchip.rst
>> @@ -86,6 +86,8 @@ List of mainline supported Rockchip boards:
>> - Radxa ROCK Pi 4 (rock-pi-4-rk3399)
>> - Rockchip Evb-RK3399 (evb_rk3399)
>> - Theobroma Systems RK3399-Q7 SoM - Puma (puma_rk3399)
>> +* rk3568
>> + - Rockchip Evb-RK3568 (evb-rk3568)
>> * rv1108
>> - Rockchip Evb-rv1108 (evb-rv1108)
>> - Elgin-R1 (elgin-rv1108)
>> @@ -167,6 +169,15 @@ To build rk3399 boards:
>> make evb-rk3399_defconfig
>> make CROSS_COMPILE=aarch64-linux-gnu-
>>
>> +To build rk3568 boards:
>> +
>> +.. code-block:: bash
>> +
>> + export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.34.elf
>> + export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.13.bin
>> + make evb-rk3568_defconfig
>> + make CROSS_COMPILE=aarch64-linux-gnu-
>> +
>> Flashing
>> --------
>>
More information about the U-Boot
mailing list