[PATCH v4 2/4] rockchip: Use an external TPL binary on RK3568

Kever Yang kever.yang at rock-chips.com
Thu Feb 23 05:38:13 CET 2023


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?

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