The boot process of Arm Trusted Firmware-A is as follows (simplified):
___________________________________ ___________________________________ | | | | | BL1: AP Trusted ROM | ----------------\ | BL2: Trusted Boot Firmware | | Does arch and platform init | Loads and runs ) | Does platform init required | | and loads BL2 | ----------------/ | for loading further images | |___________________________________| |___________________________________| | | | | +---------------- | BL31: EL3 Runtime Software | /-------------------------------+ | | | Inits runtime services such | ( Loads and runs | | +------------ | as PSCI and invokes BL33 | \-----------------------------------+ | | |___________________________________| | | | | | | | | | +----------\ | BL33: Non-trusted Firmware | /-------------------------------+ | | Runs ) | Bootloader (U-Boot in most | ( Loads | +--------------/ | cases) which loads Linux | \-----------------------------------+ |___________________________________|
Amlogic SoCs use a proprietary fork of Arm Trusted Firmware-A with added GPL-2.0+-licensed plugins for board-specific init, and a BL1 implementing a proprietary 'worldcup' USB protocol. Again, simplified, and this only covers GXBB/S905 and GXL/S{9,8}05X:
___________________________________ ___________________________________ | | | |_______________________________________________________________________ | BL1: AP Trusted ROM | ----------------\ | BL2: Trusted Boot Firmware | | | | Does arch and platform init | Loads and runs ) | Inits DRAM and PLL and loads | BL21: Board Plugin | ACS: C struct injected in BL2 binary | | and loads BL2 (or USB mode) | ----------------/ | further images into DRAM | Power init | DRAM settings, timings, and PLL config | |___________________________________| |___________________________________|________________________|______________________________________________| _______________________| | | | | | SCP_BL2/BL30: SCP Firmware | /-------------------------------+ | | BL301: Board Plugin | Platform-specific SCP init | ( Sends to SCP and runs | | DVFS and suspend | for power management | \-----------------------------------+ |_______________________|___________________________________| | | | | | | +---------------- | BL31: EL3 Runtime Software | /-------------------------------+ | | | Inits runtime services such | ( Loads and runs | | +------------ | as PSCI and invokes BL33 | \-----------------------------------+ | | |___________________________________| | | | | | | | | | +----------\ | BL33: Non-trusted Firmware | /-------------------------------+ | | Runs ) | Bootloader (U-Boot in most | ( Loads | +--------------/ | cases) which loads Linux | \-----------------------------------+ |___________________________________|