diff mbox series

[v4] ref-manual: uboot-sign: Add how to enable ATF, TEE and User defined snippet ITS for U-Boot FIT image

Message ID 20250312024235.2154311-1-jamin_lin@aspeedtech.com
State Superseded
Headers show
Series [v4] ref-manual: uboot-sign: Add how to enable ATF, TEE and User defined snippet ITS for U-Boot FIT image | expand

Commit Message

Jamin Lin March 12, 2025, 2:42 a.m. UTC
Add how to enable ATF, TEE and User defined ITS for U-Boot FIT image generation.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 documentation/ref-manual/classes.rst   |  14 +++
 documentation/ref-manual/variables.rst | 131 +++++++++++++++++++++++++
 2 files changed, 145 insertions(+)

Comments

Antonin Godard March 12, 2025, 9:22 a.m. UTC | #1
Hi Jamin,

On Wed Mar 12, 2025 at 3:42 AM CET, Jamin Lin wrote:
> Add how to enable ATF, TEE and User defined ITS for U-Boot FIT image generation.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> ---
>  documentation/ref-manual/classes.rst   |  14 +++
>  documentation/ref-manual/variables.rst | 131 +++++++++++++++++++++++++
>  2 files changed, 145 insertions(+)
>
> diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
> index b93279ff6..4b02daa58 100644
> --- a/documentation/ref-manual/classes.rst
> +++ b/documentation/ref-manual/classes.rst
> @@ -3401,6 +3401,20 @@ The variables used by this class are:
>  -  :term:`UBOOT_FITIMAGE_ENABLE`: enable the generation of a U-Boot FIT image.
>  -  :term:`UBOOT_MKIMAGE_DTCOPTS`: DTC options for U-Boot ``mkimage`` when
>     rebuilding the FIT image containing the kernel.
> +-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`: include the Trusted Firmware-A (TF-A)
> +   image in the U-Boot FIT image.
> +-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`: specifies the path to the
> +   Trusted Firmware-A (TF-A) image.
> +-  :term:`UBOOT_FIT_TEE`: include the Trusted Execution Environment (TEE) image
> +   in the U-Boot FIT image.
> +-  :term:`UBOOT_FIT_TEE_IMAGE`: specifies the path to the Trusted Execution
> +   Environment (TEE) image.
> +-  :term:`UBOOT_FIT_USER_SETTINGS`: adds a user-specific snippet to the ITS.
> +   Users can include their custom ITS snippet in this variable.
> +-  :term:`UBOOT_FIT_CONF_USER_LOADABLES`: adds one or more user-defined images
> +   to the loadables property of the configuration node. It should be a
> +   comma-separated list of strings and each string needs to be surrounded by
> +   quotes too.
>  
>  See U-Boot's documentation for details about `verified boot
>  <https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/verified-boot.txt>`__
> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
> index 861b04eaa..5dbff68cc 100644
> --- a/documentation/ref-manual/variables.rst
> +++ b/documentation/ref-manual/variables.rst
> @@ -9949,6 +9949,42 @@ system and gives an overview of their function and contents.
>  
>        See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
>  
> +   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`
> +      `Trusted Firmware-A (TF-A) <https://www.trustedfirmware.org/projects/tf-a>`__
> +      is a reference implementation of secure world software for Arm A-Profile
> +      architectures (Armv8-A and Armv7-A), including an Exception Level 3 (EL3)
> +      Secure Monitor. This variable enables the generation of a U-Boot FIT image
> +      with an Trusted Firmware-A (TF-A) image.
> +
> +      Its default value is "0", so set it to "1" to enable this functionality::
> +
> +         UBOOT_FIT_ARM_TRUSTED_FIRMWARE = "1"
> +
> +   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`
> +      Specifies the path to the Trusted Firmware-A (TF-A) image. Its default
> +      value is "bl31.bin"::
> +
> +         UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "bl31.bin"
> +
> +      It is estimated that the image is placed in U-Boot's ``$B`` directory.

Actually you can use :term:`B`, so it will create a link to the variable's
definition. Could have mentioned that in my comment in the previous version,
sorry!

> +      Users can specify an alternative location for the image by setting
> +      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Firmware-A (TF-A) image

Same here, :term:`DEPLOY_DIR_IMAGE`.

"By setting DEPLOY_DIR_IMAGE" sounds like we instruct to override the variable.
How about:

"""
Users can specify an alternative location for the image, for example using
:term:`DEPLOY_DIR_IMAGE`::

   UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "${DEPLOY_DIR_IMAGE}/bl31.bin"
"""

> +      is built in a separate recipe. To successfully generate the U-Boot FIT
> +      image, users must add the necessary dependencies in the U-Boot

I would simplify the sentence a bit, to:

"""
If the Trusted Firmware-A (TF-A) image is built in a separate recipe, you must
add the necessary dependency in the U-boot ``.bbappend`` file.
"""

All of these comments apply to UBOOT_FIT_TEE_IMAGE below of course.

Looking good otherwise, thanks!

Antonin

> +      ``.bbappend`` file. The recipe name for Trusted Firmware-A (TF-A) image
> +      is ``trusted-firmware-a``, which comes from the `meta-arm <https://git.yoctoproject.org/meta-arm/>`__
> +      layer::
> +
> +          do_compile[depends] += "trusted-firmware-a:do_deploy"


> +
> +   :term:`UBOOT_FIT_CONF_USER_LOADABLES`
> +      Adds one or more user-defined images to the ``loadables`` property of the
> +      configuration node of the U-Boot Image Tree Source (ITS). It should be a
> +      comma-separated list of strings and each string needs to be surrounded by
> +      quotes too, e.g.::
> +
> +         UBOOT_FIT_CONF_USER_LOADABLES = '\"fwa\", \"fwb\"'
> +
>     :term:`UBOOT_FIT_DESC`
>        Specifies the description string encoded into a U-Boot fitImage. The default
>        value is set by the :ref:`ref-classes-uboot-sign` class as follows::
> @@ -9997,6 +10033,101 @@ system and gives an overview of their function and contents.
>        of bits. The default value for this variable is set to "2048"
>        by the :ref:`ref-classes-uboot-sign` class.
>  
> +   :term:`UBOOT_FIT_TEE`
> +      A Trusted Execution Environment (TEE) is a secure environment for
> +      executing code, ensuring high levels of trust in asset management within
> +      the surrounding system. This variable enables the generation of a U-Boot
> +      FIT image with a Trusted Execution Environment (TEE) image.
> +
> +      Its default value is "0", so set it to "1" to enable this functionality::
> +
> +         UBOOT_FIT_TEE = "1"
> +
> +   :term:`UBOOT_FIT_TEE_IMAGE`
> +      Specifies the path to the Trusted Execution Environment (TEE) image. Its
> +      default value is "tee-raw.bin"::
> +
> +         UBOOT_FIT_TEE_IMAGE ?= "tee-raw.bin"
> +
> +      It is estimated that the image is placed in U-Boot's ``$B`` directory.
> +      Users can specify an alternative location for the image by setting
> +      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Execution Environment
> +      (TEE) image is built in a separate recipe. To successfully generate the
> +      U-Boot FIT image, users must add the necessary dependencies in the U-Boot
> +      ``.bbappend`` file. The recipe name for Trusted Execution Environment
> +      (TEE) image is ``optee-os``, which comes from the `meta-arm <https://git.yoctoproject.org/meta-arm/>`__
> +      layer::
> +
> +          do_compile[depends] += "optee-os:do_deploy"
> +
> +   :term:`UBOOT_FIT_USER_SETTINGS`
> +      Add a user-specific snippet to the U-Boot Image Tree Source (ITS). This
> +      variable allows the user to add one or more user-defined ``/images`` node
> +      to the U-Boot Image Tree Source (ITS). For more details, please refer to 
> +      https://fitspec.osfw.foundation/.
> +
> +      The original contents of the U-Boot Image Tree Source (ITS) are as
> +      follows::
> +
> +         images {
> +             uboot {
> +                 description = "U-Boot image";
> +                 data = /incbin/("u-boot-nodtb.bin");
> +                 type = "standalone";
> +                 os = "u-boot";
> +                 arch = "";
> +                 compression = "none";
> +                 load = <0x80000000>;
> +                 entry = <0x80000000>;
> +             };
> +         };
> +
> +      Users can include their custom ITS snippet in this variable, e.g.::
> +
> +         UBOOT_FIT_FWA_ITS = '\
> +             fwa {\n\
> +                 description = \"FW A\";\n\
> +                 data = /incbin/(\"fwa.bin\");\n\
> +                 type = \"firmware\";\n\
> +                 arch = \"\";\n\
> +                 os = \"\";\n\
> +                 load = <0xb2000000>;\n\
> +                 entry = <0xb2000000>;\n\
> +                 compression = \"none\";\n\
> +             };\n\
> +         '
> +
> +         UBOOT_FIT_USER_SETTINGS = "${UBOOT_FIT_FWA_ITS}"
> +
> +      Newlines are stripped, and if they need to be included, they must be
> +      explicitly added using ``\n``.
> +
> +      The generated contents of the U-Boot Image Tree Source (ITS) are as
> +      follows::
> +
> +         images {
> +             uboot {
> +                 description = "U-Boot image";
> +                 data = /incbin/("u-boot-nodtb.bin");
> +                 type = "standalone";
> +                 os = "u-boot";
> +                 arch = "";
> +                 compression = "none";
> +                 load = <0x80000000>;
> +                 entry = <0x80000000>;
> +             };
> +             fwa {
> +                 description = "FW A";
> +                 data = /incbin/("fwa.bin");
> +                 type = "firmware";
> +                 arch = "";
> +                 os = "";
> +                 load = <0xb2000000>;
> +                 entry = <0xb2000000>;
> +                 compression = "none";
> +             };
> +         };
> +
>     :term:`UBOOT_FITIMAGE_ENABLE`
>        This variable allows to generate a FIT image for U-Boot, which is one
>        of the ways to implement a verified boot process.


--
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Jamin Lin March 13, 2025, 2:12 a.m. UTC | #2
Hi Antonin

> Subject: Re: [PATCH v4] ref-manual: uboot-sign: Add how to enable ATF, TEE
> and User defined snippet ITS for U-Boot FIT image
> 
> Hi Jamin,
> 
> On Wed Mar 12, 2025 at 3:42 AM CET, Jamin Lin wrote:
> > Add how to enable ATF, TEE and User defined ITS for U-Boot FIT image
> generation.
> >
> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> > ---
> >  documentation/ref-manual/classes.rst   |  14 +++
> >  documentation/ref-manual/variables.rst | 131
> > +++++++++++++++++++++++++
> >  2 files changed, 145 insertions(+)
> >
> > diff --git a/documentation/ref-manual/classes.rst
> > b/documentation/ref-manual/classes.rst
> > index b93279ff6..4b02daa58 100644
> > --- a/documentation/ref-manual/classes.rst
> > +++ b/documentation/ref-manual/classes.rst
> > @@ -3401,6 +3401,20 @@ The variables used by this class are:
> >  -  :term:`UBOOT_FITIMAGE_ENABLE`: enable the generation of a U-Boot
> FIT image.
> >  -  :term:`UBOOT_MKIMAGE_DTCOPTS`: DTC options for U-Boot
> ``mkimage`` when
> >     rebuilding the FIT image containing the kernel.
> > +-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`: include the Trusted
> Firmware-A (TF-A)
> > +   image in the U-Boot FIT image.
> > +-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`: specifies the
> path to the
> > +   Trusted Firmware-A (TF-A) image.
> > +-  :term:`UBOOT_FIT_TEE`: include the Trusted Execution Environment
> (TEE) image
> > +   in the U-Boot FIT image.
> > +-  :term:`UBOOT_FIT_TEE_IMAGE`: specifies the path to the Trusted
> Execution
> > +   Environment (TEE) image.
> > +-  :term:`UBOOT_FIT_USER_SETTINGS`: adds a user-specific snippet to the
> ITS.
> > +   Users can include their custom ITS snippet in this variable.
> > +-  :term:`UBOOT_FIT_CONF_USER_LOADABLES`: adds one or more
> user-defined images
> > +   to the loadables property of the configuration node. It should be a
> > +   comma-separated list of strings and each string needs to be surrounded
> by
> > +   quotes too.
> >
> >  See U-Boot's documentation for details about `verified boot
> > <https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/ver
> > ified-boot.txt>`__ diff --git a/documentation/ref-manual/variables.rst
> > b/documentation/ref-manual/variables.rst
> > index 861b04eaa..5dbff68cc 100644
> > --- a/documentation/ref-manual/variables.rst
> > +++ b/documentation/ref-manual/variables.rst
> > @@ -9949,6 +9949,42 @@ system and gives an overview of their function
> and contents.
> >
> >        See `more details about #address-cells
> <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
> >
> > +   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`
> > +      `Trusted Firmware-A (TF-A)
> <https://www.trustedfirmware.org/projects/tf-a>`__
> > +      is a reference implementation of secure world software for Arm
> A-Profile
> > +      architectures (Armv8-A and Armv7-A), including an Exception Level
> 3 (EL3)
> > +      Secure Monitor. This variable enables the generation of a U-Boot FIT
> image
> > +      with an Trusted Firmware-A (TF-A) image.
> > +
> > +      Its default value is "0", so set it to "1" to enable this functionality::
> > +
> > +         UBOOT_FIT_ARM_TRUSTED_FIRMWARE = "1"
> > +
> > +   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`
> > +      Specifies the path to the Trusted Firmware-A (TF-A) image. Its
> default
> > +      value is "bl31.bin"::
> > +
> > +         UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "bl31.bin"
> > +
> > +      It is estimated that the image is placed in U-Boot's ``$B`` directory.
> 
> Actually you can use :term:`B`, so it will create a link to the variable's
> definition. Could have mentioned that in my comment in the previous version,
> sorry!
> 
> > +      Users can specify an alternative location for the image by setting
> > +      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Firmware-A
> > + (TF-A) image
> 
> Same here, :term:`DEPLOY_DIR_IMAGE`.
> 
> "By setting DEPLOY_DIR_IMAGE" sounds like we instruct to override the
> variable.
> How about:
> 
> """
> Users can specify an alternative location for the image, for example using
> :term:`DEPLOY_DIR_IMAGE`::
> 
>    UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?=
> "${DEPLOY_DIR_IMAGE}/bl31.bin"
> """
> 
> > +      is built in a separate recipe. To successfully generate the U-Boot FIT
> > +      image, users must add the necessary dependencies in the U-Boot
> 
> I would simplify the sentence a bit, to:
> 
> """
> If the Trusted Firmware-A (TF-A) image is built in a separate recipe, you must
> add the necessary dependency in the U-boot ``.bbappend`` file.
> """
> 
> All of these comments apply to UBOOT_FIT_TEE_IMAGE below of course.
> 
> Looking good otherwise, thanks!
> 
> Antonin
> 
Thanks for all your suggestion and review.
I resend v5 patch here, https://patchwork.yoctoproject.org/project/docs/patch/20250313020253.2785661-1-jamin_lin@aspeedtech.com/ 
Thanks-Jamin

> > +      ``.bbappend`` file. The recipe name for Trusted Firmware-A (TF-A)
> image
> > +      is ``trusted-firmware-a``, which comes from the `meta-arm
> <https://git.yoctoproject.org/meta-arm/>`__
> > +      layer::
> > +
> > +          do_compile[depends] += "trusted-firmware-a:do_deploy"
> 
> 
> > +
> > +   :term:`UBOOT_FIT_CONF_USER_LOADABLES`
> > +      Adds one or more user-defined images to the ``loadables`` property
> of the
> > +      configuration node of the U-Boot Image Tree Source (ITS). It should
> be a
> > +      comma-separated list of strings and each string needs to be
> surrounded by
> > +      quotes too, e.g.::
> > +
> > +         UBOOT_FIT_CONF_USER_LOADABLES = '\"fwa\", \"fwb\"'
> > +
> >     :term:`UBOOT_FIT_DESC`
> >        Specifies the description string encoded into a U-Boot fitImage. The
> default
> >        value is set by the :ref:`ref-classes-uboot-sign` class as follows::
> > @@ -9997,6 +10033,101 @@ system and gives an overview of their function
> and contents.
> >        of bits. The default value for this variable is set to "2048"
> >        by the :ref:`ref-classes-uboot-sign` class.
> >
> > +   :term:`UBOOT_FIT_TEE`
> > +      A Trusted Execution Environment (TEE) is a secure environment for
> > +      executing code, ensuring high levels of trust in asset management
> within
> > +      the surrounding system. This variable enables the generation of a
> U-Boot
> > +      FIT image with a Trusted Execution Environment (TEE) image.
> > +
> > +      Its default value is "0", so set it to "1" to enable this functionality::
> > +
> > +         UBOOT_FIT_TEE = "1"
> > +
> > +   :term:`UBOOT_FIT_TEE_IMAGE`
> > +      Specifies the path to the Trusted Execution Environment (TEE) image.
> Its
> > +      default value is "tee-raw.bin"::
> > +
> > +         UBOOT_FIT_TEE_IMAGE ?= "tee-raw.bin"
> > +
> > +      It is estimated that the image is placed in U-Boot's ``$B`` directory.
> > +      Users can specify an alternative location for the image by setting
> > +      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Execution
> Environment
> > +      (TEE) image is built in a separate recipe. To successfully generate the
> > +      U-Boot FIT image, users must add the necessary dependencies in the
> U-Boot
> > +      ``.bbappend`` file. The recipe name for Trusted Execution
> Environment
> > +      (TEE) image is ``optee-os``, which comes from the `meta-arm
> <https://git.yoctoproject.org/meta-arm/>`__
> > +      layer::
> > +
> > +          do_compile[depends] += "optee-os:do_deploy"
> > +
> > +   :term:`UBOOT_FIT_USER_SETTINGS`
> > +      Add a user-specific snippet to the U-Boot Image Tree Source (ITS).
> This
> > +      variable allows the user to add one or more user-defined
> ``/images`` node
> > +      to the U-Boot Image Tree Source (ITS). For more details, please refer
> to
> > +      https://fitspec.osfw.foundation/.
> > +
> > +      The original contents of the U-Boot Image Tree Source (ITS) are as
> > +      follows::
> > +
> > +         images {
> > +             uboot {
> > +                 description = "U-Boot image";
> > +                 data = /incbin/("u-boot-nodtb.bin");
> > +                 type = "standalone";
> > +                 os = "u-boot";
> > +                 arch = "";
> > +                 compression = "none";
> > +                 load = <0x80000000>;
> > +                 entry = <0x80000000>;
> > +             };
> > +         };
> > +
> > +      Users can include their custom ITS snippet in this variable, e.g.::
> > +
> > +         UBOOT_FIT_FWA_ITS = '\
> > +             fwa {\n\
> > +                 description = \"FW A\";\n\
> > +                 data = /incbin/(\"fwa.bin\");\n\
> > +                 type = \"firmware\";\n\
> > +                 arch = \"\";\n\
> > +                 os = \"\";\n\
> > +                 load = <0xb2000000>;\n\
> > +                 entry = <0xb2000000>;\n\
> > +                 compression = \"none\";\n\
> > +             };\n\
> > +         '
> > +
> > +         UBOOT_FIT_USER_SETTINGS = "${UBOOT_FIT_FWA_ITS}"
> > +
> > +      Newlines are stripped, and if they need to be included, they must be
> > +      explicitly added using ``\n``.
> > +
> > +      The generated contents of the U-Boot Image Tree Source (ITS) are as
> > +      follows::
> > +
> > +         images {
> > +             uboot {
> > +                 description = "U-Boot image";
> > +                 data = /incbin/("u-boot-nodtb.bin");
> > +                 type = "standalone";
> > +                 os = "u-boot";
> > +                 arch = "";
> > +                 compression = "none";
> > +                 load = <0x80000000>;
> > +                 entry = <0x80000000>;
> > +             };
> > +             fwa {
> > +                 description = "FW A";
> > +                 data = /incbin/("fwa.bin");
> > +                 type = "firmware";
> > +                 arch = "";
> > +                 os = "";
> > +                 load = <0xb2000000>;
> > +                 entry = <0xb2000000>;
> > +                 compression = "none";
> > +             };
> > +         };
> > +
> >     :term:`UBOOT_FITIMAGE_ENABLE`
> >        This variable allows to generate a FIT image for U-Boot, which is
> one
> >        of the ways to implement a verified boot process.
> 
> 
> --
> Antonin Godard, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
diff mbox series

Patch

diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index b93279ff6..4b02daa58 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -3401,6 +3401,20 @@  The variables used by this class are:
 -  :term:`UBOOT_FITIMAGE_ENABLE`: enable the generation of a U-Boot FIT image.
 -  :term:`UBOOT_MKIMAGE_DTCOPTS`: DTC options for U-Boot ``mkimage`` when
    rebuilding the FIT image containing the kernel.
+-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`: include the Trusted Firmware-A (TF-A)
+   image in the U-Boot FIT image.
+-  :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`: specifies the path to the
+   Trusted Firmware-A (TF-A) image.
+-  :term:`UBOOT_FIT_TEE`: include the Trusted Execution Environment (TEE) image
+   in the U-Boot FIT image.
+-  :term:`UBOOT_FIT_TEE_IMAGE`: specifies the path to the Trusted Execution
+   Environment (TEE) image.
+-  :term:`UBOOT_FIT_USER_SETTINGS`: adds a user-specific snippet to the ITS.
+   Users can include their custom ITS snippet in this variable.
+-  :term:`UBOOT_FIT_CONF_USER_LOADABLES`: adds one or more user-defined images
+   to the loadables property of the configuration node. It should be a
+   comma-separated list of strings and each string needs to be surrounded by
+   quotes too.
 
 See U-Boot's documentation for details about `verified boot
 <https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/verified-boot.txt>`__
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index 861b04eaa..5dbff68cc 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -9949,6 +9949,42 @@  system and gives an overview of their function and contents.
 
       See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
 
+   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`
+      `Trusted Firmware-A (TF-A) <https://www.trustedfirmware.org/projects/tf-a>`__
+      is a reference implementation of secure world software for Arm A-Profile
+      architectures (Armv8-A and Armv7-A), including an Exception Level 3 (EL3)
+      Secure Monitor. This variable enables the generation of a U-Boot FIT image
+      with an Trusted Firmware-A (TF-A) image.
+
+      Its default value is "0", so set it to "1" to enable this functionality::
+
+         UBOOT_FIT_ARM_TRUSTED_FIRMWARE = "1"
+
+   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`
+      Specifies the path to the Trusted Firmware-A (TF-A) image. Its default
+      value is "bl31.bin"::
+
+         UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "bl31.bin"
+
+      It is estimated that the image is placed in U-Boot's ``$B`` directory.
+      Users can specify an alternative location for the image by setting
+      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Firmware-A (TF-A) image
+      is built in a separate recipe. To successfully generate the U-Boot FIT
+      image, users must add the necessary dependencies in the U-Boot
+      ``.bbappend`` file. The recipe name for Trusted Firmware-A (TF-A) image
+      is ``trusted-firmware-a``, which comes from the `meta-arm <https://git.yoctoproject.org/meta-arm/>`__
+      layer::
+
+          do_compile[depends] += "trusted-firmware-a:do_deploy"
+
+   :term:`UBOOT_FIT_CONF_USER_LOADABLES`
+      Adds one or more user-defined images to the ``loadables`` property of the
+      configuration node of the U-Boot Image Tree Source (ITS). It should be a
+      comma-separated list of strings and each string needs to be surrounded by
+      quotes too, e.g.::
+
+         UBOOT_FIT_CONF_USER_LOADABLES = '\"fwa\", \"fwb\"'
+
    :term:`UBOOT_FIT_DESC`
       Specifies the description string encoded into a U-Boot fitImage. The default
       value is set by the :ref:`ref-classes-uboot-sign` class as follows::
@@ -9997,6 +10033,101 @@  system and gives an overview of their function and contents.
       of bits. The default value for this variable is set to "2048"
       by the :ref:`ref-classes-uboot-sign` class.
 
+   :term:`UBOOT_FIT_TEE`
+      A Trusted Execution Environment (TEE) is a secure environment for
+      executing code, ensuring high levels of trust in asset management within
+      the surrounding system. This variable enables the generation of a U-Boot
+      FIT image with a Trusted Execution Environment (TEE) image.
+
+      Its default value is "0", so set it to "1" to enable this functionality::
+
+         UBOOT_FIT_TEE = "1"
+
+   :term:`UBOOT_FIT_TEE_IMAGE`
+      Specifies the path to the Trusted Execution Environment (TEE) image. Its
+      default value is "tee-raw.bin"::
+
+         UBOOT_FIT_TEE_IMAGE ?= "tee-raw.bin"
+
+      It is estimated that the image is placed in U-Boot's ``$B`` directory.
+      Users can specify an alternative location for the image by setting
+      ``$DEPLOY_DIR_IMAGE``. Additionally, the Trusted Execution Environment
+      (TEE) image is built in a separate recipe. To successfully generate the
+      U-Boot FIT image, users must add the necessary dependencies in the U-Boot
+      ``.bbappend`` file. The recipe name for Trusted Execution Environment
+      (TEE) image is ``optee-os``, which comes from the `meta-arm <https://git.yoctoproject.org/meta-arm/>`__
+      layer::
+
+          do_compile[depends] += "optee-os:do_deploy"
+
+   :term:`UBOOT_FIT_USER_SETTINGS`
+      Add a user-specific snippet to the U-Boot Image Tree Source (ITS). This
+      variable allows the user to add one or more user-defined ``/images`` node
+      to the U-Boot Image Tree Source (ITS). For more details, please refer to 
+      https://fitspec.osfw.foundation/.
+
+      The original contents of the U-Boot Image Tree Source (ITS) are as
+      follows::
+
+         images {
+             uboot {
+                 description = "U-Boot image";
+                 data = /incbin/("u-boot-nodtb.bin");
+                 type = "standalone";
+                 os = "u-boot";
+                 arch = "";
+                 compression = "none";
+                 load = <0x80000000>;
+                 entry = <0x80000000>;
+             };
+         };
+
+      Users can include their custom ITS snippet in this variable, e.g.::
+
+         UBOOT_FIT_FWA_ITS = '\
+             fwa {\n\
+                 description = \"FW A\";\n\
+                 data = /incbin/(\"fwa.bin\");\n\
+                 type = \"firmware\";\n\
+                 arch = \"\";\n\
+                 os = \"\";\n\
+                 load = <0xb2000000>;\n\
+                 entry = <0xb2000000>;\n\
+                 compression = \"none\";\n\
+             };\n\
+         '
+
+         UBOOT_FIT_USER_SETTINGS = "${UBOOT_FIT_FWA_ITS}"
+
+      Newlines are stripped, and if they need to be included, they must be
+      explicitly added using ``\n``.
+
+      The generated contents of the U-Boot Image Tree Source (ITS) are as
+      follows::
+
+         images {
+             uboot {
+                 description = "U-Boot image";
+                 data = /incbin/("u-boot-nodtb.bin");
+                 type = "standalone";
+                 os = "u-boot";
+                 arch = "";
+                 compression = "none";
+                 load = <0x80000000>;
+                 entry = <0x80000000>;
+             };
+             fwa {
+                 description = "FW A";
+                 data = /incbin/("fwa.bin");
+                 type = "firmware";
+                 arch = "";
+                 os = "";
+                 load = <0xb2000000>;
+                 entry = <0xb2000000>;
+                 compression = "none";
+             };
+         };
+
    :term:`UBOOT_FITIMAGE_ENABLE`
       This variable allows to generate a FIT image for U-Boot, which is one
       of the ways to implement a verified boot process.