xref: /arm-trusted-firmware/docs/getting_started/image-terminology.rst (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700SchasingluluImage Terminology
2*91f16700Schasinglulu=================
3*91f16700Schasinglulu
4*91f16700SchasingluluThis page contains the current name, abbreviated name and purpose of the various
5*91f16700Schasingluluimages referred to in the Trusted Firmware project.
6*91f16700Schasinglulu
7*91f16700SchasingluluCommon Image Features
8*91f16700Schasinglulu---------------------
9*91f16700Schasinglulu
10*91f16700Schasinglulu- Some of the names and abbreviated names have changed to accommodate new
11*91f16700Schasinglulu  requirements. The changed names are as backward compatible as possible to
12*91f16700Schasinglulu  minimize confusion. Where applicable, the previous names are indicated. Some
13*91f16700Schasinglulu  code, documentation and build artefacts may still refer to the previous names;
14*91f16700Schasinglulu  these will inevitably take time to catch up.
15*91f16700Schasinglulu
16*91f16700Schasinglulu- The main name change is to prefix each image with the processor it corresponds
17*91f16700Schasinglulu  to (for example ``AP_``, ``SCP_``, ...). In situations where there is no
18*91f16700Schasinglulu  ambiguity (for example, within AP specific code/documentation), it is
19*91f16700Schasinglulu  permitted to omit the processor prefix (for example, just BL1 instead of
20*91f16700Schasinglulu  ``AP_BL1``).
21*91f16700Schasinglulu
22*91f16700Schasinglulu- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either
23*91f16700Schasinglulu  suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a
24*91f16700Schasinglulu  subscript number, depending on whether rich text formatting was available.
25*91f16700Schasinglulu  This was confusing and often the dash gets omitted in practice. Therefore the
26*91f16700Schasinglulu  new form is to just omit the dash and not use subscript formatting.
27*91f16700Schasinglulu
28*91f16700Schasinglulu- The names no longer contain dash ("-") characters at all. In some places (for
29*91f16700Schasinglulu  example, function names) it's not possible to use this character. All dashes
30*91f16700Schasinglulu  are either removed or replaced by underscores ("_").
31*91f16700Schasinglulu
32*91f16700Schasinglulu- The abbreviation BL stands for BootLoader. This is a historical anomaly.
33*91f16700Schasinglulu  Clearly, many of these images are not BootLoaders, they are simply firmware
34*91f16700Schasinglulu  images. However, the BL abbreviation is now widely used and is retained for
35*91f16700Schasinglulu  backwards compatibility.
36*91f16700Schasinglulu
37*91f16700Schasinglulu- The image names are not case sensitive. For example, ``bl1`` is
38*91f16700Schasinglulu  interchangeable with ``BL1``, although mixed case should be avoided.
39*91f16700Schasinglulu
40*91f16700SchasingluluTrusted Firmware Images
41*91f16700Schasinglulu-----------------------
42*91f16700Schasinglulu
43*91f16700SchasingluluFirmware Image Package: ``FIP``
44*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45*91f16700Schasinglulu
46*91f16700SchasingluluThis is a packaging format used by TF-A to package firmware images in a single
47*91f16700Schasinglulubinary. The number and type of images that should be packed in a FIP is
48*91f16700Schasingluluplatform-specific and may include TF-A images and other firmware images
49*91f16700Schasinglulurequired by the platform. For example, most platforms require a BL33 image
50*91f16700Schasingluluwhich corresponds to the normal world bootloader (e.g. UEFI or U-Boot).
51*91f16700Schasinglulu
52*91f16700SchasingluluAP Boot ROM: ``AP_BL1``
53*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~
54*91f16700Schasinglulu
55*91f16700SchasingluluTypically, this is the first code to execute on the AP and cannot be modified.
56*91f16700SchasingluluIts primary purpose is to perform the minimum initialization necessary to load
57*91f16700Schasingluluand authenticate an updateable AP firmware image into an executable RAM
58*91f16700Schasinglululocation, then hand-off control to that image.
59*91f16700Schasinglulu
60*91f16700SchasingluluAP RAM Firmware: ``AP_BL2``
61*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~
62*91f16700Schasinglulu
63*91f16700SchasingluluThis is the 2nd stage AP firmware. It is currently also known as the "Trusted
64*91f16700SchasingluluBoot Firmware". Its primary purpose is to perform any additional initialization
65*91f16700Schasinglulurequired to load and authenticate all 3rd level firmware images into their
66*91f16700Schasingluluexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware.
67*91f16700Schasinglulu
68*91f16700SchasingluluEL3 Runtime Firmware: ``AP_BL31``
69*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70*91f16700Schasinglulu
71*91f16700SchasingluluAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose
72*91f16700Schasingluluis to handle transitions between the normal and secure world.
73*91f16700Schasinglulu
74*91f16700SchasingluluSecure-EL1 Payload (SP): ``AP_BL32``
75*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
76*91f16700Schasinglulu
77*91f16700SchasingluluTypically this is a TEE or Trusted OS, providing runtime secure services to the
78*91f16700Schasinglulunormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP).
79*91f16700SchasingluluNote that this abbreviation should only be used in systems where there is a
80*91f16700Schasinglulusingle or primary image executing at Secure-EL1. In systems where there are
81*91f16700Schasinglulupotentially multiple SPs and there is no concept of a primary SP, this
82*91f16700Schasingluluabbreviation should be avoided; use the recommended **Other AP 3rd level
83*91f16700Schasingluluimages** abbreviation instead.
84*91f16700Schasinglulu
85*91f16700SchasingluluAP Normal World Firmware: ``AP_BL33``
86*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
87*91f16700Schasinglulu
88*91f16700SchasingluluFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS.
89*91f16700Schasinglulu
90*91f16700SchasingluluOther AP 3rd level images: ``AP_BL3_XXX``
91*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92*91f16700Schasinglulu
93*91f16700SchasingluluThe abbreviated names of the existing 3rd level images imply a load/execution
94*91f16700Schasingluluordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``).  Some systems may
95*91f16700Schasingluluhave additional images and/or a different load/execution ordering. The
96*91f16700Schasingluluabbreviated names of the existing images are retained for backward compatibility
97*91f16700Schasinglulubut new 3rd level images should be suffixed with an underscore followed by text
98*91f16700Schasingluluidentifier, not a number.
99*91f16700Schasinglulu
100*91f16700SchasingluluIn systems where 3rd level images are provided by different vendors, the
101*91f16700Schasingluluabbreviated name should identify the vendor as well as the image
102*91f16700Schasinglulufunction. For example, ``AP_BL3_ARM_RAS``.
103*91f16700Schasinglulu
104*91f16700SchasingluluRealm Monitor Management Firmware: ``RMM``
105*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106*91f16700Schasinglulu
107*91f16700SchasingluluThis is the Realm-EL2 firmware. It is required if
108*91f16700Schasinglulu:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM
109*91f16700Schasingluluimage is not provided, TF-A builds Test Realm Payload (TRP) image by default
110*91f16700Schasingluluand uses it as the RMM image.
111*91f16700Schasinglulu
112*91f16700SchasingluluSCP Boot ROM: ``SCP_BL1`` (previously ``BL0``)
113*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
114*91f16700Schasinglulu
115*91f16700SchasingluluTypically, this is the first code to execute on the SCP and cannot be modified.
116*91f16700SchasingluluIts primary purpose is to perform the minimum initialization necessary to load
117*91f16700Schasingluluand authenticate an updateable SCP firmware image into an executable RAM
118*91f16700Schasinglululocation, then hand-off control to that image. This may be performed in
119*91f16700Schasingluluconjunction with other processor firmware (for example, ``AP_BL1`` and
120*91f16700Schasinglulu``AP_BL2``).
121*91f16700Schasinglulu
122*91f16700SchasingluluThis image was previously abbreviated as ``BL0`` but in some systems, the SCP
123*91f16700Schasinglulumay directly load/authenticate its own firmware. In these systems, it doesn't
124*91f16700Schasinglulumake sense to interleave the image terminology for AP and SCP; both AP and SCP
125*91f16700SchasingluluBoot ROMs are ``BL1`` from their own point of view.
126*91f16700Schasinglulu
127*91f16700SchasingluluSCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``)
128*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129*91f16700Schasinglulu
130*91f16700SchasingluluThis is the 2nd stage SCP firmware. It is currently also known as the "SCP
131*91f16700Schasingluluruntime firmware" but it could potentially be an intermediate firmware if the
132*91f16700SchasingluluSCP needs to load/authenticate multiple 3rd level images in future.
133*91f16700Schasinglulu
134*91f16700SchasingluluThis image was previously abbreviated as BL3-0 but from the SCP's point of view,
135*91f16700Schasingluluthis has always been the 2nd stage firmware. The previous name is too
136*91f16700SchasingluluAP-centric.
137*91f16700Schasinglulu
138*91f16700SchasingluluFirmware Update (FWU) Images
139*91f16700Schasinglulu----------------------------
140*91f16700Schasinglulu
141*91f16700SchasingluluThe terminology for these images has not been widely adopted yet but they have
142*91f16700Schasingluluto be considered in a production Trusted Board Boot solution.
143*91f16700Schasinglulu
144*91f16700SchasingluluAP Firmware Update Boot ROM: ``AP_NS_BL1U``
145*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146*91f16700Schasinglulu
147*91f16700SchasingluluTypically, this is the first normal world code to execute on the AP during a
148*91f16700Schasinglulufirmware update operation, and cannot be modified. Its primary purpose is to
149*91f16700Schasingluluload subsequent firmware update images from an external interface and communicate
150*91f16700Schasingluluwith ``AP_BL1`` to authenticate those images.
151*91f16700Schasinglulu
152*91f16700SchasingluluDuring firmware update, there are (potentially) multiple transitions between the
153*91f16700Schasinglulusecure and normal world. The "level" of the BL image is relative to the world
154*91f16700Schasingluluit's in so it makes sense to encode "NS" in the normal world images. The absence
155*91f16700Schasingluluof "NS" implies a secure world image.
156*91f16700Schasinglulu
157*91f16700SchasingluluAP Firmware Update Config: ``AP_BL2U``
158*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
159*91f16700Schasinglulu
160*91f16700SchasingluluThis image does the minimum necessary AP secure world configuration required to
161*91f16700Schasinglulucomplete the firmware update operation. It is potentially a subset of ``AP_BL2``
162*91f16700Schasinglulufunctionality.
163*91f16700Schasinglulu
164*91f16700SchasingluluSCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``)
165*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166*91f16700Schasinglulu
167*91f16700SchasingluluThis image does the minimum necessary SCP secure world configuration required to
168*91f16700Schasinglulucomplete the firmware update operation. It is potentially a subset of
169*91f16700Schasinglulu``SCP_BL2`` functionality.
170*91f16700Schasinglulu
171*91f16700SchasingluluAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``)
172*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
173*91f16700Schasinglulu
174*91f16700SchasingluluThis is the 2nd stage AP normal world firmware updater. Its primary purpose is
175*91f16700Schasingluluto load a new set of firmware images from an external interface and write them
176*91f16700Schasingluluinto non-volatile storage.
177*91f16700Schasinglulu
178*91f16700SchasingluluOther Processor Firmware Images
179*91f16700Schasinglulu-------------------------------
180*91f16700Schasinglulu
181*91f16700SchasingluluSome systems may have additional processors to the AP and SCP. For example, a
182*91f16700SchasingluluManagement Control Processor (MCP). Images for these processors should follow
183*91f16700Schasingluluthe same terminology, with the processor abbreviation prefix, followed by
184*91f16700Schasingluluunderscore and the level of the firmware image.
185*91f16700Schasinglulu
186*91f16700SchasingluluFor example,
187*91f16700Schasinglulu
188*91f16700SchasingluluMCP Boot ROM: ``MCP_BL1``
189*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~
190*91f16700Schasinglulu
191*91f16700SchasingluluMCP RAM Firmware: ``MCP_BL2``
192*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193