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 10*be653a69SPaul 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. 47*be653a69SPaul 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 9540d553cfSPaul BeesleySCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 9640d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9740d553cfSPaul Beesley 9840d553cfSPaul BeesleyTypically, this is the first code to execute on the SCP and cannot be modified. 99*be653a69SPaul BeesleyIts primary purpose is to perform the minimum initialization necessary to load 10040d553cfSPaul Beesleyand authenticate an updateable SCP firmware image into an executable RAM 10140d553cfSPaul Beesleylocation, then hand-off control to that image. This may be performed in 10240d553cfSPaul Beesleyconjunction with other processor firmware (for example, ``AP_BL1`` and 10340d553cfSPaul Beesley``AP_BL2``). 10440d553cfSPaul Beesley 10540d553cfSPaul BeesleyThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 10640d553cfSPaul Beesleymay directly load/authenticate its own firmware. In these systems, it doesn't 10740d553cfSPaul Beesleymake sense to interleave the image terminology for AP and SCP; both AP and SCP 10840d553cfSPaul BeesleyBoot ROMs are ``BL1`` from their own point of view. 10940d553cfSPaul Beesley 11040d553cfSPaul BeesleySCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 11140d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11240d553cfSPaul Beesley 11340d553cfSPaul BeesleyThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 11440d553cfSPaul Beesleyruntime firmware" but it could potentially be an intermediate firmware if the 11540d553cfSPaul BeesleySCP needs to load/authenticate multiple 3rd level images in future. 11640d553cfSPaul Beesley 11740d553cfSPaul BeesleyThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 11840d553cfSPaul Beesleythis has always been the 2nd stage firmware. The previous name is too 11940d553cfSPaul BeesleyAP-centric. 12040d553cfSPaul Beesley 12140d553cfSPaul BeesleyFirmware Update (FWU) Images 12240d553cfSPaul Beesley---------------------------- 12340d553cfSPaul Beesley 12440d553cfSPaul BeesleyThe terminology for these images has not been widely adopted yet but they have 12540d553cfSPaul Beesleyto be considered in a production Trusted Board Boot solution. 12640d553cfSPaul Beesley 12740d553cfSPaul BeesleyAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 12840d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12940d553cfSPaul Beesley 13040d553cfSPaul BeesleyTypically, this is the first normal world code to execute on the AP during a 13140d553cfSPaul Beesleyfirmware update operation, and cannot be modified. Its primary purpose is to 132*be653a69SPaul Beesleyload subsequent firmware update images from an external interface and communicate 13340d553cfSPaul Beesleywith ``AP_BL1`` to authenticate those images. 13440d553cfSPaul Beesley 13540d553cfSPaul BeesleyDuring firmware update, there are (potentially) multiple transitions between the 13640d553cfSPaul Beesleysecure and normal world. The "level" of the BL image is relative to the world 13740d553cfSPaul Beesleyit's in so it makes sense to encode "NS" in the normal world images. The absence 13840d553cfSPaul Beesleyof "NS" implies a secure world image. 13940d553cfSPaul Beesley 14040d553cfSPaul BeesleyAP Firmware Update Config: ``AP_BL2U`` 14140d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14240d553cfSPaul Beesley 14340d553cfSPaul BeesleyThis image does the minimum necessary AP secure world configuration required to 14440d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 14540d553cfSPaul Beesleyfunctionality. 14640d553cfSPaul Beesley 14740d553cfSPaul BeesleySCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 14840d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14940d553cfSPaul Beesley 15040d553cfSPaul BeesleyThis image does the minimum necessary SCP secure world configuration required to 15140d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of 15240d553cfSPaul Beesley``SCP_BL2`` functionality. 15340d553cfSPaul Beesley 15440d553cfSPaul BeesleyAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 15540d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15640d553cfSPaul Beesley 15740d553cfSPaul BeesleyThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 15840d553cfSPaul Beesleyto load a new set of firmware images from an external interface and write them 15940d553cfSPaul Beesleyinto non-volatile storage. 16040d553cfSPaul Beesley 16140d553cfSPaul BeesleyOther Processor Firmware Images 16240d553cfSPaul Beesley------------------------------- 16340d553cfSPaul Beesley 16440d553cfSPaul BeesleySome systems may have additional processors to the AP and SCP. For example, a 16540d553cfSPaul BeesleyManagement Control Processor (MCP). Images for these processors should follow 16640d553cfSPaul Beesleythe same terminology, with the processor abbreviation prefix, followed by 16740d553cfSPaul Beesleyunderscore and the level of the firmware image. 16840d553cfSPaul Beesley 16940d553cfSPaul BeesleyFor example, 17040d553cfSPaul Beesley 17140d553cfSPaul BeesleyMCP Boot ROM: ``MCP_BL1`` 17240d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~ 17340d553cfSPaul Beesley 17440d553cfSPaul BeesleyMCP RAM Firmware: ``MCP_BL2`` 17540d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 176