[U-Boot] [PATCH 01/12] spl: separate SPL_FRAMEWORK config for spl and tpl

Kever Yang kever.yang at rock-chips.com
Fri Oct 25 01:55:28 UTC 2019


Heiko,


On 2019/10/25 上午7:27, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
>
> Right now enabling SPL_FRAMEWORK will also enable it for the TPL in all
> cases, making the TPL bigger. There may be cases where the TPL is really
> size constrained due to its underlying ram size.
>
> Therefore introduce a new TPL_FRAMEWORK option and make the relevant
> conditionals check for both. The default is set to "y if SPL_FRAMEWORK"
> to mimic the previous behaviour where the TPL would always get the
> SPL framework if it was enabled in SPL.


New TPL_FRAMEWORK looks reasonable, after this patch, only the 
board_init_f() is available while

board_init_r() is drop, right?

> Signed-off-by: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
> ---
>   arch/arm/lib/Makefile     | 2 +-
>   arch/arm/lib/crt0.S       | 2 +-
>   arch/arm/lib/crt0_64.S    | 2 ++
>   arch/powerpc/lib/Makefile | 2 +-
>   common/spl/Kconfig        | 8 ++++++++
>   common/spl/Makefile       | 2 +-
>   scripts/Makefile.spl      | 4 ++++
>   7 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index 48ee6c3c60..9de9a9acee 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -35,7 +35,7 @@ obj-$(CONFIG_CMD_BOOTM) += bootm.o
>   obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o
>   obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
>   else
> -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +obj-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += spl.o
>   obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o
>   obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
>   endif
> diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S
> index c74641dcd9..fb6c37cf51 100644
> --- a/arch/arm/lib/crt0.S
> +++ b/arch/arm/lib/crt0.S
> @@ -149,7 +149,7 @@ here:
>   
>   	bl	c_runtime_cpu_setup	/* we still call old routine here */
>   #endif
> -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_FRAMEWORK)
> +#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(FRAMEWORK)
>   
>   #if !defined(CONFIG_SPL_EARLY_BSS)
>   	SPL_CLEAR_BSS
> diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S
> index e76b25a03e..04afa518ac 100644
> --- a/arch/arm/lib/crt0_64.S
> +++ b/arch/arm/lib/crt0_64.S
> @@ -120,6 +120,7 @@ relocation_return:
>    */
>   	bl	c_runtime_cpu_setup		/* still call old routine */
>   #endif /* !CONFIG_SPL_BUILD */
> +#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(FRAMEWORK)
>   #if defined(CONFIG_SPL_BUILD)
>   	bl	spl_relocate_stack_gd           /* may return NULL */
>   	/* set up gd here, outside any C code, if new stack is returned */
> @@ -152,5 +153,6 @@ clear_loop:
>   	b	board_init_r			/* PC relative jump */
>   
>   	/* NOTREACHED - board_init_r() does not return */
> +#endif
>   
>   ENDPROC(_main)
> diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
> index 8ac49bdd06..01c9dd51be 100644
> --- a/arch/powerpc/lib/Makefile
> +++ b/arch/powerpc/lib/Makefile
> @@ -41,5 +41,5 @@ obj-y	+= time.o
>   endif # not minimal
>   
>   ifdef CONFIG_SPL_BUILD
> -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +obj-$(CONFIG_$(SPL_TPL)_FRAMEWORK) += spl.o
>   endif
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index f467eca2be..4d5c4ddc46 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -1183,6 +1183,14 @@ config TPL
>   
>   if TPL
>   
> +config TPL_FRAMEWORK
> +	bool "Support TPL based upon the common SPL framework"
> +	default y if SPL_FRAMEWORK
> +	help
> +	  Enable the SPL framework under common/spl/ for TPL builds.
> +	  This framework supports MMC, NAND and YMODEM and other methods
> +	  loading of U-Boot's SPL stage. If unsure, say Y.
> +
>   config TPL_HANDOFF
>   	bool "Pass hand-off information from TPL to SPL and U-Boot proper"
>   	depends on HANDOFF
> diff --git a/common/spl/Makefile b/common/spl/Makefile
> index 5ce6f4ae48..eaa57f5ce5 100644
> --- a/common/spl/Makefile
> +++ b/common/spl/Makefile
> @@ -7,7 +7,7 @@
>   #
>   
>   ifdef CONFIG_SPL_BUILD
> -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +obj-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += spl.o
>   obj-$(CONFIG_$(SPL_TPL_)BOOTROM_SUPPORT) += spl_bootrom.o
>   obj-$(CONFIG_$(SPL_TPL_)LOAD_FIT) += spl_fit.o
>   obj-$(CONFIG_$(SPL_TPL_)NOR_SUPPORT) += spl_nor.o
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 7af6b120b6..090c831710 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -71,7 +71,11 @@ HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makef
>   libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
>   libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
>   
> +ifeq ($(CONFIG_TPL_BUILD),y)
> +libs-$(CONFIG_TPL_FRAMEWORK) += common/spl/
> +else
>   libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
> +endif
Is it able to use code like:

libs-$(CONFIG_$(SPL_TPL_)FRAMEWORK) +=

Thanks,
- Kever

>   libs-y += common/init/
>   
>   # Special handling for a few options which support SPL/TPL




More information about the U-Boot mailing list