[U-Boot] [PATCH 6/7 v7] NAND: TPL : introduce the TPL based on the SPL

Scott Wood scottwood at freescale.com
Fri Jul 12 23:43:13 CEST 2013


On 07/09/2013 04:50:49 AM, ying.zhang at freescale.com wrote:
> +During the TPL build a variable named CONFIG_TPL_BUILD is exported
> +in the make environment and also appended to CPPFLAGS with  
> -DCONFIG_TPL_BUILD.
> +Source files can therefore be compiled for TPL with different  
> settings.
> +
> +For example:
> +
> +ifeq ($(CONFIG_TPL_BUILD),y)
> +COBJS-y += board_tpl.o
> +else
> +COBJS-y += board.o
> +endif
> +
> +COBJS-$(CONFIG_TPL_BUILD) += foo.o

This is not how it should normally be done.  Normally the board config  
file should determine which SPL options to choose, based on whether  
CONFIG_TPL_BUILD is set.

> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
> index bb81e84..6507fcf 100644
> --- a/drivers/mtd/nand/Makefile
> +++ b/drivers/mtd/nand/Makefile
> @@ -29,6 +29,8 @@ ifdef CONFIG_CMD_NAND
> 
>  ifdef CONFIG_SPL_BUILD
> 
> +ifndef CONFIG_TPL_BUILD

Why?  Let the board file define what it wants for the TPL case, just as  
in SPL.

>  ifdef CONFIG_SPL_NAND_DRIVERS
>  NORMAL_DRIVERS=y
>  endif
> @@ -40,6 +42,10 @@ COBJS-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o
>  COBJS-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o
>  COBJS-$(CONFIG_SPL_NAND_BASE) += nand_base.o
> 
> +else
> +COBJS-y += nand.o
> +endif

What do you need nand.c for?  Why do you think all other TPLs will have  
the same need?

>  else # not spl
> 
>  NORMAL_DRIVERS=y
> @@ -82,9 +88,11 @@ COBJS-$(CONFIG_NAND_DOCG4) += docg4.o
> 
>  else  # minimal SPL drivers
> 
> +ifdef CONFIG_SPL_BUILD
>  COBJS-$(CONFIG_NAND_FSL_ELBC) += fsl_elbc_spl.o
>  COBJS-$(CONFIG_NAND_FSL_IFC) += fsl_ifc_spl.o
>  COBJS-$(CONFIG_NAND_MXC) += mxc_nand_spl.o
> +endif

How are you going to get here in the first place without  
CONFIG_SPL_BUILD?

> @@ -162,6 +173,17 @@ $(OBJTREE)/SPL : $(obj)u-boot-spl.bin depend
>  		$(MAKE) -C $(SRCTREE)/arch/arm/imx-common $@
> 
>  ALL-y	+= $(obj)u-boot-spl.bin
> +else
> +$(OBJTREE)/MLO: $(obj)u-boot-tpl.bin
> +	$(OBJTREE)/tools/mkimage -T omapimage \
> +		-a $(CONFIG_SPL_TEXT_BASE) -d $< $@
> +
> +$(OBJTREE)/MLO.byteswap: $(obj)u-boot-tpl.bin
> +	$(OBJTREE)/tools/mkimage -T omapimage -n byteswap \
> +		-a $(CONFIG_SPL_TEXT_BASE) -d $< $@
> +
> +ALL-y   += $(obj)u-boot-tpl.bin
> +endif

Why?  There's not even a user of MLO with TPL.

In any case, is there no way we can just set filename variables based  
on SPL/TPL here, rather than duplicating code?

> +ifndef CONFIG_TPL_BUILD
>  $(obj)u-boot-spl.bin:	$(obj)u-boot-spl
>  	$(OBJCOPY) $(OBJCFLAGS) -O binary $< $@
> 
> @@ -185,6 +208,18 @@ GEN_UBOOT = \
> 
>  $(obj)u-boot-spl:	depend $(START) $(LIBS) $(obj)u-boot-spl.lds
>  	$(GEN_UBOOT)
> +else
> +$(obj)u-boot-tpl.bin:   $(obj)u-boot-tpl
> +	$(OBJCOPY) $(OBJCFLAGS) -O binary $< $@
> +
> +GEN_UBOOT = \
> +	cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $(__START) \
> +		--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
> +		-Map u-boot-tpl.map -o u-boot-tpl
> +
> +$(obj)u-boot-tpl:	depend $(START) $(LIBS) $(obj)u-boot-spl.lds
> +	$(GEN_UBOOT)
> +endif

Likewise.

-Scott


More information about the U-Boot mailing list