[U-Boot] [PATCH] powerpc/p1022ds: nand: introduce the TPL based on the SPL
Scott Wood
scottwood at freescale.com
Fri Jun 14 18:37:09 CEST 2013
On 06/14/2013 05:08:49 AM, Zhang Ying-B40530 wrote:
>
>
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Friday, June 14, 2013 5:50 AM
> To: Zhang Ying-B40530
> Cc: Wood Scott-B07421; u-boot at lists.denx.de; afleming at gmail.com; Xie
> Xiaobo-R63061
> Subject: Re: [PATCH] powerpc/p1022ds: nand: introduce the TPL based
> on the SPL
>
> On 06/13/2013 02:27:44 AM, Zhang Ying-B40530 wrote:
> >
> >
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Thursday, June 13, 2013 6:29 AM
> > To: Zhang Ying-B40530
> > Cc: u-boot at lists.denx.de; afleming at gmail.com; Xie Xiaobo-R63061;
> > Zhang Ying-B40530
> > Subject: Re: [PATCH] powerpc/p1022ds: nand: introduce the TPL based
> > on the SPL
> >
> > On 06/09/2013 12:54:43 AM, ying.zhang at freescale.com wrote:
> > > From: Ying Zhang <b40530 at freescale.com>
> > >
> > > Due to the nand SPL on the board 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 runs in the
> > L2
> > > SRAM,
> > > after being loaded by the code from the SPL. It initializes the
> DDR
> > > with
> > > the SPD.
> > >
> > > The TPL's size is sizeable, the maximum size must not exceed the
> > size
> > > of L2
> > > SRAM. It initializes the DDR through SPD code, and copys final
> uboot
> > > image
> > > to DDR. So there are three stage uboot images:
> > > * spl_boot, 4KB size, pad to 128K byte.
> > > * tpl_boot, 88K size, pad to 128K size. The env variables are
> > > copied to L2 SRAM, so that ddr SPD code can get the interleaving
> > > mode setting in env. It loads final uboot image from offset
> > > 256KB.
> > > * final uboot image, size is variable depends on the functions
> > > enabled.
> > >
> > > This patch is on top of the patch:
> > > powerpc/p1022ds: boot from SD Card with SPL
> > >
> > > Signed-off-by: Ying Zhang <b40530 at freescale.com>
> > > ---
> > > Makefile | 25 +++-
> > > README | 55 ++++++-
> > > arch/powerpc/config.mk | 2 +
> > > arch/powerpc/cpu/mpc85xx/spl_minimal.c | 16 ++
> > > arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds | 80
> +++++++++
> > > .../cpu/mpc8xxx/ddr/lc_common_dimm_params.c | 4 +-
> > > arch/powerpc/lib/Makefile | 2 +
> > > board/freescale/p1022ds/Makefile | 3 +
> > > board/freescale/p1022ds/spl_minimal.c | 56 +------
> > > board/freescale/p1022ds/tlb.c | 4 +-
> > > board/freescale/p1022ds/tpl.c | 101
> > > ++++++++++++
> > > common/Makefile | 9 +
> > > common/cmd_nvedit.c | 8 +-
> > > config.mk | 32 ++++
> > > doc/README.TPL | 93
> > +++++++++++
> > > drivers/mtd/nand/Makefile | 8 +
> > > drivers/mtd/nand/fsl_elbc_tpl.c | 168
> > > ++++++++++++++++++++
> > > drivers/serial/serial.c | 2 +-
> > > include/bootstage.h | 3 +-
> > > include/configs/P1022DS.h | 75
> +++++++--
> > > tpl/Makefile | 161
> > > +++++++++++++++++++
> > > 21 files changed, 824 insertions(+), 83 deletions(-)
> > > create mode 100644 arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds
> > > create mode 100644 board/freescale/p1022ds/tpl.c
> > > create mode 100644 doc/README.TPL
> > > create mode 100644 drivers/mtd/nand/fsl_elbc_tpl.c
> > > create mode 100644 tpl/Makefile
> > >
> > > diff --git a/README b/README
> > > index 7add6d4..04f9aa5 100644
> > > --- a/README
> > > +++ b/README
> > > @@ -2985,9 +2985,10 @@ FIT uImage format:
> > > Set for the SPL on PPC mpc8xxx targets, support for
> > > arch/powerpc/cpu/mpc8xxx/ddr/libddr.o in SPL binary.
> > >
> > > - CONFIG_SPL_COMMON_INIT_DDR
> > > + CONFIG_COMMON_INIT_DDR
> > > Set for common ddr init with serial presence detect in
> > > - SPL binary.
> > > + SPL binary or TPL binary.
> > > +
> > > CONFIG_SYS_NAND_5_ADDR_CYCLE,
> > > CONFIG_SYS_NAND_PAGE_COUNT,
> > > CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE,
> > > CONFIG_SYS_NAND_BLOCK_SIZE,
> > > CONFIG_SYS_NAND_BAD_BLOCK_POS,
> > > @@ -3058,6 +3059,56 @@ FIT uImage format:
> > > option to re-enable it. This will affect the output of
> > > the
> > > bootm command when booting a FIT image.
> > >
> > > +- TPL framework
> > > + CONFIG_TPL
> > > + Enable building of TPL globally.
> > > +
> > > + CONFIG_TPL_LDSCRIPT
> > > + LDSCRIPT for linking the TPL binary.
> > > +
> > > + CONFIG_TPL_MAX_SIZE
> > > + Maximum size of the TPL image (text, data, rodata, and
> > > + linker lists sections), BSS excluded.
> > > + When defined, the linker checks that the actual size
> > > does
> > > + not exceed it.
> > > +
> > > + CONFIG_SPL_TEXT_BASE
> > > + TEXT_BASE for linking the TPL binary.
> > > +
> > > + CONFIG_TPL_LIBCOMMON_SUPPORT
> > > + Support for common/libcommon.o in TPL binary
> > > +
> > > + CONFIG_TPL_LIBDISK_SUPPORT
> > > + Support for disk/libdisk.o in TPL binary
> > > +
> > > + CONFIG_TPL_I2C_SUPPORT
> > > + Support for drivers/i2c/libi2c.o in TPL binary
> > > +
> > > + CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT
> > > + Set for the TPL on PPC mpc8xxx targets, support for
> > > + arch/powerpc/cpu/mpc8xxx/ddr/libddr.o in TPL binary.
> > > +
> > > + CONFIG_TPL_SERIAL_SUPPORT
> > > + Support for drivers/serial/libserial.o in TPL binary
> > > +
> > > + CONFIG_TPL_LIBGENERIC_SUPPORT
> > > + Support for lib/libgeneric.o in TPL binary
> > > +
> > > + CONFIG_TPL_ENV_SUPPORT
> > > + Support for the environment operating in TPL binary
> > > +
> > > + CONFIG_TPL_PAD_TO
> > > + Image offset to which the TPL should be padded before
> > > appending
> > > + the TPL payload. By default, this is defined as
> > > + CONFIG_TPL_MAX_SIZE, or 0 if CONFIG_TPL_MAX_SIZE is
> > > undefined.
> > > + CONFIG_TPL_PAD_TO must be either 0, meaning to append
> > > the TPL
> > > + payload without any padding, or >= CONFIG_TPL_MAX_SIZE.
> > > +
> > > + CONFIG_TPL_TARGET
> > > + Final target image containing SPL and payload. Some
> > > TPLs
> > > + use an arch-specific makefile fragment instead, for
> > > + example if more than one image needs to be produced.
> >
> > Let's please not just duplicate all the SPL stuff with s/SPL/TPL/.
> > Now
> > that the concept of a separate autoconf.mk is apparently less
> > controversial than when I suggested it a while back, let's
> generalize
> > it into multiple U-Boot phases, each of which has its own
> autoconf.mk.
> > The same set of symbols would be used to build any phase (ideally
> > including the main phase) -- the symbols would just be declared
> under
> > different ifdefs.
> > [Zhang Ying]
> > I know the concept of a separate autoconf.mk for multiple U-Boot
> > phases.
> > If these symbols are only used in the C files, should do as you say.
> > But most of these symbols were used in the Makefile to contain the
> > Library. The patch "separate autoconf.mk" has not be merged, in this
> > case, they can only declared separately.
>
> Treat the autoconf.mk patch as a dependency. Don't try to hack around
> its absence.
> [Zhang Ying]
> According to what you said, the same set of symbols will be declared
> under different ifdefs.
> That's the trouble, "The same set of symbols declared under different
> ifdefs" will not be effective in the "Makefile", in the current case.
It *will* be effective in the makefile if there is a separate
autoconf.mk for each phase. My point is that a separate autoconf.mk
for each phase is a requirement for TPL to be done in a sane way.
-Scott
More information about the U-Boot
mailing list