Home | History | Annotate | Download | only in doc
      1 Generic TPL framework
      2 =====================
      3 
      4 Overview
      5 --------
      6 
      7 TPL---Third Program Loader.
      8 
      9 Due to the SPL on some boards(powerpc mpc85xx) has a size limit and cannot
     10 be compatible with all the external device(e.g. DDR). So add a tertiary
     11 program loader (TPL) to enable a loader stub loaded by the code from the
     12 SPL. It loads the final uboot image into DDR, then jump to it to begin
     13 execution. Now, only the powerpc mpc85xx has this requirement and will
     14 implemente it.
     15 
     16 Keep consistent with SPL, with this framework almost all source files for a
     17 board can be reused. No code duplication or symlinking is necessary anymore.
     18 
     19 How it works
     20 ------------
     21 
     22 There has been a directory $(srctree)/spl which contains only a Makefile. The
     23 Makefile is shared by SPL and TPL.
     24 
     25 The object files are built separately for SPL/TPL and placed in the
     26 directory spl/tpl. The final binaries which are generated are
     27 u-boot-{spl|tpl}, u-boot-{spl|tpl}.bin and u-boot-{spl|tpl}.map.
     28 
     29 During the TPL build a variable named CONFIG_TPL_BUILD is exported in the
     30 make environment and also appended to CPPFLAGS with -DCONFIG_TPL_BUILD.
     31 
     32 The SPL options are shared by SPL and TPL, the board config file should
     33 determine which SPL options to choose based on whether CONFIG_TPL_BUILD
     34 is set. Source files can be compiled for TPL with options choosed in the
     35 board config file.
     36 
     37 For example:
     38 
     39 spl/Makefile:
     40 LIBS-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/libcommon.o
     41 
     42 CONFIG_SPL_LIBCOMMON_SUPPORT is defined in board config file:
     43 #ifdef CONFIG_TPL_BUILD
     44 #define CONFIG_SPL_LIBCOMMON_SUPPORT
     45 #endif
     46