ARM Trusted Firmware
The ARM Trusted Firmware (ATF, or TF-A) is a software component of the Linux BSP with a double role as a bootloader and Secure Monitor. As a bootloader, it runs before U-Boot on the A53 boot core and takes over some of the core and SoC initializations such as clocks or MC_ME partitions (mostly for those peripherals and subsystems that the ATF needs). As a Secure Monitor, the TF-A provides power management services to other software components, via a standard API/ABI called PSCI.
The TF-A is divided into several stages, called Boot Levels (BLs). ARM TF-A specification includes BL1 (Trusted ROM), BL2 (Trusted Boot Firmware), BL31 (Secure Monitor), BL32 (Trusted OS) and BL33 (non-trusted world, e.g. U-Boot or UEFI). The BSP 28.0 TF-A implements the BL2 and BL31 stages:
• BL2 is the component pointed to by the boot IVT on the cold boot flow with ATF, see chapter TF-A SMP Boot. It is deployed in SRAM at a statically-defined address. Its main role is to initialize the platform and in particular the DDR, and load BL31. BL2 is a transient component. After the the next stage (BL33/U-Boot) has booted, BL2 is no longer used and its SRAM space can be reclaimed.
• BL31 is loaded by BL2 in DDR, at a statically-defined address. Currently, BL31 is deployed at the top of the first 2GB of DDR, minus 2MB. BL31 is a resident component. It occupies the DDR region for the entire uptime of the platform, being involved in runtime power management, platform reset, suspend to RAM, etc. See Power Management chapter for details. It is to be noted that U-Boot cooperates with the TF-A in actually reserving the 2MB off the top of DDR’s first 2GB, and hiding that region from the Linux kernel. To do so, U-Boot alters the Linux device tree before loading the kernel. See the SMP Information chapter SMP Information for more details.
Quoted from S32G274A_LinuxBSP28.0.0_User_Manual.pdf