xref: /rk3399_ARM-atf/docs/getting_started/image-terminology.rst (revision 7446c266c91bc28c87fca634df57bdcf15b32a5b)
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