1*54fd6939SJiyong ParkImage Terminology 2*54fd6939SJiyong Park================= 3*54fd6939SJiyong Park 4*54fd6939SJiyong ParkThis page contains the current name, abbreviated name and purpose of the various 5*54fd6939SJiyong Parkimages referred to in the Trusted Firmware project. 6*54fd6939SJiyong Park 7*54fd6939SJiyong ParkGeneral Notes 8*54fd6939SJiyong Park------------- 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park- Some of the names and abbreviated names have changed to accommodate new 11*54fd6939SJiyong Park requirements. The changed names are as backward compatible as possible to 12*54fd6939SJiyong Park minimize confusion. Where applicable, the previous names are indicated. Some 13*54fd6939SJiyong Park code, documentation and build artefacts may still refer to the previous names; 14*54fd6939SJiyong Park these will inevitably take time to catch up. 15*54fd6939SJiyong Park 16*54fd6939SJiyong Park- The main name change is to prefix each image with the processor it corresponds 17*54fd6939SJiyong Park to (for example ``AP_``, ``SCP_``, ...). In situations where there is no 18*54fd6939SJiyong Park ambiguity (for example, within AP specific code/documentation), it is 19*54fd6939SJiyong Park permitted to omit the processor prefix (for example, just BL1 instead of 20*54fd6939SJiyong Park ``AP_BL1``). 21*54fd6939SJiyong Park 22*54fd6939SJiyong Park- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either 23*54fd6939SJiyong Park suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a 24*54fd6939SJiyong Park subscript number, depending on whether rich text formatting was available. 25*54fd6939SJiyong Park This was confusing and often the dash gets omitted in practice. Therefore the 26*54fd6939SJiyong Park new form is to just omit the dash and not use subscript formatting. 27*54fd6939SJiyong Park 28*54fd6939SJiyong Park- The names no longer contain dash ("-") characters at all. In some places (for 29*54fd6939SJiyong Park example, function names) it's not possible to use this character. All dashes 30*54fd6939SJiyong Park are either removed or replaced by underscores ("_"). 31*54fd6939SJiyong Park 32*54fd6939SJiyong Park- The abbreviation BL stands for BootLoader. This is a historical anomaly. 33*54fd6939SJiyong Park Clearly, many of these images are not BootLoaders, they are simply firmware 34*54fd6939SJiyong Park images. However, the BL abbreviation is now widely used and is retained for 35*54fd6939SJiyong Park backwards compatibility. 36*54fd6939SJiyong Park 37*54fd6939SJiyong Park- The image names are not case sensitive. For example, ``bl1`` is 38*54fd6939SJiyong Park interchangeable with ``BL1``, although mixed case should be avoided. 39*54fd6939SJiyong Park 40*54fd6939SJiyong ParkTrusted Firmware Images 41*54fd6939SJiyong Park----------------------- 42*54fd6939SJiyong Park 43*54fd6939SJiyong ParkAP Boot ROM: ``AP_BL1`` 44*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~ 45*54fd6939SJiyong Park 46*54fd6939SJiyong ParkTypically, this is the first code to execute on the AP and cannot be modified. 47*54fd6939SJiyong ParkIts primary purpose is to perform the minimum initialization necessary to load 48*54fd6939SJiyong Parkand authenticate an updateable AP firmware image into an executable RAM 49*54fd6939SJiyong Parklocation, then hand-off control to that image. 50*54fd6939SJiyong Park 51*54fd6939SJiyong ParkAP RAM Firmware: ``AP_BL2`` 52*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53*54fd6939SJiyong Park 54*54fd6939SJiyong ParkThis is the 2nd stage AP firmware. It is currently also known as the "Trusted 55*54fd6939SJiyong ParkBoot Firmware". Its primary purpose is to perform any additional initialization 56*54fd6939SJiyong Parkrequired to load and authenticate all 3rd level firmware images into their 57*54fd6939SJiyong Parkexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware. 58*54fd6939SJiyong Park 59*54fd6939SJiyong ParkEL3 Runtime Firmware: ``AP_BL31`` 60*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61*54fd6939SJiyong Park 62*54fd6939SJiyong ParkAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose 63*54fd6939SJiyong Parkis to handle transitions between the normal and secure world. 64*54fd6939SJiyong Park 65*54fd6939SJiyong ParkSecure-EL1 Payload (SP): ``AP_BL32`` 66*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67*54fd6939SJiyong Park 68*54fd6939SJiyong ParkTypically this is a TEE or Trusted OS, providing runtime secure services to the 69*54fd6939SJiyong Parknormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP). 70*54fd6939SJiyong ParkNote that this abbreviation should only be used in systems where there is a 71*54fd6939SJiyong Parksingle or primary image executing at Secure-EL1. In systems where there are 72*54fd6939SJiyong Parkpotentially multiple SPs and there is no concept of a primary SP, this 73*54fd6939SJiyong Parkabbreviation should be avoided; use the recommended **Other AP 3rd level 74*54fd6939SJiyong Parkimages** abbreviation instead. 75*54fd6939SJiyong Park 76*54fd6939SJiyong ParkAP Normal World Firmware: ``AP_BL33`` 77*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78*54fd6939SJiyong Park 79*54fd6939SJiyong ParkFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS. 80*54fd6939SJiyong Park 81*54fd6939SJiyong ParkOther AP 3rd level images: ``AP_BL3_XXX`` 82*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83*54fd6939SJiyong Park 84*54fd6939SJiyong ParkThe abbreviated names of the existing 3rd level images imply a load/execution 85*54fd6939SJiyong Parkordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``). Some systems may 86*54fd6939SJiyong Parkhave additional images and/or a different load/execution ordering. The 87*54fd6939SJiyong Parkabbreviated names of the existing images are retained for backward compatibility 88*54fd6939SJiyong Parkbut new 3rd level images should be suffixed with an underscore followed by text 89*54fd6939SJiyong Parkidentifier, not a number. 90*54fd6939SJiyong Park 91*54fd6939SJiyong ParkIn systems where 3rd level images are provided by different vendors, the 92*54fd6939SJiyong Parkabbreviated name should identify the vendor as well as the image 93*54fd6939SJiyong Parkfunction. For example, ``AP_BL3_ARM_RAS``. 94*54fd6939SJiyong Park 95*54fd6939SJiyong ParkRealm Monitor Management Firmware: ``RMM`` 96*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97*54fd6939SJiyong Park 98*54fd6939SJiyong ParkThis is the Realm-EL2 firmware. It is required if 99*54fd6939SJiyong Park:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM 100*54fd6939SJiyong Parkimage is not provided, TF-A builds Test Realm Payload (TRP) image by default 101*54fd6939SJiyong Parkand uses it as the RMM image. 102*54fd6939SJiyong Park 103*54fd6939SJiyong ParkSCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 104*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 105*54fd6939SJiyong Park 106*54fd6939SJiyong ParkTypically, this is the first code to execute on the SCP and cannot be modified. 107*54fd6939SJiyong ParkIts primary purpose is to perform the minimum initialization necessary to load 108*54fd6939SJiyong Parkand authenticate an updateable SCP firmware image into an executable RAM 109*54fd6939SJiyong Parklocation, then hand-off control to that image. This may be performed in 110*54fd6939SJiyong Parkconjunction with other processor firmware (for example, ``AP_BL1`` and 111*54fd6939SJiyong Park``AP_BL2``). 112*54fd6939SJiyong Park 113*54fd6939SJiyong ParkThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 114*54fd6939SJiyong Parkmay directly load/authenticate its own firmware. In these systems, it doesn't 115*54fd6939SJiyong Parkmake sense to interleave the image terminology for AP and SCP; both AP and SCP 116*54fd6939SJiyong ParkBoot ROMs are ``BL1`` from their own point of view. 117*54fd6939SJiyong Park 118*54fd6939SJiyong ParkSCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 119*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120*54fd6939SJiyong Park 121*54fd6939SJiyong ParkThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 122*54fd6939SJiyong Parkruntime firmware" but it could potentially be an intermediate firmware if the 123*54fd6939SJiyong ParkSCP needs to load/authenticate multiple 3rd level images in future. 124*54fd6939SJiyong Park 125*54fd6939SJiyong ParkThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 126*54fd6939SJiyong Parkthis has always been the 2nd stage firmware. The previous name is too 127*54fd6939SJiyong ParkAP-centric. 128*54fd6939SJiyong Park 129*54fd6939SJiyong ParkFirmware Update (FWU) Images 130*54fd6939SJiyong Park---------------------------- 131*54fd6939SJiyong Park 132*54fd6939SJiyong ParkThe terminology for these images has not been widely adopted yet but they have 133*54fd6939SJiyong Parkto be considered in a production Trusted Board Boot solution. 134*54fd6939SJiyong Park 135*54fd6939SJiyong ParkAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 136*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137*54fd6939SJiyong Park 138*54fd6939SJiyong ParkTypically, this is the first normal world code to execute on the AP during a 139*54fd6939SJiyong Parkfirmware update operation, and cannot be modified. Its primary purpose is to 140*54fd6939SJiyong Parkload subsequent firmware update images from an external interface and communicate 141*54fd6939SJiyong Parkwith ``AP_BL1`` to authenticate those images. 142*54fd6939SJiyong Park 143*54fd6939SJiyong ParkDuring firmware update, there are (potentially) multiple transitions between the 144*54fd6939SJiyong Parksecure and normal world. The "level" of the BL image is relative to the world 145*54fd6939SJiyong Parkit's in so it makes sense to encode "NS" in the normal world images. The absence 146*54fd6939SJiyong Parkof "NS" implies a secure world image. 147*54fd6939SJiyong Park 148*54fd6939SJiyong ParkAP Firmware Update Config: ``AP_BL2U`` 149*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 150*54fd6939SJiyong Park 151*54fd6939SJiyong ParkThis image does the minimum necessary AP secure world configuration required to 152*54fd6939SJiyong Parkcomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 153*54fd6939SJiyong Parkfunctionality. 154*54fd6939SJiyong Park 155*54fd6939SJiyong ParkSCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 156*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 157*54fd6939SJiyong Park 158*54fd6939SJiyong ParkThis image does the minimum necessary SCP secure world configuration required to 159*54fd6939SJiyong Parkcomplete the firmware update operation. It is potentially a subset of 160*54fd6939SJiyong Park``SCP_BL2`` functionality. 161*54fd6939SJiyong Park 162*54fd6939SJiyong ParkAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 163*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 164*54fd6939SJiyong Park 165*54fd6939SJiyong ParkThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 166*54fd6939SJiyong Parkto load a new set of firmware images from an external interface and write them 167*54fd6939SJiyong Parkinto non-volatile storage. 168*54fd6939SJiyong Park 169*54fd6939SJiyong ParkOther Processor Firmware Images 170*54fd6939SJiyong Park------------------------------- 171*54fd6939SJiyong Park 172*54fd6939SJiyong ParkSome systems may have additional processors to the AP and SCP. For example, a 173*54fd6939SJiyong ParkManagement Control Processor (MCP). Images for these processors should follow 174*54fd6939SJiyong Parkthe same terminology, with the processor abbreviation prefix, followed by 175*54fd6939SJiyong Parkunderscore and the level of the firmware image. 176*54fd6939SJiyong Park 177*54fd6939SJiyong ParkFor example, 178*54fd6939SJiyong Park 179*54fd6939SJiyong ParkMCP Boot ROM: ``MCP_BL1`` 180*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~ 181*54fd6939SJiyong Park 182*54fd6939SJiyong ParkMCP RAM Firmware: ``MCP_BL2`` 183*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184