~funderscoreblog cgit wikiget in touch

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      |  \-----------------------------------+
                         |___________________________________|