xref: /rk3399_ARM-atf/docs/getting_started/image-terminology.rst (revision 40d553cfde38d4f68449c62967cd1ce0d6478750)
1*40d553cfSPaul BeesleyImage Terminology
2*40d553cfSPaul Beesley=================
3*40d553cfSPaul Beesley
4*40d553cfSPaul Beesley.. section-numbering::
5*40d553cfSPaul Beesley    :suffix: .
6*40d553cfSPaul Beesley
7*40d553cfSPaul Beesley.. contents::
8*40d553cfSPaul Beesley
9*40d553cfSPaul BeesleyThis page contains the current name, abbreviated name and purpose of the various
10*40d553cfSPaul Beesleyimages referred to in the Trusted Firmware project.
11*40d553cfSPaul Beesley
12*40d553cfSPaul BeesleyGeneral Notes
13*40d553cfSPaul Beesley-------------
14*40d553cfSPaul Beesley
15*40d553cfSPaul Beesley- Some of the names and abbreviated names have changed to accomodate new
16*40d553cfSPaul Beesley  requirements. The changed names are as backward compatible as possible to
17*40d553cfSPaul Beesley  minimize confusion. Where applicable, the previous names are indicated. Some
18*40d553cfSPaul Beesley  code, documentation and build artefacts may still refer to the previous names;
19*40d553cfSPaul Beesley  these will inevitably take time to catch up.
20*40d553cfSPaul Beesley
21*40d553cfSPaul Beesley- The main name change is to prefix each image with the processor it corresponds
22*40d553cfSPaul Beesley  to (for example ``AP_``, ``SCP_``, ...). In situations where there is no
23*40d553cfSPaul Beesley  ambiguity (for example, within AP specific code/documentation), it is
24*40d553cfSPaul Beesley  permitted to omit the processor prefix (for example, just BL1 instead of
25*40d553cfSPaul Beesley  ``AP_BL1``).
26*40d553cfSPaul Beesley
27*40d553cfSPaul Beesley- Previously, the format for 3rd level images had 2 forms; ``BL3`` was either
28*40d553cfSPaul Beesley  suffixed with a dash ("-") followed by a number (for example, ``BL3-1``) or a
29*40d553cfSPaul Beesley  subscript number, depending on whether rich text formatting was available.
30*40d553cfSPaul Beesley  This was confusing and often the dash gets omitted in practice. Therefore the
31*40d553cfSPaul Beesley  new form is to just omit the dash and not use subscript formatting.
32*40d553cfSPaul Beesley
33*40d553cfSPaul Beesley- The names no longer contain dash ("-") characters at all. In some places (for
34*40d553cfSPaul Beesley  example, function names) it's not possible to use this character. All dashes
35*40d553cfSPaul Beesley  are either removed or replaced by underscores ("_").
36*40d553cfSPaul Beesley
37*40d553cfSPaul Beesley- The abbreviation BL stands for BootLoader. This is a historical anomaly.
38*40d553cfSPaul Beesley  Clearly, many of these images are not BootLoaders, they are simply firmware
39*40d553cfSPaul Beesley  images. However, the BL abbreviation is now widely used and is retained for
40*40d553cfSPaul Beesley  backwards compatibility.
41*40d553cfSPaul Beesley
42*40d553cfSPaul Beesley- The image names are not case sensitive. For example, ``bl1`` is
43*40d553cfSPaul Beesley  interchangeable with ``BL1``, although mixed case should be avoided.
44*40d553cfSPaul Beesley
45*40d553cfSPaul BeesleyTrusted Firmware Images
46*40d553cfSPaul Beesley-----------------------
47*40d553cfSPaul Beesley
48*40d553cfSPaul BeesleyAP Boot ROM: ``AP_BL1``
49*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~
50*40d553cfSPaul Beesley
51*40d553cfSPaul BeesleyTypically, this is the first code to execute on the AP and cannot be modified.
52*40d553cfSPaul BeesleyIts primary purpose is to perform the minimum intialization necessary to load
53*40d553cfSPaul Beesleyand authenticate an updateable AP firmware image into an executable RAM
54*40d553cfSPaul Beesleylocation, then hand-off control to that image.
55*40d553cfSPaul Beesley
56*40d553cfSPaul BeesleyAP RAM Firmware: ``AP_BL2``
57*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~
58*40d553cfSPaul Beesley
59*40d553cfSPaul BeesleyThis is the 2nd stage AP firmware. It is currently also known as the "Trusted
60*40d553cfSPaul BeesleyBoot Firmware". Its primary purpose is to perform any additional initialization
61*40d553cfSPaul Beesleyrequired to load and authenticate all 3rd level firmware images into their
62*40d553cfSPaul Beesleyexecutable RAM locations, then hand-off control to the EL3 Runtime Firmware.
63*40d553cfSPaul Beesley
64*40d553cfSPaul BeesleyEL3 Runtime Firmware: ``AP_BL31``
65*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66*40d553cfSPaul Beesley
67*40d553cfSPaul BeesleyAlso known as "SoC AP firmware" or "EL3 monitor firmware". Its primary purpose
68*40d553cfSPaul Beesleyis to handle transitions between the normal and secure world.
69*40d553cfSPaul Beesley
70*40d553cfSPaul BeesleySecure-EL1 Payload (SP): ``AP_BL32``
71*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72*40d553cfSPaul Beesley
73*40d553cfSPaul BeesleyTypically this is a TEE or Trusted OS, providing runtime secure services to the
74*40d553cfSPaul Beesleynormal world. However, it may refer to a more abstract Secure-EL1 Payload (SP).
75*40d553cfSPaul BeesleyNote that this abbreviation should only be used in systems where there is a
76*40d553cfSPaul Beesleysingle or primary image executing at Secure-EL1. In systems where there are
77*40d553cfSPaul Beesleypotentially multiple SPs and there is no concept of a primary SP, this
78*40d553cfSPaul Beesleyabbreviation should be avoided; use the recommended **Other AP 3rd level
79*40d553cfSPaul Beesleyimages** abbreviation instead.
80*40d553cfSPaul Beesley
81*40d553cfSPaul BeesleyAP Normal World Firmware: ``AP_BL33``
82*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83*40d553cfSPaul Beesley
84*40d553cfSPaul BeesleyFor example, UEFI or uboot. Its primary purpose is to boot a normal world OS.
85*40d553cfSPaul Beesley
86*40d553cfSPaul BeesleyOther AP 3rd level images: ``AP_BL3_XXX``
87*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88*40d553cfSPaul Beesley
89*40d553cfSPaul BeesleyThe abbreviated names of the existing 3rd level images imply a load/execution
90*40d553cfSPaul Beesleyordering (for example, ``AP_BL31 -> AP_BL32 -> AP_BL33``).  Some systems may
91*40d553cfSPaul Beesleyhave additional images and/or a different load/execution ordering. The
92*40d553cfSPaul Beesleyabbreviated names of the existing images are retained for backward compatibility
93*40d553cfSPaul Beesleybut new 3rd level images should be suffixed with an underscore followed by text
94*40d553cfSPaul Beesleyidentifier, not a number.
95*40d553cfSPaul Beesley
96*40d553cfSPaul BeesleyIn systems where 3rd level images are provided by different vendors, the
97*40d553cfSPaul Beesleyabbreviated name should identify the vendor as well as the image
98*40d553cfSPaul Beesleyfunction. For example, ``AP_BL3_ARM_RAS``.
99*40d553cfSPaul Beesley
100*40d553cfSPaul BeesleySCP Boot ROM: ``SCP_BL1`` (previously ``BL0``)
101*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102*40d553cfSPaul Beesley
103*40d553cfSPaul BeesleyTypically, this is the first code to execute on the SCP and cannot be modified.
104*40d553cfSPaul BeesleyIts primary purpose is to perform the minimum intialization necessary to load
105*40d553cfSPaul Beesleyand authenticate an updateable SCP firmware image into an executable RAM
106*40d553cfSPaul Beesleylocation, then hand-off control to that image. This may be performed in
107*40d553cfSPaul Beesleyconjunction with other processor firmware (for example, ``AP_BL1`` and
108*40d553cfSPaul Beesley``AP_BL2``).
109*40d553cfSPaul Beesley
110*40d553cfSPaul BeesleyThis image was previously abbreviated as ``BL0`` but in some systems, the SCP
111*40d553cfSPaul Beesleymay directly load/authenticate its own firmware. In these systems, it doesn't
112*40d553cfSPaul Beesleymake sense to interleave the image terminology for AP and SCP; both AP and SCP
113*40d553cfSPaul BeesleyBoot ROMs are ``BL1`` from their own point of view.
114*40d553cfSPaul Beesley
115*40d553cfSPaul BeesleySCP RAM Firmware: ``SCP_BL2`` (previously ``BL3-0``)
116*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
117*40d553cfSPaul Beesley
118*40d553cfSPaul BeesleyThis is the 2nd stage SCP firmware. It is currently also known as the "SCP
119*40d553cfSPaul Beesleyruntime firmware" but it could potentially be an intermediate firmware if the
120*40d553cfSPaul BeesleySCP needs to load/authenticate multiple 3rd level images in future.
121*40d553cfSPaul Beesley
122*40d553cfSPaul BeesleyThis image was previously abbreviated as BL3-0 but from the SCP's point of view,
123*40d553cfSPaul Beesleythis has always been the 2nd stage firmware. The previous name is too
124*40d553cfSPaul BeesleyAP-centric.
125*40d553cfSPaul Beesley
126*40d553cfSPaul BeesleyFirmware Update (FWU) Images
127*40d553cfSPaul Beesley----------------------------
128*40d553cfSPaul Beesley
129*40d553cfSPaul BeesleyThe terminology for these images has not been widely adopted yet but they have
130*40d553cfSPaul Beesleyto be considered in a production Trusted Board Boot solution.
131*40d553cfSPaul Beesley
132*40d553cfSPaul BeesleyAP Firmware Update Boot ROM: ``AP_NS_BL1U``
133*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134*40d553cfSPaul Beesley
135*40d553cfSPaul BeesleyTypically, this is the first normal world code to execute on the AP during a
136*40d553cfSPaul Beesleyfirmware update operation, and cannot be modified. Its primary purpose is to
137*40d553cfSPaul Beesleyload subequent firmware update images from an external interface and communicate
138*40d553cfSPaul Beesleywith ``AP_BL1`` to authenticate those images.
139*40d553cfSPaul Beesley
140*40d553cfSPaul BeesleyDuring firmware update, there are (potentially) multiple transitions between the
141*40d553cfSPaul Beesleysecure and normal world. The "level" of the BL image is relative to the world
142*40d553cfSPaul Beesleyit's in so it makes sense to encode "NS" in the normal world images. The absence
143*40d553cfSPaul Beesleyof "NS" implies a secure world image.
144*40d553cfSPaul Beesley
145*40d553cfSPaul BeesleyAP Firmware Update Config: ``AP_BL2U``
146*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
147*40d553cfSPaul Beesley
148*40d553cfSPaul BeesleyThis image does the minimum necessary AP secure world configuration required to
149*40d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of ``AP_BL2``
150*40d553cfSPaul Beesleyfunctionality.
151*40d553cfSPaul Beesley
152*40d553cfSPaul BeesleySCP Firmware Update Config: ``SCP_BL2U`` (previously ``BL2-U0``)
153*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
154*40d553cfSPaul Beesley
155*40d553cfSPaul BeesleyThis image does the minimum necessary SCP secure world configuration required to
156*40d553cfSPaul Beesleycomplete the firmware update operation. It is potentially a subset of
157*40d553cfSPaul Beesley``SCP_BL2`` functionality.
158*40d553cfSPaul Beesley
159*40d553cfSPaul BeesleyAP Firmware Updater: ``AP_NS_BL2U`` (previously ``BL3-U``)
160*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161*40d553cfSPaul Beesley
162*40d553cfSPaul BeesleyThis is the 2nd stage AP normal world firmware updater. Its primary purpose is
163*40d553cfSPaul Beesleyto load a new set of firmware images from an external interface and write them
164*40d553cfSPaul Beesleyinto non-volatile storage.
165*40d553cfSPaul Beesley
166*40d553cfSPaul BeesleyOther Processor Firmware Images
167*40d553cfSPaul Beesley-------------------------------
168*40d553cfSPaul Beesley
169*40d553cfSPaul BeesleySome systems may have additional processors to the AP and SCP. For example, a
170*40d553cfSPaul BeesleyManagement Control Processor (MCP). Images for these processors should follow
171*40d553cfSPaul Beesleythe same terminology, with the processor abbreviation prefix, followed by
172*40d553cfSPaul Beesleyunderscore and the level of the firmware image.
173*40d553cfSPaul Beesley
174*40d553cfSPaul BeesleyFor example,
175*40d553cfSPaul Beesley
176*40d553cfSPaul BeesleyMCP Boot ROM: ``MCP_BL1``
177*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~
178*40d553cfSPaul Beesley
179*40d553cfSPaul BeesleyMCP RAM Firmware: ``MCP_BL2``
180*40d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181