1*91f16700SchasingluluImage Terminology 2*91f16700Schasinglulu================= 3*91f16700Schasinglulu 4*91f16700SchasingluluThis page contains the current name, abbreviated name and purpose of the various 5*91f16700Schasingluluimages referred to in the Trusted Firmware project. 6*91f16700Schasinglulu 7*91f16700SchasingluluCommon Image Features 8*91f16700Schasinglulu--------------------- 9*91f16700Schasinglulu 10*91f16700Schasinglulu- Some of the names and abbreviated names have changed to accommodate new 11*91f16700Schasinglulu requirements. The changed names are as backward compatible as possible to 12*91f16700Schasinglulu minimize confusion. Where applicable, the previous names are indicated. Some 13*91f16700Schasinglulu code, documentation and build artefacts may still refer to the previous names; 14*91f16700Schasinglulu these will inevitably take time to catch up. 15*91f16700Schasinglulu 16*91f16700Schasinglulu- The main name change is to prefix each image with the processor it corresponds 17*91f16700Schasinglulu to (for example ``AP_``, ``SCP_``, ...). In situations where there is no 18*91f16700Schasinglulu ambiguity (for example, within AP specific code/documentation), it is 19*91f16700Schasinglulu permitted to omit the processor prefix (for example, just BL1 instead of 20*91f16700Schasinglulu ``AP_BL1``). 21*91f16700Schasinglulu 22*91f16700Schasinglulu- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either 23*91f16700Schasinglulu suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a 24*91f16700Schasinglulu subscript number, depending on whether rich text formatting was available. 25*91f16700Schasinglulu This was confusing and often the dash gets omitted in practice. Therefore the 26*91f16700Schasinglulu new form is to just omit the dash and not use subscript formatting. 27*91f16700Schasinglulu 28*91f16700Schasinglulu- The names no longer contain dash ("-") characters at all. In some places (for 29*91f16700Schasinglulu example, function names) it's not possible to use this character. All dashes 30*91f16700Schasinglulu are either removed or replaced by underscores ("_"). 31*91f16700Schasinglulu 32*91f16700Schasinglulu- The abbreviation BL stands for BootLoader. This is a historical anomaly. 33*91f16700Schasinglulu Clearly, many of these images are not BootLoaders, they are simply firmware 34*91f16700Schasinglulu images. However, the BL abbreviation is now widely used and is retained for 35*91f16700Schasinglulu backwards compatibility. 36*91f16700Schasinglulu 37*91f16700Schasinglulu- The image names are not case sensitive. For example, ``bl1`` is 38*91f16700Schasinglulu interchangeable with ``BL1``, although mixed case should be avoided. 39*91f16700Schasinglulu 40*91f16700SchasingluluTrusted Firmware Images 41*91f16700Schasinglulu----------------------- 42*91f16700Schasinglulu 43*91f16700SchasingluluFirmware Image Package: ``FIP`` 44*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45*91f16700Schasinglulu 46*91f16700SchasingluluThis is a packaging format used by TF-A to package firmware images in a single 47*91f16700Schasinglulubinary. The number and type of images that should be packed in a FIP is 48*91f16700Schasingluluplatform-specific and may include TF-A images and other firmware images 49*91f16700Schasinglulurequired by the platform. For example, most platforms require a BL33 image 50*91f16700Schasingluluwhich corresponds to the normal world bootloader (e.g. UEFI or U-Boot). 51*91f16700Schasinglulu 52*91f16700SchasingluluAP Boot ROM: ``AP_BL1`` 53*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~ 54*91f16700Schasinglulu 55*91f16700SchasingluluTypically, this is the first code to execute on the AP and cannot be modified. 56*91f16700SchasingluluIts primary purpose is to perform the minimum initialization necessary to load 57*91f16700Schasingluluand authenticate an updateable AP firmware image into an executable RAM 58*91f16700Schasinglululocation, then hand-off control to that image. 59*91f16700Schasinglulu 60*91f16700SchasingluluAP RAM Firmware: ``AP_BL2`` 61*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62*91f16700Schasinglulu 63*91f16700SchasingluluThis is the 2nd stage AP firmware. It is currently also known as the "Trusted 64*91f16700SchasingluluBoot Firmware". Its primary purpose is to perform any additional initialization 65*91f16700Schasinglulurequired to load and authenticate all 3rd level firmware images into their 66*91f16700Schasingluluexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware. 67*91f16700Schasinglulu 68*91f16700SchasingluluEL3 Runtime Firmware: ``AP_BL31`` 69*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70*91f16700Schasinglulu 71*91f16700SchasingluluAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose 72*91f16700Schasingluluis to handle transitions between the normal and secure world. 73*91f16700Schasinglulu 74*91f16700SchasingluluSecure-EL1 Payload (SP): ``AP_BL32`` 75*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76*91f16700Schasinglulu 77*91f16700SchasingluluTypically this is a TEE or Trusted OS, providing runtime secure services to the 78*91f16700Schasinglulunormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP). 79*91f16700SchasingluluNote that this abbreviation should only be used in systems where there is a 80*91f16700Schasinglulusingle or primary image executing at Secure-EL1. In systems where there are 81*91f16700Schasinglulupotentially multiple SPs and there is no concept of a primary SP, this 82*91f16700Schasingluluabbreviation should be avoided; use the recommended **Other AP 3rd level 83*91f16700Schasingluluimages** abbreviation instead. 84*91f16700Schasinglulu 85*91f16700SchasingluluAP Normal World Firmware: ``AP_BL33`` 86*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87*91f16700Schasinglulu 88*91f16700SchasingluluFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS. 89*91f16700Schasinglulu 90*91f16700SchasingluluOther AP 3rd level images: ``AP_BL3_XXX`` 91*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 92*91f16700Schasinglulu 93*91f16700SchasingluluThe abbreviated names of the existing 3rd level images imply a load/execution 94*91f16700Schasingluluordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``). Some systems may 95*91f16700Schasingluluhave additional images and/or a different load/execution ordering. The 96*91f16700Schasingluluabbreviated names of the existing images are retained for backward compatibility 97*91f16700Schasinglulubut new 3rd level images should be suffixed with an underscore followed by text 98*91f16700Schasingluluidentifier, not a number. 99*91f16700Schasinglulu 100*91f16700SchasingluluIn systems where 3rd level images are provided by different vendors, the 101*91f16700Schasingluluabbreviated name should identify the vendor as well as the image 102*91f16700Schasinglulufunction. For example, ``AP_BL3_ARM_RAS``. 103*91f16700Schasinglulu 104*91f16700SchasingluluRealm Monitor Management Firmware: ``RMM`` 105*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106*91f16700Schasinglulu 107*91f16700SchasingluluThis is the Realm-EL2 firmware. It is required if 108*91f16700Schasinglulu:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM 109*91f16700Schasingluluimage is not provided, TF-A builds Test Realm Payload (TRP) image by default 110*91f16700Schasingluluand uses it as the RMM image. 111*91f16700Schasinglulu 112*91f16700SchasingluluSCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 113*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114*91f16700Schasinglulu 115*91f16700SchasingluluTypically, this is the first code to execute on the SCP and cannot be modified. 116*91f16700SchasingluluIts primary purpose is to perform the minimum initialization necessary to load 117*91f16700Schasingluluand authenticate an updateable SCP firmware image into an executable RAM 118*91f16700Schasinglululocation, then hand-off control to that image. This may be performed in 119*91f16700Schasingluluconjunction with other processor firmware (for example, ``AP_BL1`` and 120*91f16700Schasinglulu``AP_BL2``). 121*91f16700Schasinglulu 122*91f16700SchasingluluThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 123*91f16700Schasinglulumay directly load/authenticate its own firmware. In these systems, it doesn't 124*91f16700Schasinglulumake sense to interleave the image terminology for AP and SCP; both AP and SCP 125*91f16700SchasingluluBoot ROMs are ``BL1`` from their own point of view. 126*91f16700Schasinglulu 127*91f16700SchasingluluSCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 128*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129*91f16700Schasinglulu 130*91f16700SchasingluluThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 131*91f16700Schasingluluruntime firmware" but it could potentially be an intermediate firmware if the 132*91f16700SchasingluluSCP needs to load/authenticate multiple 3rd level images in future. 133*91f16700Schasinglulu 134*91f16700SchasingluluThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 135*91f16700Schasingluluthis has always been the 2nd stage firmware. The previous name is too 136*91f16700SchasingluluAP-centric. 137*91f16700Schasinglulu 138*91f16700SchasingluluFirmware Update (FWU) Images 139*91f16700Schasinglulu---------------------------- 140*91f16700Schasinglulu 141*91f16700SchasingluluThe terminology for these images has not been widely adopted yet but they have 142*91f16700Schasingluluto be considered in a production Trusted Board Boot solution. 143*91f16700Schasinglulu 144*91f16700SchasingluluAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 145*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 146*91f16700Schasinglulu 147*91f16700SchasingluluTypically, this is the first normal world code to execute on the AP during a 148*91f16700Schasinglulufirmware update operation, and cannot be modified. Its primary purpose is to 149*91f16700Schasingluluload subsequent firmware update images from an external interface and communicate 150*91f16700Schasingluluwith ``AP_BL1`` to authenticate those images. 151*91f16700Schasinglulu 152*91f16700SchasingluluDuring firmware update, there are (potentially) multiple transitions between the 153*91f16700Schasinglulusecure and normal world. The "level" of the BL image is relative to the world 154*91f16700Schasingluluit's in so it makes sense to encode "NS" in the normal world images. The absence 155*91f16700Schasingluluof "NS" implies a secure world image. 156*91f16700Schasinglulu 157*91f16700SchasingluluAP Firmware Update Config: ``AP_BL2U`` 158*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159*91f16700Schasinglulu 160*91f16700SchasingluluThis image does the minimum necessary AP secure world configuration required to 161*91f16700Schasinglulucomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 162*91f16700Schasinglulufunctionality. 163*91f16700Schasinglulu 164*91f16700SchasingluluSCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 165*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 166*91f16700Schasinglulu 167*91f16700SchasingluluThis image does the minimum necessary SCP secure world configuration required to 168*91f16700Schasinglulucomplete the firmware update operation. It is potentially a subset of 169*91f16700Schasinglulu``SCP_BL2`` functionality. 170*91f16700Schasinglulu 171*91f16700SchasingluluAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 172*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 173*91f16700Schasinglulu 174*91f16700SchasingluluThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 175*91f16700Schasingluluto load a new set of firmware images from an external interface and write them 176*91f16700Schasingluluinto non-volatile storage. 177*91f16700Schasinglulu 178*91f16700SchasingluluOther Processor Firmware Images 179*91f16700Schasinglulu------------------------------- 180*91f16700Schasinglulu 181*91f16700SchasingluluSome systems may have additional processors to the AP and SCP. For example, a 182*91f16700SchasingluluManagement Control Processor (MCP). Images for these processors should follow 183*91f16700Schasingluluthe same terminology, with the processor abbreviation prefix, followed by 184*91f16700Schasingluluunderscore and the level of the firmware image. 185*91f16700Schasinglulu 186*91f16700SchasingluluFor example, 187*91f16700Schasinglulu 188*91f16700SchasingluluMCP Boot ROM: ``MCP_BL1`` 189*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~ 190*91f16700Schasinglulu 191*91f16700SchasingluluMCP RAM Firmware: ``MCP_BL2`` 192*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193