xref: /rk3399_ARM-atf/docs/plat/arm/arm-build-options.rst (revision 43f35ef516b899c82e11bad760c704c44ced5440)
1*43f35ef5SPaul BeesleyArm Development Platform Build Options
2*43f35ef5SPaul Beesley======================================
3*43f35ef5SPaul Beesley
4*43f35ef5SPaul BeesleyArm Platform Build Options
5*43f35ef5SPaul Beesley--------------------------
6*43f35ef5SPaul Beesley
7*43f35ef5SPaul Beesley-  ``ARM_BL31_IN_DRAM``: Boolean option to select loading of BL31 in TZC secured
8*43f35ef5SPaul Beesley   DRAM. By default, BL31 is in the secure SRAM. Set this flag to 1 to load
9*43f35ef5SPaul Beesley   BL31 in TZC secured DRAM. If TSP is present, then setting this option also
10*43f35ef5SPaul Beesley   sets the TSP location to DRAM and ignores the ``ARM_TSP_RAM_LOCATION`` build
11*43f35ef5SPaul Beesley   flag.
12*43f35ef5SPaul Beesley
13*43f35ef5SPaul Beesley-  ``ARM_CONFIG_CNTACR``: boolean option to unlock access to the ``CNTBase<N>``
14*43f35ef5SPaul Beesley   frame registers by setting the ``CNTCTLBase.CNTACR<N>`` register bits. The
15*43f35ef5SPaul Beesley   frame number ``<N>`` is defined by ``PLAT_ARM_NSTIMER_FRAME_ID``, which
16*43f35ef5SPaul Beesley   should match the frame used by the Non-Secure image (normally the Linux
17*43f35ef5SPaul Beesley   kernel). Default is true (access to the frame is allowed).
18*43f35ef5SPaul Beesley
19*43f35ef5SPaul Beesley-  ``ARM_DISABLE_TRUSTED_WDOG``: boolean option to disable the Trusted Watchdog.
20*43f35ef5SPaul Beesley   By default, Arm platforms use a watchdog to trigger a system reset in case
21*43f35ef5SPaul Beesley   an error is encountered during the boot process (for example, when an image
22*43f35ef5SPaul Beesley   could not be loaded or authenticated). The watchdog is enabled in the early
23*43f35ef5SPaul Beesley   platform setup hook at BL1 and disabled in the BL1 prepare exit hook. The
24*43f35ef5SPaul Beesley   Trusted Watchdog may be disabled at build time for testing or development
25*43f35ef5SPaul Beesley   purposes.
26*43f35ef5SPaul Beesley
27*43f35ef5SPaul Beesley-  ``ARM_LINUX_KERNEL_AS_BL33``: The Linux kernel expects registers x0-x3 to
28*43f35ef5SPaul Beesley   have specific values at boot. This boolean option allows the Trusted Firmware
29*43f35ef5SPaul Beesley   to have a Linux kernel image as BL33 by preparing the registers to these
30*43f35ef5SPaul Beesley   values before jumping to BL33. This option defaults to 0 (disabled). For
31*43f35ef5SPaul Beesley   AArch64 ``RESET_TO_BL31`` and for AArch32 ``RESET_TO_SP_MIN`` must be 1 when
32*43f35ef5SPaul Beesley   using it. If this option is set to 1, ``ARM_PRELOADED_DTB_BASE`` must be set
33*43f35ef5SPaul Beesley   to the location of a device tree blob (DTB) already loaded in memory. The
34*43f35ef5SPaul Beesley   Linux Image address must be specified using the ``PRELOADED_BL33_BASE``
35*43f35ef5SPaul Beesley   option.
36*43f35ef5SPaul Beesley
37*43f35ef5SPaul Beesley-  ``ARM_PLAT_MT``: This flag determines whether the Arm platform layer has to
38*43f35ef5SPaul Beesley   cater for the multi-threading ``MT`` bit when accessing MPIDR. When this flag
39*43f35ef5SPaul Beesley   is set, the functions which deal with MPIDR assume that the ``MT`` bit in
40*43f35ef5SPaul Beesley   MPIDR is set and access the bit-fields in MPIDR accordingly. Default value of
41*43f35ef5SPaul Beesley   this flag is 0. Note that this option is not used on FVP platforms.
42*43f35ef5SPaul Beesley
43*43f35ef5SPaul Beesley-  ``ARM_RECOM_STATE_ID_ENC``: The PSCI1.0 specification recommends an encoding
44*43f35ef5SPaul Beesley   for the construction of composite state-ID in the power-state parameter.
45*43f35ef5SPaul Beesley   The existing PSCI clients currently do not support this encoding of
46*43f35ef5SPaul Beesley   State-ID yet. Hence this flag is used to configure whether to use the
47*43f35ef5SPaul Beesley   recommended State-ID encoding or not. The default value of this flag is 0,
48*43f35ef5SPaul Beesley   in which case the platform is configured to expect NULL in the State-ID
49*43f35ef5SPaul Beesley   field of power-state parameter.
50*43f35ef5SPaul Beesley
51*43f35ef5SPaul Beesley-  ``ARM_ROTPK_LOCATION``: used when ``TRUSTED_BOARD_BOOT=1``. It specifies the
52*43f35ef5SPaul Beesley   location of the ROTPK hash returned by the function ``plat_get_rotpk_info()``
53*43f35ef5SPaul Beesley   for Arm platforms. Depending on the selected option, the proper private key
54*43f35ef5SPaul Beesley   must be specified using the ``ROT_KEY`` option when building the Trusted
55*43f35ef5SPaul Beesley   Firmware. This private key will be used by the certificate generation tool
56*43f35ef5SPaul Beesley   to sign the BL2 and Trusted Key certificates. Available options for
57*43f35ef5SPaul Beesley   ``ARM_ROTPK_LOCATION`` are:
58*43f35ef5SPaul Beesley
59*43f35ef5SPaul Beesley   -  ``regs`` : return the ROTPK hash stored in the Trusted root-key storage
60*43f35ef5SPaul Beesley      registers. The private key corresponding to this ROTPK hash is not
61*43f35ef5SPaul Beesley      currently available.
62*43f35ef5SPaul Beesley   -  ``devel_rsa`` : return a development public key hash embedded in the BL1
63*43f35ef5SPaul Beesley      and BL2 binaries. This hash has been obtained from the RSA public key
64*43f35ef5SPaul Beesley      ``arm_rotpk_rsa.der``, located in ``plat/arm/board/common/rotpk``. To use
65*43f35ef5SPaul Beesley      this option, ``arm_rotprivk_rsa.pem`` must be specified as ``ROT_KEY``
66*43f35ef5SPaul Beesley      when creating the certificates.
67*43f35ef5SPaul Beesley   -  ``devel_ecdsa`` : return a development public key hash embedded in the BL1
68*43f35ef5SPaul Beesley      and BL2 binaries. This hash has been obtained from the ECDSA public key
69*43f35ef5SPaul Beesley      ``arm_rotpk_ecdsa.der``, located in ``plat/arm/board/common/rotpk``. To
70*43f35ef5SPaul Beesley      use this option, ``arm_rotprivk_ecdsa.pem`` must be specified as
71*43f35ef5SPaul Beesley      ``ROT_KEY`` when creating the certificates.
72*43f35ef5SPaul Beesley
73*43f35ef5SPaul Beesley-  ``ARM_TSP_RAM_LOCATION``: location of the TSP binary. Options:
74*43f35ef5SPaul Beesley
75*43f35ef5SPaul Beesley   -  ``tsram`` : Trusted SRAM (default option when TBB is not enabled)
76*43f35ef5SPaul Beesley   -  ``tdram`` : Trusted DRAM (if available)
77*43f35ef5SPaul Beesley   -  ``dram`` : Secure region in DRAM (default option when TBB is enabled,
78*43f35ef5SPaul Beesley      configured by the TrustZone controller)
79*43f35ef5SPaul Beesley
80*43f35ef5SPaul Beesley-  ``ARM_XLAT_TABLES_LIB_V1``: boolean option to compile TF-A with version 1
81*43f35ef5SPaul Beesley   of the translation tables library instead of version 2. It is set to 0 by
82*43f35ef5SPaul Beesley   default, which selects version 2.
83*43f35ef5SPaul Beesley
84*43f35ef5SPaul Beesley-  ``ARM_CRYPTOCELL_INTEG`` : bool option to enable TF-A to invoke Arm®
85*43f35ef5SPaul Beesley   TrustZone® CryptoCell functionality for Trusted Board Boot on capable Arm
86*43f35ef5SPaul Beesley   platforms. If this option is specified, then the path to the CryptoCell
87*43f35ef5SPaul Beesley   SBROM library must be specified via ``CCSBROM_LIB_PATH`` flag.
88*43f35ef5SPaul Beesley
89*43f35ef5SPaul BeesleyFor a better understanding of these options, the Arm development platform memory
90*43f35ef5SPaul Beesleymap is explained in the :ref:`Firmware Design`.
91*43f35ef5SPaul Beesley
92*43f35ef5SPaul Beesley.. _build_options_arm_css_platform:
93*43f35ef5SPaul Beesley
94*43f35ef5SPaul BeesleyArm CSS Platform-Specific Build Options
95*43f35ef5SPaul Beesley---------------------------------------
96*43f35ef5SPaul Beesley
97*43f35ef5SPaul Beesley-  ``CSS_DETECT_PRE_1_7_0_SCP``: Boolean flag to detect SCP version
98*43f35ef5SPaul Beesley   incompatibility. Version 1.7.0 of the SCP firmware made a non-backwards
99*43f35ef5SPaul Beesley   compatible change to the MTL protocol, used for AP/SCP communication.
100*43f35ef5SPaul Beesley   TF-A no longer supports earlier SCP versions. If this option is set to 1
101*43f35ef5SPaul Beesley   then TF-A will detect if an earlier version is in use. Default is 1.
102*43f35ef5SPaul Beesley
103*43f35ef5SPaul Beesley-  ``CSS_LOAD_SCP_IMAGES``: Boolean flag, which when set, adds SCP_BL2 and
104*43f35ef5SPaul Beesley   SCP_BL2U to the FIP and FWU_FIP respectively, and enables them to be loaded
105*43f35ef5SPaul Beesley   during boot. Default is 1.
106*43f35ef5SPaul Beesley
107*43f35ef5SPaul Beesley-  ``CSS_USE_SCMI_SDS_DRIVER``: Boolean flag which selects SCMI/SDS drivers
108*43f35ef5SPaul Beesley   instead of SCPI/BOM driver for communicating with the SCP during power
109*43f35ef5SPaul Beesley   management operations and for SCP RAM Firmware transfer. If this option
110*43f35ef5SPaul Beesley   is set to 1, then SCMI/SDS drivers will be used. Default is 0.
111*43f35ef5SPaul Beesley
112*43f35ef5SPaul Beesley--------------
113*43f35ef5SPaul Beesley
114*43f35ef5SPaul Beesley*Copyright (c) 2019, Arm Limited. All rights reserved.*
115