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 7*b50838baSBoyan KaratotevCommon Image Features 8*b50838baSBoyan Karatotev--------------------- 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 43*b50838baSBoyan KaratotevFirmware Image Package: ``FIP`` 44*b50838baSBoyan Karatotev~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45*b50838baSBoyan Karatotev 46*b50838baSBoyan KaratotevThis is a packaging format used by TF-A to package firmware images in a single 47*b50838baSBoyan Karatotevbinary. The number and type of images that should be packed in a FIP is 48*b50838baSBoyan Karatotevplatform-specific and may include TF-A images and other firmware images 49*b50838baSBoyan Karatotevrequired by the platform. For example, most platforms require a BL33 image 50*b50838baSBoyan Karatotevwhich corresponds to the normal world bootloader (e.g. UEFI or U-Boot). 51*b50838baSBoyan Karatotev 5240d553cfSPaul BeesleyAP Boot ROM: ``AP_BL1`` 5340d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~ 5440d553cfSPaul Beesley 5540d553cfSPaul BeesleyTypically, this is the first code to execute on the AP and cannot be modified. 56be653a69SPaul BeesleyIts primary purpose is to perform the minimum initialization necessary to load 5740d553cfSPaul Beesleyand authenticate an updateable AP firmware image into an executable RAM 5840d553cfSPaul Beesleylocation, then hand-off control to that image. 5940d553cfSPaul Beesley 6040d553cfSPaul BeesleyAP RAM Firmware: ``AP_BL2`` 6140d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6240d553cfSPaul Beesley 6340d553cfSPaul BeesleyThis is the 2nd stage AP firmware. It is currently also known as the "Trusted 6440d553cfSPaul BeesleyBoot Firmware". Its primary purpose is to perform any additional initialization 6540d553cfSPaul Beesleyrequired to load and authenticate all 3rd level firmware images into their 6640d553cfSPaul Beesleyexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware. 6740d553cfSPaul Beesley 6840d553cfSPaul BeesleyEL3 Runtime Firmware: ``AP_BL31`` 6940d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7040d553cfSPaul Beesley 7140d553cfSPaul BeesleyAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose 7240d553cfSPaul Beesleyis to handle transitions between the normal and secure world. 7340d553cfSPaul Beesley 7440d553cfSPaul BeesleySecure-EL1 Payload (SP): ``AP_BL32`` 7540d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7640d553cfSPaul Beesley 7740d553cfSPaul BeesleyTypically this is a TEE or Trusted OS, providing runtime secure services to the 7840d553cfSPaul Beesleynormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP). 7940d553cfSPaul BeesleyNote that this abbreviation should only be used in systems where there is a 8040d553cfSPaul Beesleysingle or primary image executing at Secure-EL1. In systems where there are 8140d553cfSPaul Beesleypotentially multiple SPs and there is no concept of a primary SP, this 8240d553cfSPaul Beesleyabbreviation should be avoided; use the recommended **Other AP 3rd level 8340d553cfSPaul Beesleyimages** abbreviation instead. 8440d553cfSPaul Beesley 8540d553cfSPaul BeesleyAP Normal World Firmware: ``AP_BL33`` 8640d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8740d553cfSPaul Beesley 8840d553cfSPaul BeesleyFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS. 8940d553cfSPaul Beesley 9040d553cfSPaul BeesleyOther AP 3rd level images: ``AP_BL3_XXX`` 9140d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9240d553cfSPaul Beesley 9340d553cfSPaul BeesleyThe abbreviated names of the existing 3rd level images imply a load/execution 9440d553cfSPaul Beesleyordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``). Some systems may 9540d553cfSPaul Beesleyhave additional images and/or a different load/execution ordering. The 9640d553cfSPaul Beesleyabbreviated names of the existing images are retained for backward compatibility 9740d553cfSPaul Beesleybut new 3rd level images should be suffixed with an underscore followed by text 9840d553cfSPaul Beesleyidentifier, not a number. 9940d553cfSPaul Beesley 10040d553cfSPaul BeesleyIn systems where 3rd level images are provided by different vendors, the 10140d553cfSPaul Beesleyabbreviated name should identify the vendor as well as the image 10240d553cfSPaul Beesleyfunction. For example, ``AP_BL3_ARM_RAS``. 10340d553cfSPaul Beesley 1047446c266SZelalem AwekeRealm Monitor Management Firmware: ``RMM`` 1057446c266SZelalem Aweke~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1067446c266SZelalem Aweke 1077446c266SZelalem AwekeThis is the Realm-EL2 firmware. It is required if 1087446c266SZelalem Aweke:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM 1097446c266SZelalem Awekeimage is not provided, TF-A builds Test Realm Payload (TRP) image by default 1107446c266SZelalem Awekeand uses it as the RMM image. 1117446c266SZelalem Aweke 11240d553cfSPaul BeesleySCP Boot ROM: ``SCP_BL1`` (previously ``BL0``) 11340d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11440d553cfSPaul Beesley 11540d553cfSPaul BeesleyTypically, this is the first code to execute on the SCP and cannot be modified. 116be653a69SPaul BeesleyIts primary purpose is to perform the minimum initialization necessary to load 11740d553cfSPaul Beesleyand authenticate an updateable SCP firmware image into an executable RAM 11840d553cfSPaul Beesleylocation, then hand-off control to that image. This may be performed in 11940d553cfSPaul Beesleyconjunction with other processor firmware (for example, ``AP_BL1`` and 12040d553cfSPaul Beesley``AP_BL2``). 12140d553cfSPaul Beesley 12240d553cfSPaul BeesleyThis image was previously abbreviated as ``BL0`` but in some systems, the SCP 12340d553cfSPaul Beesleymay directly load/authenticate its own firmware. In these systems, it doesn't 12440d553cfSPaul Beesleymake sense to interleave the image terminology for AP and SCP; both AP and SCP 12540d553cfSPaul BeesleyBoot ROMs are ``BL1`` from their own point of view. 12640d553cfSPaul Beesley 12740d553cfSPaul BeesleySCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``) 12840d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12940d553cfSPaul Beesley 13040d553cfSPaul BeesleyThis is the 2nd stage SCP firmware. It is currently also known as the "SCP 13140d553cfSPaul Beesleyruntime firmware" but it could potentially be an intermediate firmware if the 13240d553cfSPaul BeesleySCP needs to load/authenticate multiple 3rd level images in future. 13340d553cfSPaul Beesley 13440d553cfSPaul BeesleyThis image was previously abbreviated as BL3-0 but from the SCP's point of view, 13540d553cfSPaul Beesleythis has always been the 2nd stage firmware. The previous name is too 13640d553cfSPaul BeesleyAP-centric. 13740d553cfSPaul Beesley 13840d553cfSPaul BeesleyFirmware Update (FWU) Images 13940d553cfSPaul Beesley---------------------------- 14040d553cfSPaul Beesley 14140d553cfSPaul BeesleyThe terminology for these images has not been widely adopted yet but they have 14240d553cfSPaul Beesleyto be considered in a production Trusted Board Boot solution. 14340d553cfSPaul Beesley 14440d553cfSPaul BeesleyAP Firmware Update Boot ROM: ``AP_NS_BL1U`` 14540d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14640d553cfSPaul Beesley 14740d553cfSPaul BeesleyTypically, this is the first normal world code to execute on the AP during a 14840d553cfSPaul Beesleyfirmware update operation, and cannot be modified. Its primary purpose is to 149be653a69SPaul Beesleyload subsequent firmware update images from an external interface and communicate 15040d553cfSPaul Beesleywith ``AP_BL1`` to authenticate those images. 15140d553cfSPaul Beesley 15240d553cfSPaul BeesleyDuring firmware update, there are (potentially) multiple transitions between the 15340d553cfSPaul Beesleysecure and normal world. The "level" of the BL image is relative to the world 15440d553cfSPaul Beesleyit's in so it makes sense to encode "NS" in the normal world images. The absence 15540d553cfSPaul Beesleyof "NS" implies a secure world image. 15640d553cfSPaul Beesley 15740d553cfSPaul BeesleyAP Firmware Update Config: ``AP_BL2U`` 15840d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15940d553cfSPaul Beesley 16040d553cfSPaul BeesleyThis image does the minimum necessary AP secure world configuration required to 16140d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of ``AP_BL2`` 16240d553cfSPaul Beesleyfunctionality. 16340d553cfSPaul Beesley 16440d553cfSPaul BeesleySCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``) 16540d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 16640d553cfSPaul Beesley 16740d553cfSPaul BeesleyThis image does the minimum necessary SCP secure world configuration required to 16840d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of 16940d553cfSPaul Beesley``SCP_BL2`` functionality. 17040d553cfSPaul Beesley 17140d553cfSPaul BeesleyAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``) 17240d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17340d553cfSPaul Beesley 17440d553cfSPaul BeesleyThis is the 2nd stage AP normal world firmware updater. Its primary purpose is 17540d553cfSPaul Beesleyto load a new set of firmware images from an external interface and write them 17640d553cfSPaul Beesleyinto non-volatile storage. 17740d553cfSPaul Beesley 17840d553cfSPaul BeesleyOther Processor Firmware Images 17940d553cfSPaul Beesley------------------------------- 18040d553cfSPaul Beesley 18140d553cfSPaul BeesleySome systems may have additional processors to the AP and SCP. For example, a 18240d553cfSPaul BeesleyManagement Control Processor (MCP). Images for these processors should follow 18340d553cfSPaul Beesleythe same terminology, with the processor abbreviation prefix, followed by 18440d553cfSPaul Beesleyunderscore and the level of the firmware image. 18540d553cfSPaul Beesley 18640d553cfSPaul BeesleyFor example, 18740d553cfSPaul Beesley 18840d553cfSPaul BeesleyMCP Boot ROM: ``MCP_BL1`` 18940d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~ 19040d553cfSPaul Beesley 19140d553cfSPaul BeesleyMCP RAM Firmware: ``MCP_BL2`` 19240d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193