xref: /rk3399_ARM-atf/docs/plat/arm/arm-build-options.rst (revision 41e56f422df47b8bc1a7699ff258999f900a6290)
143f35ef5SPaul BeesleyArm Development Platform Build Options
243f35ef5SPaul Beesley======================================
343f35ef5SPaul Beesley
443f35ef5SPaul BeesleyArm Platform Build Options
543f35ef5SPaul Beesley--------------------------
643f35ef5SPaul Beesley
743f35ef5SPaul Beesley-  ``ARM_BL31_IN_DRAM``: Boolean option to select loading of BL31 in TZC secured
843f35ef5SPaul Beesley   DRAM. By default, BL31 is in the secure SRAM. Set this flag to 1 to load
943f35ef5SPaul Beesley   BL31 in TZC secured DRAM. If TSP is present, then setting this option also
1043f35ef5SPaul Beesley   sets the TSP location to DRAM and ignores the ``ARM_TSP_RAM_LOCATION`` build
1143f35ef5SPaul Beesley   flag.
1243f35ef5SPaul Beesley
1343f35ef5SPaul Beesley-  ``ARM_CONFIG_CNTACR``: boolean option to unlock access to the ``CNTBase<N>``
1443f35ef5SPaul Beesley   frame registers by setting the ``CNTCTLBase.CNTACR<N>`` register bits. The
1543f35ef5SPaul Beesley   frame number ``<N>`` is defined by ``PLAT_ARM_NSTIMER_FRAME_ID``, which
1643f35ef5SPaul Beesley   should match the frame used by the Non-Secure image (normally the Linux
1743f35ef5SPaul Beesley   kernel). Default is true (access to the frame is allowed).
1843f35ef5SPaul Beesley
1943f35ef5SPaul Beesley-  ``ARM_DISABLE_TRUSTED_WDOG``: boolean option to disable the Trusted Watchdog.
2043f35ef5SPaul Beesley   By default, Arm platforms use a watchdog to trigger a system reset in case
2143f35ef5SPaul Beesley   an error is encountered during the boot process (for example, when an image
2243f35ef5SPaul Beesley   could not be loaded or authenticated). The watchdog is enabled in the early
2343f35ef5SPaul Beesley   platform setup hook at BL1 and disabled in the BL1 prepare exit hook. The
2443f35ef5SPaul Beesley   Trusted Watchdog may be disabled at build time for testing or development
2543f35ef5SPaul Beesley   purposes.
2643f35ef5SPaul Beesley
2743f35ef5SPaul Beesley-  ``ARM_LINUX_KERNEL_AS_BL33``: The Linux kernel expects registers x0-x3 to
2843f35ef5SPaul Beesley   have specific values at boot. This boolean option allows the Trusted Firmware
2943f35ef5SPaul Beesley   to have a Linux kernel image as BL33 by preparing the registers to these
3043f35ef5SPaul Beesley   values before jumping to BL33. This option defaults to 0 (disabled). For
3143f35ef5SPaul Beesley   AArch64 ``RESET_TO_BL31`` and for AArch32 ``RESET_TO_SP_MIN`` must be 1 when
3243f35ef5SPaul Beesley   using it. If this option is set to 1, ``ARM_PRELOADED_DTB_BASE`` must be set
3343f35ef5SPaul Beesley   to the location of a device tree blob (DTB) already loaded in memory. The
3443f35ef5SPaul Beesley   Linux Image address must be specified using the ``PRELOADED_BL33_BASE``
3543f35ef5SPaul Beesley   option.
3643f35ef5SPaul Beesley
3743f35ef5SPaul Beesley-  ``ARM_PLAT_MT``: This flag determines whether the Arm platform layer has to
3843f35ef5SPaul Beesley   cater for the multi-threading ``MT`` bit when accessing MPIDR. When this flag
3943f35ef5SPaul Beesley   is set, the functions which deal with MPIDR assume that the ``MT`` bit in
4043f35ef5SPaul Beesley   MPIDR is set and access the bit-fields in MPIDR accordingly. Default value of
4143f35ef5SPaul Beesley   this flag is 0. Note that this option is not used on FVP platforms.
4243f35ef5SPaul Beesley
4343f35ef5SPaul Beesley-  ``ARM_RECOM_STATE_ID_ENC``: The PSCI1.0 specification recommends an encoding
4443f35ef5SPaul Beesley   for the construction of composite state-ID in the power-state parameter.
4543f35ef5SPaul Beesley   The existing PSCI clients currently do not support this encoding of
4643f35ef5SPaul Beesley   State-ID yet. Hence this flag is used to configure whether to use the
4743f35ef5SPaul Beesley   recommended State-ID encoding or not. The default value of this flag is 0,
4843f35ef5SPaul Beesley   in which case the platform is configured to expect NULL in the State-ID
4943f35ef5SPaul Beesley   field of power-state parameter.
5043f35ef5SPaul Beesley
5143f35ef5SPaul Beesley-  ``ARM_ROTPK_LOCATION``: used when ``TRUSTED_BOARD_BOOT=1``. It specifies the
529b1dad8bSlaurenw-arm   location of the ROTPK returned by the function ``plat_get_rotpk_info()``
5343f35ef5SPaul Beesley   for Arm platforms. Depending on the selected option, the proper private key
5443f35ef5SPaul Beesley   must be specified using the ``ROT_KEY`` option when building the Trusted
5543f35ef5SPaul Beesley   Firmware. This private key will be used by the certificate generation tool
5643f35ef5SPaul Beesley   to sign the BL2 and Trusted Key certificates. Available options for
5743f35ef5SPaul Beesley   ``ARM_ROTPK_LOCATION`` are:
5843f35ef5SPaul Beesley
5943f35ef5SPaul Beesley   -  ``regs`` : return the ROTPK hash stored in the Trusted root-key storage
60a6ffddecSMax Shvetsov      registers.
6143f35ef5SPaul Beesley   -  ``devel_rsa`` : return a development public key hash embedded in the BL1
6243f35ef5SPaul Beesley      and BL2 binaries. This hash has been obtained from the RSA public key
6343f35ef5SPaul Beesley      ``arm_rotpk_rsa.der``, located in ``plat/arm/board/common/rotpk``. To use
6443f35ef5SPaul Beesley      this option, ``arm_rotprivk_rsa.pem`` must be specified as ``ROT_KEY``
6543f35ef5SPaul Beesley      when creating the certificates.
6643f35ef5SPaul Beesley   -  ``devel_ecdsa`` : return a development public key hash embedded in the BL1
6743f35ef5SPaul Beesley      and BL2 binaries. This hash has been obtained from the ECDSA public key
6843f35ef5SPaul Beesley      ``arm_rotpk_ecdsa.der``, located in ``plat/arm/board/common/rotpk``. To
6943f35ef5SPaul Beesley      use this option, ``arm_rotprivk_ecdsa.pem`` must be specified as
7043f35ef5SPaul Beesley      ``ROT_KEY`` when creating the certificates.
719b1dad8bSlaurenw-arm   -  ``devel_full_dev_rsa_key`` : returns a development public key embedded in
729b1dad8bSlaurenw-arm      the BL1 and BL2 binaries. This key has been obtained from the RSA public
739b1dad8bSlaurenw-arm      key ``arm_rotpk_rsa.der``, located in ``plat/arm/board/common/rotpk``.
7443f35ef5SPaul Beesley
759b1dad8bSlaurenw-arm-  ``ARM_ROTPK_HASH``: used when ``ARM_ROTPK_LOCATION=devel_*``, excluding
769b1dad8bSlaurenw-arm   ``devel_full_dev_rsa_key``. Specifies the location of the ROTPK hash. Not
779b1dad8bSlaurenw-arm   expected to be a build option. This defaults to
789b1dad8bSlaurenw-arm   ``plat/arm/board/common/rotpk/*_sha256.bin`` depending on the specified
799b1dad8bSlaurenw-arm   algorithm. Providing ``ROT_KEY`` enforces generation of the hash from the
809b1dad8bSlaurenw-arm   ``ROT_KEY`` and overwrites the default hash file.
81a6ffddecSMax Shvetsov
8243f35ef5SPaul Beesley-  ``ARM_TSP_RAM_LOCATION``: location of the TSP binary. Options:
8343f35ef5SPaul Beesley
8443f35ef5SPaul Beesley   -  ``tsram`` : Trusted SRAM (default option when TBB is not enabled)
8543f35ef5SPaul Beesley   -  ``tdram`` : Trusted DRAM (if available)
8643f35ef5SPaul Beesley   -  ``dram`` : Secure region in DRAM (default option when TBB is enabled,
8743f35ef5SPaul Beesley      configured by the TrustZone controller)
8843f35ef5SPaul Beesley
8943f35ef5SPaul Beesley-  ``ARM_XLAT_TABLES_LIB_V1``: boolean option to compile TF-A with version 1
9043f35ef5SPaul Beesley   of the translation tables library instead of version 2. It is set to 0 by
9143f35ef5SPaul Beesley   default, which selects version 2.
9243f35ef5SPaul Beesley
9343f35ef5SPaul Beesley-  ``ARM_CRYPTOCELL_INTEG`` : bool option to enable TF-A to invoke Arm®
9443f35ef5SPaul Beesley   TrustZone® CryptoCell functionality for Trusted Board Boot on capable Arm
9543f35ef5SPaul Beesley   platforms. If this option is specified, then the path to the CryptoCell
9643f35ef5SPaul Beesley   SBROM library must be specified via ``CCSBROM_LIB_PATH`` flag.
9743f35ef5SPaul Beesley
9876a21174SMikael Olsson-  ``ARM_ETHOSN_NPU_DRIVER``: boolean option to enable a SiP service that can
99b139f1cfSMikael Olsson   configure an Arm® Ethos™-N NPU. To use this service the target platform's
10076a21174SMikael Olsson   ``HW_CONFIG`` must include the device tree nodes for the NPU. Currently, only
10176a21174SMikael Olsson   the Arm Juno platform has this included in its ``HW_CONFIG`` and the platform
10276a21174SMikael Olsson   only loads the ``HW_CONFIG`` in AArch64 builds. Default is 0.
10376a21174SMikael Olsson
104035c9119SBjorn Engstrom-  ``ARM_ETHOSN_NPU_TZMP1``: boolean option to enable TZMP1 support for the
10533bcaed1SRob Hughes   Arm® Ethos™-N NPU. Requires ``ARM_ETHOSN_NPU_DRIVER`` and
10633bcaed1SRob Hughes   ``TRUSTED_BOARD_BOOT`` to be enabled.
10733bcaed1SRob Hughes
1086ce4c6c0SRob Hughes-  ``ARM_ETHOSN_NPU_FW``: location of the NPU firmware binary
1096ce4c6c0SRob Hughes   (```ethosn.bin```). This firmware image will be included in the FIP and
1106ce4c6c0SRob Hughes   loaded at runtime.
111035c9119SBjorn Engstrom
112db1ef41aSOlivier Deprez-  ``ARM_SPMC_MANIFEST_DTS`` : path to an alternate manifest file used as the
113db1ef41aSOlivier Deprez   SPMC Core manifest. Valid when ``SPD=spmd`` is selected.
114db1ef41aSOlivier Deprez
11533993a37SBalint Dobszay-  ``ARM_BL2_SP_LIST_DTS``: Path to DTS file snippet to override the hardcoded
11633993a37SBalint Dobszay   SP nodes in tb_fw_config.
11733993a37SBalint Dobszay
118be3a3bc7SArunachalam Ganapathy-  ``OPTEE_SP_FW_CONFIG``: DTC build flag to include OP-TEE as SP in tb_fw_config
119be3a3bc7SArunachalam Ganapathy   device tree. This flag is defined only when ``ARM_SPMC_MANIFEST_DTS`` manifest
120be3a3bc7SArunachalam Ganapathy   file name contains pattern optee_sp.
121be3a3bc7SArunachalam Ganapathy
122ca932481SDavidson K-  ``TS_SP_FW_CONFIG``: DTC build flag to include Trusted Services (Crypto and
12338f79045SDavidson K   internal-trusted-storage) as SP in tb_fw_config device tree.
124ca932481SDavidson K
125e3be1086SManish V Badarkhe-  ``ARM_GPT_SUPPORT``: Enable GPT parser to get the entry address and length of
126e3be1086SManish V Badarkhe   the various partitions present in the GPT image. This support is available
127e3be1086SManish V Badarkhe   only for the BL2 component, and it is disabled by default.
128e3be1086SManish V Badarkhe   The following diagram shows the view of the FIP partition inside the GPT
129e3be1086SManish V Badarkhe   image:
130e3be1086SManish V Badarkhe
131e3be1086SManish V Badarkhe   |FIP in a GPT image|
132e3be1086SManish V Badarkhe
13343f35ef5SPaul BeesleyFor a better understanding of these options, the Arm development platform memory
13443f35ef5SPaul Beesleymap is explained in the :ref:`Firmware Design`.
13543f35ef5SPaul Beesley
13643f35ef5SPaul Beesley.. _build_options_arm_css_platform:
13743f35ef5SPaul Beesley
13843f35ef5SPaul BeesleyArm CSS Platform-Specific Build Options
13943f35ef5SPaul Beesley---------------------------------------
14043f35ef5SPaul Beesley
14143f35ef5SPaul Beesley-  ``CSS_DETECT_PRE_1_7_0_SCP``: Boolean flag to detect SCP version
14243f35ef5SPaul Beesley   incompatibility. Version 1.7.0 of the SCP firmware made a non-backwards
14343f35ef5SPaul Beesley   compatible change to the MTL protocol, used for AP/SCP communication.
14443f35ef5SPaul Beesley   TF-A no longer supports earlier SCP versions. If this option is set to 1
14543f35ef5SPaul Beesley   then TF-A will detect if an earlier version is in use. Default is 1.
14643f35ef5SPaul Beesley
14743f35ef5SPaul Beesley-  ``CSS_LOAD_SCP_IMAGES``: Boolean flag, which when set, adds SCP_BL2 and
14843f35ef5SPaul Beesley   SCP_BL2U to the FIP and FWU_FIP respectively, and enables them to be loaded
14943f35ef5SPaul Beesley   during boot. Default is 1.
15043f35ef5SPaul Beesley
15143f35ef5SPaul Beesley-  ``CSS_USE_SCMI_SDS_DRIVER``: Boolean flag which selects SCMI/SDS drivers
15243f35ef5SPaul Beesley   instead of SCPI/BOM driver for communicating with the SCP during power
15343f35ef5SPaul Beesley   management operations and for SCP RAM Firmware transfer. If this option
15443f35ef5SPaul Beesley   is set to 1, then SCMI/SDS drivers will be used. Default is 0.
15543f35ef5SPaul Beesley
1564d37aa76SVijayenthiran Subramaniam - ``CSS_SGI_CHIP_COUNT``: Configures the number of chips on a SGI/RD platform
1574d37aa76SVijayenthiran Subramaniam   which supports multi-chip operation. If ``CSS_SGI_CHIP_COUNT`` is set to any
1584d37aa76SVijayenthiran Subramaniam   valid value greater than 1, the platform code performs required configuration
1594d37aa76SVijayenthiran Subramaniam   to support multi-chip operation.
1604d37aa76SVijayenthiran Subramaniam
161cfe1506eSAditya Angadi- ``CSS_SGI_PLATFORM_VARIANT``: Selects the variant of a SGI/RD platform. A
162cfe1506eSAditya Angadi    particular SGI/RD platform may have multiple variants which may differ in
163cfe1506eSAditya Angadi    core count, cluster count or other peripherals. This build option is used
164cfe1506eSAditya Angadi    to select the appropriate platform variant for the build. The range of
165cfe1506eSAditya Angadi    valid values is platform specific.
166cfe1506eSAditya Angadi
167158ed580SPranav Madhu- ``CSS_SYSTEM_GRACEFUL_RESET``: Build option to enable graceful powerdown of
168158ed580SPranav Madhu   CPU core on reset. This build option can be used on CSS platforms that
169158ed580SPranav Madhu   require all the CPUs to execute the CPU specific power down sequence to
170158ed580SPranav Madhu   complete a warm reboot sequence in which only the CPUs are power cycled.
171158ed580SPranav Madhu
172*41e56f42SChris KayArm FVP Build Options
173*41e56f42SChris Kay---------------------
174*41e56f42SChris Kay
175*41e56f42SChris Kay- ``FVP_TRUSTED_SRAM_SIZE``: Size (in kilobytes) of the Trusted SRAM region to
176*41e56f42SChris Kay  utilize when building for the FVP platform. This option defaults to 256.
177*41e56f42SChris Kay
17843f35ef5SPaul Beesley--------------
17943f35ef5SPaul Beesley
180e3be1086SManish V Badarkhe.. |FIP in a GPT image| image:: ../../resources/diagrams/FIP_in_a_GPT_image.png
181e3be1086SManish V Badarkhe
182035c9119SBjorn Engstrom*Copyright (c) 2019-2023, Arm Limited. All rights reserved.*
183