xref: /aosp_15_r20/external/arm-trusted-firmware/docs/getting_started/image-terminology.rst (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong ParkImage Terminology
2*54fd6939SJiyong Park=================
3*54fd6939SJiyong Park
4*54fd6939SJiyong ParkThis page contains the current name, abbreviated name and purpose of the various
5*54fd6939SJiyong Parkimages referred to in the Trusted Firmware project.
6*54fd6939SJiyong Park
7*54fd6939SJiyong ParkGeneral Notes
8*54fd6939SJiyong Park-------------
9*54fd6939SJiyong Park
10*54fd6939SJiyong Park- Some of the names and abbreviated names have changed to accommodate new
11*54fd6939SJiyong Park  requirements. The changed names are as backward compatible as possible to
12*54fd6939SJiyong Park  minimize confusion. Where applicable, the previous names are indicated. Some
13*54fd6939SJiyong Park  code, documentation and build artefacts may still refer to the previous names;
14*54fd6939SJiyong Park  these will inevitably take time to catch up.
15*54fd6939SJiyong Park
16*54fd6939SJiyong Park- The main name change is to prefix each image with the processor it corresponds
17*54fd6939SJiyong Park  to (for example ``AP_``, ``SCP_``, ...). In situations where there is no
18*54fd6939SJiyong Park  ambiguity (for example, within AP specific code/documentation), it is
19*54fd6939SJiyong Park  permitted to omit the processor prefix (for example, just BL1 instead of
20*54fd6939SJiyong Park  ``AP_BL1``).
21*54fd6939SJiyong Park
22*54fd6939SJiyong Park- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either
23*54fd6939SJiyong Park  suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a
24*54fd6939SJiyong Park  subscript number, depending on whether rich text formatting was available.
25*54fd6939SJiyong Park  This was confusing and often the dash gets omitted in practice. Therefore the
26*54fd6939SJiyong Park  new form is to just omit the dash and not use subscript formatting.
27*54fd6939SJiyong Park
28*54fd6939SJiyong Park- The names no longer contain dash ("-") characters at all. In some places (for
29*54fd6939SJiyong Park  example, function names) it's not possible to use this character. All dashes
30*54fd6939SJiyong Park  are either removed or replaced by underscores ("_").
31*54fd6939SJiyong Park
32*54fd6939SJiyong Park- The abbreviation BL stands for BootLoader. This is a historical anomaly.
33*54fd6939SJiyong Park  Clearly, many of these images are not BootLoaders, they are simply firmware
34*54fd6939SJiyong Park  images. However, the BL abbreviation is now widely used and is retained for
35*54fd6939SJiyong Park  backwards compatibility.
36*54fd6939SJiyong Park
37*54fd6939SJiyong Park- The image names are not case sensitive. For example, ``bl1`` is
38*54fd6939SJiyong Park  interchangeable with ``BL1``, although mixed case should be avoided.
39*54fd6939SJiyong Park
40*54fd6939SJiyong ParkTrusted Firmware Images
41*54fd6939SJiyong Park-----------------------
42*54fd6939SJiyong Park
43*54fd6939SJiyong ParkAP Boot ROM: ``AP_BL1``
44*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~
45*54fd6939SJiyong Park
46*54fd6939SJiyong ParkTypically, this is the first code to execute on the AP and cannot be modified.
47*54fd6939SJiyong ParkIts primary purpose is to perform the minimum initialization necessary to load
48*54fd6939SJiyong Parkand authenticate an updateable AP firmware image into an executable RAM
49*54fd6939SJiyong Parklocation, then hand-off control to that image.
50*54fd6939SJiyong Park
51*54fd6939SJiyong ParkAP RAM Firmware: ``AP_BL2``
52*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~
53*54fd6939SJiyong Park
54*54fd6939SJiyong ParkThis is the 2nd stage AP firmware. It is currently also known as the "Trusted
55*54fd6939SJiyong ParkBoot Firmware". Its primary purpose is to perform any additional initialization
56*54fd6939SJiyong Parkrequired to load and authenticate all 3rd level firmware images into their
57*54fd6939SJiyong Parkexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware.
58*54fd6939SJiyong Park
59*54fd6939SJiyong ParkEL3 Runtime Firmware: ``AP_BL31``
60*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61*54fd6939SJiyong Park
62*54fd6939SJiyong ParkAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose
63*54fd6939SJiyong Parkis to handle transitions between the normal and secure world.
64*54fd6939SJiyong Park
65*54fd6939SJiyong ParkSecure-EL1 Payload (SP): ``AP_BL32``
66*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67*54fd6939SJiyong Park
68*54fd6939SJiyong ParkTypically this is a TEE or Trusted OS, providing runtime secure services to the
69*54fd6939SJiyong Parknormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP).
70*54fd6939SJiyong ParkNote that this abbreviation should only be used in systems where there is a
71*54fd6939SJiyong Parksingle or primary image executing at Secure-EL1. In systems where there are
72*54fd6939SJiyong Parkpotentially multiple SPs and there is no concept of a primary SP, this
73*54fd6939SJiyong Parkabbreviation should be avoided; use the recommended **Other AP 3rd level
74*54fd6939SJiyong Parkimages** abbreviation instead.
75*54fd6939SJiyong Park
76*54fd6939SJiyong ParkAP Normal World Firmware: ``AP_BL33``
77*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78*54fd6939SJiyong Park
79*54fd6939SJiyong ParkFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS.
80*54fd6939SJiyong Park
81*54fd6939SJiyong ParkOther AP 3rd level images: ``AP_BL3_XXX``
82*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83*54fd6939SJiyong Park
84*54fd6939SJiyong ParkThe abbreviated names of the existing 3rd level images imply a load/execution
85*54fd6939SJiyong Parkordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``).  Some systems may
86*54fd6939SJiyong Parkhave additional images and/or a different load/execution ordering. The
87*54fd6939SJiyong Parkabbreviated names of the existing images are retained for backward compatibility
88*54fd6939SJiyong Parkbut new 3rd level images should be suffixed with an underscore followed by text
89*54fd6939SJiyong Parkidentifier, not a number.
90*54fd6939SJiyong Park
91*54fd6939SJiyong ParkIn systems where 3rd level images are provided by different vendors, the
92*54fd6939SJiyong Parkabbreviated name should identify the vendor as well as the image
93*54fd6939SJiyong Parkfunction. For example, ``AP_BL3_ARM_RAS``.
94*54fd6939SJiyong Park
95*54fd6939SJiyong ParkRealm Monitor Management Firmware: ``RMM``
96*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97*54fd6939SJiyong Park
98*54fd6939SJiyong ParkThis is the Realm-EL2 firmware. It is required if
99*54fd6939SJiyong Park:ref:`Realm Management Extension (RME)` feature is enabled. If a path to RMM
100*54fd6939SJiyong Parkimage is not provided, TF-A builds Test Realm Payload (TRP) image by default
101*54fd6939SJiyong Parkand uses it as the RMM image.
102*54fd6939SJiyong Park
103*54fd6939SJiyong ParkSCP Boot ROM: ``SCP_BL1`` (previously ``BL0``)
104*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105*54fd6939SJiyong Park
106*54fd6939SJiyong ParkTypically, this is the first code to execute on the SCP and cannot be modified.
107*54fd6939SJiyong ParkIts primary purpose is to perform the minimum initialization necessary to load
108*54fd6939SJiyong Parkand authenticate an updateable SCP firmware image into an executable RAM
109*54fd6939SJiyong Parklocation, then hand-off control to that image. This may be performed in
110*54fd6939SJiyong Parkconjunction with other processor firmware (for example, ``AP_BL1`` and
111*54fd6939SJiyong Park``AP_BL2``).
112*54fd6939SJiyong Park
113*54fd6939SJiyong ParkThis image was previously abbreviated as ``BL0`` but in some systems, the SCP
114*54fd6939SJiyong Parkmay directly load/authenticate its own firmware. In these systems, it doesn't
115*54fd6939SJiyong Parkmake sense to interleave the image terminology for AP and SCP; both AP and SCP
116*54fd6939SJiyong ParkBoot ROMs are ``BL1`` from their own point of view.
117*54fd6939SJiyong Park
118*54fd6939SJiyong ParkSCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``)
119*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120*54fd6939SJiyong Park
121*54fd6939SJiyong ParkThis is the 2nd stage SCP firmware. It is currently also known as the "SCP
122*54fd6939SJiyong Parkruntime firmware" but it could potentially be an intermediate firmware if the
123*54fd6939SJiyong ParkSCP needs to load/authenticate multiple 3rd level images in future.
124*54fd6939SJiyong Park
125*54fd6939SJiyong ParkThis image was previously abbreviated as BL3-0 but from the SCP's point of view,
126*54fd6939SJiyong Parkthis has always been the 2nd stage firmware. The previous name is too
127*54fd6939SJiyong ParkAP-centric.
128*54fd6939SJiyong Park
129*54fd6939SJiyong ParkFirmware Update (FWU) Images
130*54fd6939SJiyong Park----------------------------
131*54fd6939SJiyong Park
132*54fd6939SJiyong ParkThe terminology for these images has not been widely adopted yet but they have
133*54fd6939SJiyong Parkto be considered in a production Trusted Board Boot solution.
134*54fd6939SJiyong Park
135*54fd6939SJiyong ParkAP Firmware Update Boot ROM: ``AP_NS_BL1U``
136*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137*54fd6939SJiyong Park
138*54fd6939SJiyong ParkTypically, this is the first normal world code to execute on the AP during a
139*54fd6939SJiyong Parkfirmware update operation, and cannot be modified. Its primary purpose is to
140*54fd6939SJiyong Parkload subsequent firmware update images from an external interface and communicate
141*54fd6939SJiyong Parkwith ``AP_BL1`` to authenticate those images.
142*54fd6939SJiyong Park
143*54fd6939SJiyong ParkDuring firmware update, there are (potentially) multiple transitions between the
144*54fd6939SJiyong Parksecure and normal world. The "level" of the BL image is relative to the world
145*54fd6939SJiyong Parkit's in so it makes sense to encode "NS" in the normal world images. The absence
146*54fd6939SJiyong Parkof "NS" implies a secure world image.
147*54fd6939SJiyong Park
148*54fd6939SJiyong ParkAP Firmware Update Config: ``AP_BL2U``
149*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150*54fd6939SJiyong Park
151*54fd6939SJiyong ParkThis image does the minimum necessary AP secure world configuration required to
152*54fd6939SJiyong Parkcomplete the firmware update operation. It is potentially a subset of ``AP_BL2``
153*54fd6939SJiyong Parkfunctionality.
154*54fd6939SJiyong Park
155*54fd6939SJiyong ParkSCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``)
156*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
157*54fd6939SJiyong Park
158*54fd6939SJiyong ParkThis image does the minimum necessary SCP secure world configuration required to
159*54fd6939SJiyong Parkcomplete the firmware update operation. It is potentially a subset of
160*54fd6939SJiyong Park``SCP_BL2`` functionality.
161*54fd6939SJiyong Park
162*54fd6939SJiyong ParkAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``)
163*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
164*54fd6939SJiyong Park
165*54fd6939SJiyong ParkThis is the 2nd stage AP normal world firmware updater. Its primary purpose is
166*54fd6939SJiyong Parkto load a new set of firmware images from an external interface and write them
167*54fd6939SJiyong Parkinto non-volatile storage.
168*54fd6939SJiyong Park
169*54fd6939SJiyong ParkOther Processor Firmware Images
170*54fd6939SJiyong Park-------------------------------
171*54fd6939SJiyong Park
172*54fd6939SJiyong ParkSome systems may have additional processors to the AP and SCP. For example, a
173*54fd6939SJiyong ParkManagement Control Processor (MCP). Images for these processors should follow
174*54fd6939SJiyong Parkthe same terminology, with the processor abbreviation prefix, followed by
175*54fd6939SJiyong Parkunderscore and the level of the firmware image.
176*54fd6939SJiyong Park
177*54fd6939SJiyong ParkFor example,
178*54fd6939SJiyong Park
179*54fd6939SJiyong ParkMCP Boot ROM: ``MCP_BL1``
180*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~
181*54fd6939SJiyong Park
182*54fd6939SJiyong ParkMCP RAM Firmware: ``MCP_BL2``
183*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
184