[PATCH 1/1] doc: describe TPL/VPL/SPL boot

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Wed Aug 23 22:32:18 CEST 2023

On 8/23/23 22:14, Pali Rohár wrote:
> On Wednesday 23 August 2023 21:57:28 Heinrich Schuchardt wrote:
>> +Booting from TPL/SPL
>> +====================
>> +
>> +The main U-Boot binary may be to large to be loaded directly by the Boot ROM.
>> +This was the main driver for splitting up U-Boot into multiple boot stages with
>> +successively larger binaries.
>> +
>> +U-Boot typically goes through the following boot phases where TPL, VPL, and SPL
>> +are optional. While many boards use SPL only few use TPL.
>> +
>> +TPL
>> +   Very early init, as tiny as possible. This loads SPL (or VPL if enabled).
> This is not truth. SPL loads TPL. Or at least it was about year ago for powerpc plat.

Thanks for reviewing.

Cf. doc/arch/sandbox/sandbox.rst

For roc-cc-rk3328_defconfig TPL is much smaller than SPL:

78224 spl/u-boot-spl-nodtb.bin
20744 tpl/u-boot-tpl-nodtb.bin

For P2020RDB-PC_NAND_defconfig SPL is much smaller than TPL:

63624 tpl/u-boot-tpl-nodtb.bin
4096 spl/u-boot-spl-nodtb.bin

If some boards are running TPL->SPL and others SPL->TPL, we really have 
a naming convention issue. We cannot expect any user to understand such 
a confusion.

Looking at the MAINTAINER file it seems that POWERPC should be set to 

Best regards


>> +VPL
>> +   Optional verification step, which can select one of several SPL binaries,
>> +   if A/B verified boot is enabled. Implementation of the VPL logic is
>> +   work-in-progress. For now it just boots into SPL.
>> +
>> +SPL
>> +   Secondary program loader. Sets up SDRAM and loads U-Boot proper. It may also
>> +   load other firmware components.
> SPL initializes NAND then loads TPL from NAND, TPL initialize DDR and then loads U-Boot.

More information about the U-Boot mailing list