mirror of
https://xff.cz/git/u-boot/
synced 2025-08-31 16:22:36 +02:00
TPL : introduce the TPL based on the SPL
Due to the nand SPL on some board(e.g. P1022DS)has a size limit, it can not be more than 4K. So, the SPL cannot initialize the DDR with the SPD code. This patch introduces TPL to enable a loader stub that is loaded by the code from the SPL. It initializes the DDR with the SPD or other operations. The TPL's size is sizeable, the maximum size is decided by the memory's size that TPL runs. It initializes the DDR through SPD code, and copys final uboot image to DDR. So there are three stage uboot images: * spl_boot, * tpl_boot, * final uboot image Signed-off-by: Ying Zhang <b40530@freescale.com> Acked-by: York Sun <yorksun@freescale.com>
This commit is contained in:
30
config.mk
30
config.mk
@@ -13,6 +13,12 @@ SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
||||
|
||||
export SHELL
|
||||
|
||||
ifeq ($(CONFIG_TPL_BUILD),y)
|
||||
SPL_BIN := u-boot-tpl
|
||||
else
|
||||
SPL_BIN := u-boot-spl
|
||||
endif
|
||||
|
||||
ifeq ($(CURDIR),$(SRCTREE))
|
||||
dir :=
|
||||
else
|
||||
@@ -22,7 +28,11 @@ endif
|
||||
ifneq ($(OBJTREE),$(SRCTREE))
|
||||
# Create object files for SPL in a separate directory
|
||||
ifeq ($(CONFIG_SPL_BUILD),y)
|
||||
ifeq ($(CONFIG_TPL_BUILD),y)
|
||||
obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
|
||||
else
|
||||
obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
|
||||
endif
|
||||
else
|
||||
obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
|
||||
endif
|
||||
@@ -32,8 +42,12 @@ $(shell mkdir -p $(obj))
|
||||
else
|
||||
# Create object files for SPL in a separate directory
|
||||
ifeq ($(CONFIG_SPL_BUILD),y)
|
||||
ifeq ($(CONFIG_TPL_BUILD),y)
|
||||
obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
|
||||
else
|
||||
obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
|
||||
|
||||
endif
|
||||
$(shell mkdir -p $(obj))
|
||||
else
|
||||
obj :=
|
||||
@@ -145,6 +159,10 @@ CHECK = sparse
|
||||
#########################################################################
|
||||
|
||||
# Load generated board configuration
|
||||
ifeq ($(CONFIG_TPL_BUILD),y)
|
||||
# Include TPL autoconf
|
||||
sinclude $(OBJTREE)/include/tpl-autoconf.mk
|
||||
else
|
||||
ifeq ($(CONFIG_SPL_BUILD),y)
|
||||
# Include SPL autoconf
|
||||
sinclude $(OBJTREE)/include/spl-autoconf.mk
|
||||
@@ -152,6 +170,7 @@ else
|
||||
# Include normal autoconf
|
||||
sinclude $(OBJTREE)/include/autoconf.mk
|
||||
endif
|
||||
endif
|
||||
sinclude $(OBJTREE)/include/config.mk
|
||||
|
||||
# Some architecture config.mk files need to know what CPUDIR is set to,
|
||||
@@ -221,12 +240,19 @@ ifneq ($(CONFIG_SPL_PAD_TO),)
|
||||
CPPFLAGS += -DCONFIG_SPL_PAD_TO=$(CONFIG_SPL_PAD_TO)
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_TPL_PAD_TO),)
|
||||
CPPFLAGS += -DCONFIG_TPL_PAD_TO=$(CONFIG_TPL_PAD_TO)
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_UBOOT_PAD_TO),)
|
||||
CPPFLAGS += -DCONFIG_UBOOT_PAD_TO=$(CONFIG_UBOOT_PAD_TO)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_SPL_BUILD),y)
|
||||
CPPFLAGS += -DCONFIG_SPL_BUILD
|
||||
ifeq ($(CONFIG_TPL_BUILD),y)
|
||||
CPPFLAGS += -DCONFIG_TPL_BUILD
|
||||
endif
|
||||
endif
|
||||
|
||||
# Does this architecture support generic board init?
|
||||
@@ -298,9 +324,9 @@ ifneq ($(CONFIG_SYS_TEXT_BASE),)
|
||||
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
|
||||
endif
|
||||
|
||||
LDFLAGS_u-boot-spl += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
|
||||
LDFLAGS_$(SPL_BIN) += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
|
||||
ifneq ($(CONFIG_SPL_TEXT_BASE),)
|
||||
LDFLAGS_u-boot-spl += -Ttext $(CONFIG_SPL_TEXT_BASE)
|
||||
LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
|
||||
endif
|
||||
|
||||
# Linus' kernel sanity checking tool
|
||||
|
Reference in New Issue
Block a user