140d553cfSPaul BeesleyImage Terminology 240d553cfSPaul Beesley================= 340d553cfSPaul Beesley 440d553cfSPaul BeesleyThis page contains the current name, abbreviated name and purpose of the various 540d553cfSPaul Beesleyimages referred to in the Trusted Firmware project. 640d553cfSPaul Beesley 740d553cfSPaul BeesleyGeneral Notes 840d553cfSPaul Beesley------------- 940d553cfSPaul Beesley 10be653a69SPaul Beesley- Some of the names and abbreviated names have changed to accommodate new 1140d553cfSPaul Beesley requirements. The changed names are as backward compatible as possible to 1240d553cfSPaul Beesley minimize confusion. Where applicable, the previous names are indicated. Some 1340d553cfSPaul Beesley code, documentation and build artefacts may still refer to the previous names; 1440d553cfSPaul Beesley these will inevitably take time to catch up. 1540d553cfSPaul Beesley 1640d553cfSPaul Beesley- The main name change is to prefix each image with the processor it corresponds 1740d553cfSPaul Beesley to (for example ``AP_``, ``SCP_``, ...). In situations where there is no 1840d553cfSPaul Beesley ambiguity (for example, within AP specific code/documentation), it is 1940d553cfSPaul Beesley permitted to omit the processor prefix (for example, just BL1 instead of 2040d553cfSPaul Beesley ``AP_BL1``). 2140d553cfSPaul Beesley 2240d553cfSPaul Beesley- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either 2340d553cfSPaul Beesley suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a 2440d553cfSPaul Beesley subscript number, depending on whether rich text formatting was available. 2540d553cfSPaul Beesley This was confusing and often the dash gets omitted in practice. Therefore the 2640d553cfSPaul Beesley new form is to just omit the dash and not use subscript formatting. 2740d553cfSPaul Beesley 2840d553cfSPaul Beesley- The names no longer contain dash ("-") characters at all. In some places (for 2940d553cfSPaul Beesley example, function names) it's not possible to use this character. All dashes 3040d553cfSPaul Beesley are either removed or replaced by underscores ("_"). 3140d553cfSPaul Beesley 3240d553cfSPaul Beesley- The abbreviation BL stands for BootLoader. This is a historical anomaly. 3340d553cfSPaul Beesley Clearly, many of these images are not BootLoaders, they are simply firmware 3440d553cfSPaul Beesley images. However, the BL abbreviation is now widely used and is retained for 3540d553cfSPaul Beesley backwards compatibility. 3640d553cfSPaul Beesley 3740d553cfSPaul Beesley- The image names are not case sensitive. For example, ``bl1`` is 3840d553cfSPaul Beesley interchangeable with ``BL1``, although mixed case should be avoided. 3940d553cfSPaul Beesley 4040d553cfSPaul BeesleyTrusted Firmware Images 4140d553cfSPaul Beesley----------------------- 4240d553cfSPaul Beesley 4340d553cfSPaul BeesleyAP Boot ROM: ``AP_BL1`` 4440d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~ 4540d553cfSPaul Beesley 4640d553cfSPaul BeesleyTypically, this is the first code to execute on the AP and cannot be modified. 47be653a69SPaul BeesleyIts primary purpose is to perform the minimum initialization necessary to load 4840d553cfSPaul Beesleyand authenticate an updateable AP firmware image into an executable RAM 4940d553cfSPaul Beesleylocation, then hand-off control to that image. 5040d553cfSPaul Beesley 5140d553cfSPaul BeesleyAP RAM Firmware: ``AP_BL2`` 5240d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5340d553cfSPaul Beesley 5440d553cfSPaul BeesleyThis is the 2nd stage AP firmware. It is currently also known as the "Trusted 5540d553cfSPaul BeesleyBoot Firmware". Its primary purpose is to perform any additional initialization 5640d553cfSPaul Beesleyrequired to load and authenticate all 3rd level firmware images into their 5740d553cfSPaul Beesleyexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware. 5840d553cfSPaul Beesley 5940d553cfSPaul BeesleyEL3 Runtime Firmware: ``AP_BL31`` 6040d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6140d553cfSPaul Beesley 6240d553cfSPaul BeesleyAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose 6340d553cfSPaul Beesleyis to handle transitions between the normal and secure world. 6440d553cfSPaul Beesley 6540d553cfSPaul BeesleySecure-EL1 Payload (SP): ``AP_BL32`` 6640d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6740d553cfSPaul Beesley 6840d553cfSPaul BeesleyTypically this is a TEE or Trusted OS, providing runtime secure services to the 6940d553cfSPaul Beesleynormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP). 7040d553cfSPaul BeesleyNote that this abbreviation should only be used in systems where there is a 7140d553cfSPaul Beesleysingle or primary image executing at Secure-EL1. In systems where there are 7240d553cfSPaul Beesleypotentially multiple SPs and there is no concept of a primary SP, this 7340d553cfSPaul Beesleyabbreviation should be avoided; use the recommended **Other AP 3rd level 7440d553cfSPaul Beesleyimages** abbreviation instead. 7540d553cfSPaul Beesley 7640d553cfSPaul BeesleyAP Normal World Firmware: ``AP_BL33`` 7740d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7840d553cfSPaul Beesley 7940d553cfSPaul BeesleyFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS. 8040d553cfSPaul Beesley 8140d553cfSPaul BeesleyOther AP 3rd level images: ``AP_BL3_XXX`` 8240d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8340d553cfSPaul Beesley 8440d553cfSPaul BeesleyThe abbreviated names of the existing 3rd level images imply a load/execution 8540d553cfSPaul Beesleyordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``). Some systems may 8640d553cfSPaul Beesleyhave additional images and/or a different load/execution ordering. The 8740d553cfSPaul Beesleyabbreviated names of the existing images are retained for backward compatibility 8840d553cfSPaul Beesleybut new 3rd level images should be suffixed with an underscore followed by text 8940d553cfSPaul Beesleyidentifier, not a number. 9040d553cfSPaul Beesley 9140d553cfSPaul BeesleyIn systems where 3rd level images are provided by different vendors, the 9240d553cfSPaul Beesleyabbreviated name should identify the vendor as well as the image 9340d553cfSPaul Beesleyfunction. For example, ``AP_BL3_ARM_RAS``. 9440d553cfSPaul Beesley 95*7446c266SZelalem AwekeRealm Monitor Management Firmware: ``RMM`` 96*7446c266SZelalem Aweke~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97*7446c266SZelalem Aweke 98*7446c266SZelalem AwekeThis is the Realm-EL2 firmware. It is required if 99*7446c266SZelalem Aweke:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM 100*7446c266SZelalem Awekeimage is not provided, TF-A builds Test Realm Payload (TRP) image by default 101*7446c266SZelalem Awekeand uses it as the RMM image. 102*7446c266SZelalem Aweke 10340d553cfSPaul BeesleySCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 10440d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10540d553cfSPaul Beesley 10640d553cfSPaul BeesleyTypically, this is the first code to execute on the SCP and cannot be modified. 107be653a69SPaul BeesleyIts primary purpose is to perform the minimum initialization necessary to load 10840d553cfSPaul Beesleyand authenticate an updateable SCP firmware image into an executable RAM 10940d553cfSPaul Beesleylocation, then hand-off control to that image. This may be performed in 11040d553cfSPaul Beesleyconjunction with other processor firmware (for example, ``AP_BL1`` and 11140d553cfSPaul Beesley``AP_BL2``). 11240d553cfSPaul Beesley 11340d553cfSPaul BeesleyThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 11440d553cfSPaul Beesleymay directly load/authenticate its own firmware. In these systems, it doesn't 11540d553cfSPaul Beesleymake sense to interleave the image terminology for AP and SCP; both AP and SCP 11640d553cfSPaul BeesleyBoot ROMs are ``BL1`` from their own point of view. 11740d553cfSPaul Beesley 11840d553cfSPaul BeesleySCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 11940d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12040d553cfSPaul Beesley 12140d553cfSPaul BeesleyThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 12240d553cfSPaul Beesleyruntime firmware" but it could potentially be an intermediate firmware if the 12340d553cfSPaul BeesleySCP needs to load/authenticate multiple 3rd level images in future. 12440d553cfSPaul Beesley 12540d553cfSPaul BeesleyThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 12640d553cfSPaul Beesleythis has always been the 2nd stage firmware. The previous name is too 12740d553cfSPaul BeesleyAP-centric. 12840d553cfSPaul Beesley 12940d553cfSPaul BeesleyFirmware Update (FWU) Images 13040d553cfSPaul Beesley---------------------------- 13140d553cfSPaul Beesley 13240d553cfSPaul BeesleyThe terminology for these images has not been widely adopted yet but they have 13340d553cfSPaul Beesleyto be considered in a production Trusted Board Boot solution. 13440d553cfSPaul Beesley 13540d553cfSPaul BeesleyAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 13640d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13740d553cfSPaul Beesley 13840d553cfSPaul BeesleyTypically, this is the first normal world code to execute on the AP during a 13940d553cfSPaul Beesleyfirmware update operation, and cannot be modified. Its primary purpose is to 140be653a69SPaul Beesleyload subsequent firmware update images from an external interface and communicate 14140d553cfSPaul Beesleywith ``AP_BL1`` to authenticate those images. 14240d553cfSPaul Beesley 14340d553cfSPaul BeesleyDuring firmware update, there are (potentially) multiple transitions between the 14440d553cfSPaul Beesleysecure and normal world. The "level" of the BL image is relative to the world 14540d553cfSPaul Beesleyit's in so it makes sense to encode "NS" in the normal world images. The absence 14640d553cfSPaul Beesleyof "NS" implies a secure world image. 14740d553cfSPaul Beesley 14840d553cfSPaul BeesleyAP Firmware Update Config: ``AP_BL2U`` 14940d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15040d553cfSPaul Beesley 15140d553cfSPaul BeesleyThis image does the minimum necessary AP secure world configuration required to 15240d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 15340d553cfSPaul Beesleyfunctionality. 15440d553cfSPaul Beesley 15540d553cfSPaul BeesleySCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 15640d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15740d553cfSPaul Beesley 15840d553cfSPaul BeesleyThis image does the minimum necessary SCP secure world configuration required to 15940d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of 16040d553cfSPaul Beesley``SCP_BL2`` functionality. 16140d553cfSPaul Beesley 16240d553cfSPaul BeesleyAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 16340d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 16440d553cfSPaul Beesley 16540d553cfSPaul BeesleyThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 16640d553cfSPaul Beesleyto load a new set of firmware images from an external interface and write them 16740d553cfSPaul Beesleyinto non-volatile storage. 16840d553cfSPaul Beesley 16940d553cfSPaul BeesleyOther Processor Firmware Images 17040d553cfSPaul Beesley------------------------------- 17140d553cfSPaul Beesley 17240d553cfSPaul BeesleySome systems may have additional processors to the AP and SCP. For example, a 17340d553cfSPaul BeesleyManagement Control Processor (MCP). Images for these processors should follow 17440d553cfSPaul Beesleythe same terminology, with the processor abbreviation prefix, followed by 17540d553cfSPaul Beesleyunderscore and the level of the firmware image. 17640d553cfSPaul Beesley 17740d553cfSPaul BeesleyFor example, 17840d553cfSPaul Beesley 17940d553cfSPaul BeesleyMCP Boot ROM: ``MCP_BL1`` 18040d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~ 18140d553cfSPaul Beesley 18240d553cfSPaul BeesleyMCP RAM Firmware: ``MCP_BL2`` 18340d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184