1*40d553cfSPaul BeesleyImage Terminology 2*40d553cfSPaul Beesley================= 3*40d553cfSPaul Beesley 4*40d553cfSPaul Beesley.. section-numbering:: 5*40d553cfSPaul Beesley :suffix: . 6*40d553cfSPaul Beesley 7*40d553cfSPaul Beesley.. contents:: 8*40d553cfSPaul Beesley 9*40d553cfSPaul BeesleyThis page contains the current name, abbreviated name and purpose of the various 10*40d553cfSPaul Beesleyimages referred to in the Trusted Firmware project. 11*40d553cfSPaul Beesley 12*40d553cfSPaul BeesleyGeneral Notes 13*40d553cfSPaul Beesley------------- 14*40d553cfSPaul Beesley 15*40d553cfSPaul Beesley- Some of the names and abbreviated names have changed to accomodate new 16*40d553cfSPaul Beesley requirements. The changed names are as backward compatible as possible to 17*40d553cfSPaul Beesley minimize confusion. Where applicable, the previous names are indicated. Some 18*40d553cfSPaul Beesley code, documentation and build artefacts may still refer to the previous names; 19*40d553cfSPaul Beesley these will inevitably take time to catch up. 20*40d553cfSPaul Beesley 21*40d553cfSPaul Beesley- The main name change is to prefix each image with the processor it corresponds 22*40d553cfSPaul Beesley to (for example ``AP_``, ``SCP_``, ...). In situations where there is no 23*40d553cfSPaul Beesley ambiguity (for example, within AP specific code/documentation), it is 24*40d553cfSPaul Beesley permitted to omit the processor prefix (for example, just BL1 instead of 25*40d553cfSPaul Beesley ``AP_BL1``). 26*40d553cfSPaul Beesley 27*40d553cfSPaul Beesley- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either 28*40d553cfSPaul Beesley suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a 29*40d553cfSPaul Beesley subscript number, depending on whether rich text formatting was available. 30*40d553cfSPaul Beesley This was confusing and often the dash gets omitted in practice. Therefore the 31*40d553cfSPaul Beesley new form is to just omit the dash and not use subscript formatting. 32*40d553cfSPaul Beesley 33*40d553cfSPaul Beesley- The names no longer contain dash ("-") characters at all. In some places (for 34*40d553cfSPaul Beesley example, function names) it's not possible to use this character. All dashes 35*40d553cfSPaul Beesley are either removed or replaced by underscores ("_"). 36*40d553cfSPaul Beesley 37*40d553cfSPaul Beesley- The abbreviation BL stands for BootLoader. This is a historical anomaly. 38*40d553cfSPaul Beesley Clearly, many of these images are not BootLoaders, they are simply firmware 39*40d553cfSPaul Beesley images. However, the BL abbreviation is now widely used and is retained for 40*40d553cfSPaul Beesley backwards compatibility. 41*40d553cfSPaul Beesley 42*40d553cfSPaul Beesley- The image names are not case sensitive. For example, ``bl1`` is 43*40d553cfSPaul Beesley interchangeable with ``BL1``, although mixed case should be avoided. 44*40d553cfSPaul Beesley 45*40d553cfSPaul BeesleyTrusted Firmware Images 46*40d553cfSPaul Beesley----------------------- 47*40d553cfSPaul Beesley 48*40d553cfSPaul BeesleyAP Boot ROM: ``AP_BL1`` 49*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~ 50*40d553cfSPaul Beesley 51*40d553cfSPaul BeesleyTypically, this is the first code to execute on the AP and cannot be modified. 52*40d553cfSPaul BeesleyIts primary purpose is to perform the minimum intialization necessary to load 53*40d553cfSPaul Beesleyand authenticate an updateable AP firmware image into an executable RAM 54*40d553cfSPaul Beesleylocation, then hand-off control to that image. 55*40d553cfSPaul Beesley 56*40d553cfSPaul BeesleyAP RAM Firmware: ``AP_BL2`` 57*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58*40d553cfSPaul Beesley 59*40d553cfSPaul BeesleyThis is the 2nd stage AP firmware. It is currently also known as the "Trusted 60*40d553cfSPaul BeesleyBoot Firmware". Its primary purpose is to perform any additional initialization 61*40d553cfSPaul Beesleyrequired to load and authenticate all 3rd level firmware images into their 62*40d553cfSPaul Beesleyexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware. 63*40d553cfSPaul Beesley 64*40d553cfSPaul BeesleyEL3 Runtime Firmware: ``AP_BL31`` 65*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66*40d553cfSPaul Beesley 67*40d553cfSPaul BeesleyAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose 68*40d553cfSPaul Beesleyis to handle transitions between the normal and secure world. 69*40d553cfSPaul Beesley 70*40d553cfSPaul BeesleySecure-EL1 Payload (SP): ``AP_BL32`` 71*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 72*40d553cfSPaul Beesley 73*40d553cfSPaul BeesleyTypically this is a TEE or Trusted OS, providing runtime secure services to the 74*40d553cfSPaul Beesleynormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP). 75*40d553cfSPaul BeesleyNote that this abbreviation should only be used in systems where there is a 76*40d553cfSPaul Beesleysingle or primary image executing at Secure-EL1. In systems where there are 77*40d553cfSPaul Beesleypotentially multiple SPs and there is no concept of a primary SP, this 78*40d553cfSPaul Beesleyabbreviation should be avoided; use the recommended **Other AP 3rd level 79*40d553cfSPaul Beesleyimages** abbreviation instead. 80*40d553cfSPaul Beesley 81*40d553cfSPaul BeesleyAP Normal World Firmware: ``AP_BL33`` 82*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83*40d553cfSPaul Beesley 84*40d553cfSPaul BeesleyFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS. 85*40d553cfSPaul Beesley 86*40d553cfSPaul BeesleyOther AP 3rd level images: ``AP_BL3_XXX`` 87*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 88*40d553cfSPaul Beesley 89*40d553cfSPaul BeesleyThe abbreviated names of the existing 3rd level images imply a load/execution 90*40d553cfSPaul Beesleyordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``). Some systems may 91*40d553cfSPaul Beesleyhave additional images and/or a different load/execution ordering. The 92*40d553cfSPaul Beesleyabbreviated names of the existing images are retained for backward compatibility 93*40d553cfSPaul Beesleybut new 3rd level images should be suffixed with an underscore followed by text 94*40d553cfSPaul Beesleyidentifier, not a number. 95*40d553cfSPaul Beesley 96*40d553cfSPaul BeesleyIn systems where 3rd level images are provided by different vendors, the 97*40d553cfSPaul Beesleyabbreviated name should identify the vendor as well as the image 98*40d553cfSPaul Beesleyfunction. For example, ``AP_BL3_ARM_RAS``. 99*40d553cfSPaul Beesley 100*40d553cfSPaul BeesleySCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 101*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102*40d553cfSPaul Beesley 103*40d553cfSPaul BeesleyTypically, this is the first code to execute on the SCP and cannot be modified. 104*40d553cfSPaul BeesleyIts primary purpose is to perform the minimum intialization necessary to load 105*40d553cfSPaul Beesleyand authenticate an updateable SCP firmware image into an executable RAM 106*40d553cfSPaul Beesleylocation, then hand-off control to that image. This may be performed in 107*40d553cfSPaul Beesleyconjunction with other processor firmware (for example, ``AP_BL1`` and 108*40d553cfSPaul Beesley``AP_BL2``). 109*40d553cfSPaul Beesley 110*40d553cfSPaul BeesleyThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 111*40d553cfSPaul Beesleymay directly load/authenticate its own firmware. In these systems, it doesn't 112*40d553cfSPaul Beesleymake sense to interleave the image terminology for AP and SCP; both AP and SCP 113*40d553cfSPaul BeesleyBoot ROMs are ``BL1`` from their own point of view. 114*40d553cfSPaul Beesley 115*40d553cfSPaul BeesleySCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 116*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117*40d553cfSPaul Beesley 118*40d553cfSPaul BeesleyThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 119*40d553cfSPaul Beesleyruntime firmware" but it could potentially be an intermediate firmware if the 120*40d553cfSPaul BeesleySCP needs to load/authenticate multiple 3rd level images in future. 121*40d553cfSPaul Beesley 122*40d553cfSPaul BeesleyThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 123*40d553cfSPaul Beesleythis has always been the 2nd stage firmware. The previous name is too 124*40d553cfSPaul BeesleyAP-centric. 125*40d553cfSPaul Beesley 126*40d553cfSPaul BeesleyFirmware Update (FWU) Images 127*40d553cfSPaul Beesley---------------------------- 128*40d553cfSPaul Beesley 129*40d553cfSPaul BeesleyThe terminology for these images has not been widely adopted yet but they have 130*40d553cfSPaul Beesleyto be considered in a production Trusted Board Boot solution. 131*40d553cfSPaul Beesley 132*40d553cfSPaul BeesleyAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 133*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 134*40d553cfSPaul Beesley 135*40d553cfSPaul BeesleyTypically, this is the first normal world code to execute on the AP during a 136*40d553cfSPaul Beesleyfirmware update operation, and cannot be modified. Its primary purpose is to 137*40d553cfSPaul Beesleyload subequent firmware update images from an external interface and communicate 138*40d553cfSPaul Beesleywith ``AP_BL1`` to authenticate those images. 139*40d553cfSPaul Beesley 140*40d553cfSPaul BeesleyDuring firmware update, there are (potentially) multiple transitions between the 141*40d553cfSPaul Beesleysecure and normal world. The "level" of the BL image is relative to the world 142*40d553cfSPaul Beesleyit's in so it makes sense to encode "NS" in the normal world images. The absence 143*40d553cfSPaul Beesleyof "NS" implies a secure world image. 144*40d553cfSPaul Beesley 145*40d553cfSPaul BeesleyAP Firmware Update Config: ``AP_BL2U`` 146*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 147*40d553cfSPaul Beesley 148*40d553cfSPaul BeesleyThis image does the minimum necessary AP secure world configuration required to 149*40d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 150*40d553cfSPaul Beesleyfunctionality. 151*40d553cfSPaul Beesley 152*40d553cfSPaul BeesleySCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 153*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 154*40d553cfSPaul Beesley 155*40d553cfSPaul BeesleyThis image does the minimum necessary SCP secure world configuration required to 156*40d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of 157*40d553cfSPaul Beesley``SCP_BL2`` functionality. 158*40d553cfSPaul Beesley 159*40d553cfSPaul BeesleyAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 160*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 161*40d553cfSPaul Beesley 162*40d553cfSPaul BeesleyThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 163*40d553cfSPaul Beesleyto load a new set of firmware images from an external interface and write them 164*40d553cfSPaul Beesleyinto non-volatile storage. 165*40d553cfSPaul Beesley 166*40d553cfSPaul BeesleyOther Processor Firmware Images 167*40d553cfSPaul Beesley------------------------------- 168*40d553cfSPaul Beesley 169*40d553cfSPaul BeesleySome systems may have additional processors to the AP and SCP. For example, a 170*40d553cfSPaul BeesleyManagement Control Processor (MCP). Images for these processors should follow 171*40d553cfSPaul Beesleythe same terminology, with the processor abbreviation prefix, followed by 172*40d553cfSPaul Beesleyunderscore and the level of the firmware image. 173*40d553cfSPaul Beesley 174*40d553cfSPaul BeesleyFor example, 175*40d553cfSPaul Beesley 176*40d553cfSPaul BeesleyMCP Boot ROM: ``MCP_BL1`` 177*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~ 178*40d553cfSPaul Beesley 179*40d553cfSPaul BeesleyMCP RAM Firmware: ``MCP_BL2`` 180*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 181