[U-Boot] [PATCH 3/8 v2] Introduce the Tertiary Program loader

Wolfgang Denk wd at denx.de
Sat Jan 22 23:04:38 CET 2011


Dear Haiying.Wang at freescale.com,

In message <1291217737-3870-4-git-send-email-Haiying.Wang at freescale.com> you wrote:
> From: Haiying Wang <Haiying.Wang at freescale.com>
> 
> TPL is introduced to enable a loader stub that boots out of some type of RAM,
> after being loaded by an SPL or similar platform-specific mechanism.
> 
> One example of using this tpl loader is to initialize the ddr through spd code
> in case the L2 SRAM size is not big enough to hold the final uboot image and
> the nand spl code needs to be limitated to 4K byte, then tpl code will load the
> final uboot image after ddr is initialized.
> 
> Signed-off-by: Haiying Wang <Haiying.Wang at freescale.com>
> ---
> Incorporate Mike's comment to use new variable NAND_SPL_OBJS-y
>  Makefile |   17 +++++++++++++++--
>  README   |   27 +++++++++++++++++++++++++++
>  2 files changed, 42 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 87a383d..94af465 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -290,6 +290,10 @@ LDPPFLAGS += \
>  	$(shell $(LD) --version | \
>  	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
>  
> +ifeq ($(CONFIG_TPL_U_BOOT),y)
> +TPL_BOOT = tpl
> +endif

I don't understand what the "TPL_BOOT" is good for, or how it's
supposed to work.

>  ifeq ($(CONFIG_NAND_U_BOOT),y)
>  NAND_SPL = nand_spl
>  U_BOOT_NAND = $(obj)u-boot-nand.bin
> @@ -407,8 +411,15 @@ $(obj)u-boot.lds: $(LDSCRIPT)
>  $(NAND_SPL):	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
>  		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
>  
> -$(U_BOOT_NAND):	$(NAND_SPL) $(obj)u-boot.bin
> -		cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
> +$(TPL_BOOT):	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
> +		$(MAKE) -C tpl/board/$(BOARDDIR) all

Assume CONFIG_TPL_U_BOOT is not defined, then TPL_BOOT is not defined,
and this rule will probably cause a build error, doesn't it?

Has this code ever been tested?


And if we use a variable for the "tlp" string, should this not be

	...
	$(MAKE) -C $(TPL_BOOT)/board/$(BOARDDIR) all

??

> +NAND_SPL_OBJS-y += $(obj)nand_spl/u-boot-spl-16k.bin
> +NAND_SPL_OBJS-$(CONFIG_TPL_U_BOOT) += $(obj)tpl/u-boot-tpl.bin
> +NAND_SPL_OBJS-y += $(obj)u-boot.bin

Ditto here and in the following - but how is NAND_SPL related to TPL
building? These should be completely independent?

> +- TPL Boot Support
> +		CONFIG_TPL_U_BOOT
> +
> +		Builds a U-Boot image that contains a loader stub (tertiary
> +		program loader -- TPL) that boots out of some type of RAM,
> +		after being loaded by an SPL or similar platform-specific
> +		mechanism.  This symbol will be set in all build phases.
> +
> +		CONFIG_TPL_BOOT
> +
> +		This is set by the build system when compiling code to go into
> +		the TPL.  It is not set when building the code that the TPL
> +		loads, or when building the SPL.

Can we not do with a single variable definition?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Things that try to look like things often do look  more  like  things
than things. Well-known fact.       - Terry Pratchett, _Wyrd Sisters_


More information about the U-Boot mailing list