Patchwork [U-Boot] Introduce the Tertiary Program loader

login
register
mail settings
Submitter Haiying Wang
Date Nov. 24, 2010, 9:25 p.m.
Message ID <1290633928-7270-1-git-send-email-Haiying.Wang@freescale.com>
Download mbox | patch
Permalink /patch/72947/
State Superseded
Delegated to: Kumar Gala
Headers show

Comments

Haiying Wang - Nov. 24, 2010, 9:25 p.m.
From: Haiying Wang <Haiying.Wang@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 is limited to 4K byte. The tpl code will load the final uboot
image after ddr is initialized.

Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
---
It is used to replace the [PATCH 3/7] Add support for third program loader
 Makefile |   14 ++++++++++++++
 README   |   27 +++++++++++++++++++++++++++
 2 files changed, 41 insertions(+), 0 deletions(-)
Mike Frysinger - Nov. 24, 2010, 9:52 p.m.
On Wednesday, November 24, 2010 16:25:28 Haiying.Wang@freescale.com wrote:
> +ifeq ($(CONFIG_TPL_U_BOOT),y)
> +$(U_BOOT_NAND): $(NAND_SPL) $(TPL_BOOT) $(obj)u-boot.bin
> +		cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)tpl/u-boot-tpl.bin
> $(obj)u-boot.bin > $(obj)u-boot-nand.bin
> +else
>  $(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 +endif

this looks doomed to failure.  why not introduce a new variable like 
NAND_SPL_OBJS-y and pass that in to cat ?
-mike
Måns Rullgård - Nov. 26, 2010, 8:41 p.m.
<Haiying.Wang@freescale.com> writes:

> From: Haiying Wang <Haiying.Wang@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 is limited to 4K
> byte. The tpl code will load the final uboot image after ddr is
> initialized.

Could this get rid of OMAP the x-loader?

Patch

diff --git a/Makefile b/Makefile
index b4aae89..e561706 100644
--- a/Makefile
+++ b/Makefile
@@ -287,6 +287,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
+
 ifeq ($(CONFIG_NAND_U_BOOT),y)
 NAND_SPL = nand_spl
 U_BOOT_NAND = $(obj)u-boot-nand.bin
@@ -404,8 +408,16 @@  $(obj)u-boot.lds: $(LDSCRIPT)
 $(NAND_SPL):	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
 
+$(TPL_BOOT):	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
+		$(MAKE) -C tpl/board/$(BOARDDIR) all
+
+ifeq ($(CONFIG_TPL_U_BOOT),y)
+$(U_BOOT_NAND): $(NAND_SPL) $(TPL_BOOT) $(obj)u-boot.bin
+		cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)tpl/u-boot-tpl.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
+else
 $(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
+endif
 
 $(ONENAND_IPL):	$(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
 		$(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
@@ -1223,6 +1235,7 @@  clean:
 	@rm -f $(obj)lib/asm-offsets.s
 	@rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
 	@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
+	@rm -f $(obj)tpl/{u-boot-tpl,u-boot-tpl.map}
 	@rm -f $(ONENAND_BIN)
 	@rm -f $(obj)onenand_ipl/u-boot.lds
 	@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
@@ -1247,6 +1260,7 @@  clobber:	clean
 	@rm -fr $(obj)include/generated
 	@[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
 	@[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f
+	@[ ! -d $(obj)tpl ] || find $(obj)tpl -name "*" -type l -print | xargs rm -f
 
 ifeq ($(OBJTREE),$(SRCTREE))
 mrproper \
diff --git a/README b/README
index 1acf9a3..53665b0 100644
--- a/README
+++ b/README
@@ -2108,6 +2108,33 @@  FIT uImage format:
 		Adds the MTD partitioning infrastructure from the Linux
 		kernel. Needed for UBI support.
 
+- NAND Boot Support
+		CONFIG_NAND_U_BOOT
+
+		Builds a U-Boot image that boots from NAND, prefixed by a small
+		loader stub (secondary program loader -- SPL) that loads the
+		rest of U-Boot into RAM.  This symbol will be set in all build
+		phases.
+
+		CONFIG_NAND_SPL
+
+		This is set by the build system when compiling code to go into 
+		the SPL.  It is not set when building the code that the SPL
+		loads.
+ 
+- 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.
 
 Modem Support:
 --------------