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