xref: /rk3399_ARM-atf/docs/plat/arm/arm-build-options.rst (revision 4286d16f0fc3b0b97acb9900726658c1a6968f8c)
1Arm Development Platform Build Options
2======================================
3
4Arm Platform Build Options
5--------------------------
6
7-  ``ARM_BL31_IN_DRAM``: Boolean option to select loading of BL31 in TZC secured
8   DRAM. By default, BL31 is in the secure SRAM. Set this flag to 1 to load
9   BL31 in TZC secured DRAM. If TSP is present, then setting this option also
10   sets the TSP location to DRAM and ignores the ``ARM_TSP_RAM_LOCATION`` build
11   flag.
12
13-  ``ARM_CONFIG_CNTACR``: boolean option to unlock access to the ``CNTBase<N>``
14   frame registers by setting the ``CNTCTLBase.CNTACR<N>`` register bits. The
15   frame number ``<N>`` is defined by ``PLAT_ARM_NSTIMER_FRAME_ID``, which
16   should match the frame used by the Non-Secure image (normally the Linux
17   kernel). Default is true (access to the frame is allowed).
18
19-  ``ARM_FW_CONFIG_LOAD_ENABLE``: Boolean option to enable the loading of
20   FW_CONFIG device trees from the Firmware Image Package (FIP). When enabled,
21   BL2 calls the platform specific function `arm_bl2_el3_plat_config_load`.
22   This function is responsible for loading, parsing, and validating the
23   FW_CONFIG device trees from the FIP. The option depends on RESET_TO_BL2.
24
25-  ``ARM_DISABLE_TRUSTED_WDOG``: boolean option to disable the Trusted Watchdog.
26   By default, Arm platforms use a watchdog to trigger a system reset in case
27   an error is encountered during the boot process (for example, when an image
28   could not be loaded or authenticated). The watchdog is enabled in the early
29   platform setup hook at BL1 and disabled in the BL1 prepare exit hook. The
30   Trusted Watchdog may be disabled at build time for testing or development
31   purposes.
32
33-  ``ARM_LINUX_KERNEL_AS_BL33``: The Linux kernel expects registers x0-x3 to
34   have specific values at boot. This boolean option allows the Trusted Firmware
35   to have a Linux kernel image as BL33 by preparing the registers to these
36   values before jumping to BL33. This option defaults to 0 (disabled). When
37   enabled (1), the address of the Linux image must be provided via the
38   ``PRELOADED_BL33_BASE`` option. Additionally, either the ``HW_CONFIG_BASE``
39   or ``ARM_PRELOADED_DTB_BASE`` option must specify the memory location of a
40   preloaded device tree blob (DTB). This option implies
41   ``USE_KERNEL_DT_CONVENTION``.
42
43-  ``ARM_PLAT_MT``: This flag determines whether the Arm platform layer has to
44   cater for the multi-threading ``MT`` bit when accessing MPIDR. When this flag
45   is set, the functions which deal with MPIDR assume that the ``MT`` bit in
46   MPIDR is set and access the bit-fields in MPIDR accordingly. Default value of
47   this flag is 0. Note that this option is not used on FVP platforms.
48
49- ``ARM_PLAT_PROVIDES_BL2_MEM_PARAMS``: This flag can be overriden to 1 in the Arm
50   platform’s ``platform.mk`` to indicate that the platform supplies its own
51   bl2_mem_params_desc.c implementation. When enabled, the common implementation
52   in ``plat/arm/common/`` is omitted, and the platform must add its own
53   bl2_mem_params_desc.c file to ``BL2_SOURCES``.  The default value is 0.
54
55-  ``ARM_RECOM_STATE_ID_ENC``: The PSCI1.0 specification recommends an encoding
56   for the construction of composite state-ID in the power-state parameter.
57   The existing PSCI clients currently do not support this encoding of
58   State-ID yet. Hence this flag is used to configure whether to use the
59   recommended State-ID encoding or not. The default value of this flag is 0,
60   in which case the platform is configured to expect NULL in the State-ID
61   field of power-state parameter.
62
63-  ``ARM_ROTPK_LOCATION``: used when ``TRUSTED_BOARD_BOOT=1``. It specifies the
64   location of the ROTPK returned by the function ``plat_get_rotpk_info()``
65   for Arm platforms. Depending on the selected option, the proper private key
66   must be specified using the ``ROT_KEY`` option when building the Trusted
67   Firmware. This private key will be used by the certificate generation tool
68   to sign the BL2 and Trusted Key certificates. Available options for
69   ``ARM_ROTPK_LOCATION`` are:
70
71   -  ``regs`` : return the ROTPK hash stored in the Trusted root-key storage
72      registers.
73   -  ``devel_rsa`` : return a development public key hash embedded in the BL1
74      and BL2 binaries. This hash corresponds to the development private key
75      ``plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem``.
76      The hashing algorithm is selected by ``HASH_ALG``; sha256 is used if
77      ``HASH_ALG`` is not specified. A different RSA key can be specified by setting
78      ``ROT_KEY``, there are 3k and 4k RSA keys in ``plat/arm/board/common/rotpk/``.
79   -  ``devel_ecdsa`` : return a development public key hash embedded in the BL1
80      and BL2 binaries. This hash corresponds to the development private key
81      ``plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem`` unless a different key
82      is specified with ``ROT_KEY``, such as the 384 bit key in the same directory.
83      he hashing algorithm is selected by ``HASH_ALG``; sha256 is used if ``HASH_ALG``
84      is not specified.
85   -  ``devel_full_dev_rsa_key`` : return a development public key embedded in
86      the BL1 and BL2 binaries. This key corresponds to the RSA private
87      key ``plat/arm/board/common/rotpk/arm_rotprivk.pem`` by default, but can
88      be changed by setting ``ROT_KEY``, there are 3k and 4k RSA keys in
89      ``plat/arm/board/common/rotpk/``.
90   - ``devel_full_dev_ecdsa_key`` : return a development public key embedded in
91      the BL1 and BL2 binaries. This key corresponds to the EC private key
92      ``plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem``, unless a different
93      ECDSA key is specified by ``ROT_KEY``, such as the 384 bit key in the same directory.
94
95-  ``ARM_TSP_RAM_LOCATION``: location of the TSP binary. Options:
96
97   -  ``tsram`` : Trusted SRAM (default option when TBB is not enabled)
98   -  ``tdram`` : Trusted DRAM (if available)
99   -  ``dram`` : Secure region in DRAM (default option when TBB is enabled,
100      configured by the TrustZone controller)
101
102-  ``ARM_XLAT_TABLES_LIB_V1``: boolean option to compile TF-A with version 1
103   of the translation tables library instead of version 2. It is set to 0 by
104   default, which selects version 2.
105
106-  ``ARM_GPT_SUPPORT``: Enable GPT parser to get the entry address and length of
107   the various partitions present in the GPT image. This support is available
108   only for the BL2 component, and it is disabled by default.
109   The following diagram shows the view of the FIP partition inside the GPT
110   image:
111
112   |FIP in a GPT image|
113
114For a better understanding of these options, the Arm development platform memory
115map is explained in the :ref:`Firmware Design`.
116
117.. _build_options_arm_css_platform:
118
119Arm CSS Platform-Specific Build Options
120---------------------------------------
121
122-  ``CSS_DETECT_PRE_1_7_0_SCP``: Boolean flag to detect SCP version
123   incompatibility. Version 1.7.0 of the SCP firmware made a non-backwards
124   compatible change to the MTL protocol, used for AP/SCP communication.
125   TF-A no longer supports earlier SCP versions. If this option is set to 1
126   then TF-A will detect if an earlier version is in use. Default is 1.
127
128-  ``CSS_LOAD_SCP_IMAGES``: Boolean flag, which when set, adds SCP_BL2 and
129   SCP_BL2U to the FIP and FWU_FIP respectively, and enables them to be loaded
130   during boot. Default is 1.
131
132-  ``CSS_USE_SCMI_SDS_DRIVER``: Boolean flag which selects SCMI/SDS drivers
133   instead of SCPI/BOM driver for communicating with the SCP during power
134   management operations and for SCP RAM Firmware transfer. If this option
135   is set to 1, then SCMI/SDS drivers will be used. Default is 0.
136
137- ``CSS_SYSTEM_GRACEFUL_RESET``: Build option to enable graceful powerdown of
138   CPU core on reset. This build option can be used on CSS platforms that
139   require all the CPUs to execute the CPU specific power down sequence to
140   complete a warm reboot sequence in which only the CPUs are power cycled.
141
142Arm FVP Build Options
143---------------------
144
145- ``FVP_TRUSTED_SRAM_SIZE``: Size (in kilobytes) of the Trusted SRAM region to
146  utilize when building for the FVP platform. This option defaults to 256 with
147  build option ENABLE_RME=0 and 384 for ENABLE_RME=1.
148
149Arm Juno Build Options
150----------------------
151
152-  ``JUNO_AARCH32_EL3_RUNTIME``: This build flag enables you to execute EL3
153   runtime software in AArch32 mode, which is required to run AArch32 on Juno.
154   By default this flag is set to '0'. Enabling this flag builds BL1 and BL2 in
155   AArch64 and facilitates the loading of ``SP_MIN`` and BL33 as AArch32 executable
156   images.
157
158Arm Neoverse RD Platform Build Options
159--------------------------------------
160
161 - ``NRD_CHIP_COUNT``: Configures the number of chips on a Neoverse RD platform
162   which supports multi-chip operation. If ``NRD_CHIP_COUNT`` is set to any
163   valid value greater than 1, the platform code performs required configuration
164   to support multi-chip operation.
165
166- ``NRD_PLATFORM_VARIANT``: Selects the variant of a Neoverse RD platform. A
167  particular Neoverse RD platform may have multiple variants which may differ in
168  core count, cluster count or other peripherals. This build option is used to
169  select the appropriate platform variant for the build. The range of valid
170  values is platform specific.
171
172--------------
173
174.. |FIP in a GPT image| image:: ../../resources/diagrams/FIP_in_a_GPT_image.png
175
176*Copyright (c) 2019-2025, Arm Limited. All rights reserved.*
177