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