1Trusted Firmware-A Documentation 2================================ 3 4.. toctree:: 5 :maxdepth: 1 6 :hidden: 7 8 Home<self> 9 about/index 10 getting_started/index 11 process/index 12 components/index 13 design/index 14 plat/index 15 perf/index 16 security_advisories/index 17 change-log 18 glossary 19 license 20 21Trusted Firmware-A (TF-A) provides a reference implementation of secure world 22software for `Armv7-A and Armv8-A`_, including a `Secure Monitor`_ executing 23at Exception Level 3 (EL3). It implements various Arm interface standards, 24such as: 25 26- The `Power State Coordination Interface (PSCI)`_ 27- `Trusted Board Boot Requirements CLIENT (TBBR-CLIENT)`_ 28- `SMC Calling Convention`_ 29- `System Control and Management Interface (SCMI)`_ 30- `Software Delegated Exception Interface (SDEI)`_ 31 32Where possible, the code is designed for reuse or porting to other Armv7-A and 33Armv8-A model and hardware platforms. 34 35This release provides a suitable starting point for productization of secure 36world boot and runtime firmware, in either the AArch32 or AArch64 execution 37states. 38 39Users are encouraged to do their own security validation, including penetration 40testing, on any secure world code derived from TF-A. 41 42In collaboration with interested parties, we will continue to enhance |TF-A| 43with reference implementations of Arm standards to benefit developers working 44with Armv7-A and Armv8-A TrustZone technology. 45 46Getting Started 47--------------- 48 49The |TF-A| documentation contains guidance for obtaining and building the 50software for existing, supported platforms, as well as supporting information 51for porting the software to a new platform. 52 53The **About** chapter gives a high-level overview of |TF-A| features as well as 54some information on the project and how it is organized. 55 56Refer to the documents in the **Getting Started** chapter for information about 57the prerequisites and requirements for building |TF-A|. 58 59The **Processes & Policies** chapter explains the project's release schedule 60and process, how security disclosures are handled, and the guidelines for 61contributing to the project (including the coding style). 62 63The **Components** chapter holds documents that explain specific components 64that make up the |TF-A| software, the :ref:`Exception Handling Framework`, for 65example. 66 67In the **System Design** chapter you will find documents that explain the 68design of portions of the software that involve more than one component, such 69as the :ref:`Trusted Board Boot` process. 70 71**Platform Ports** provides a list of the supported hardware and software-model 72platforms that are supported upstream in |TF-A|. Most of these platforms also 73have additional documentation that has been provided by the maintainers of the 74platform. 75 76The results of any performance evaluations are added to the 77**Performance & Testing** chapter. 78 79**Security Advisories** holds a list of documents relating to |CVE| entries that 80have previously been raised against the software. 81 82Platforms 83--------- 84 85Various AArch32 and AArch64 builds of this release have been tested on r0, r1 86and r2 variants of the `Juno Arm Development Platform`_. 87 88The latest version of the AArch64 build of TF-A has been tested on the following 89Arm FVPs without shifted affinities, and that do not support threaded CPU cores 90(64-bit host machine only). 91 92.. note:: 93 The FVP models used are Version 11.6 Build 45, unless otherwise stated. 94 95- ``FVP_Base_AEMv8A-AEMv8A`` 96- ``FVP_Base_AEMv8A-AEMv8A-AEMv8A-AEMv8A-CCN502`` 97- ``FVP_Base_RevC-2xAEMv8A`` 98- ``FVP_Base_Cortex-A32x4`` 99- ``FVP_Base_Cortex-A35x4`` 100- ``FVP_Base_Cortex-A53x4`` 101- ``FVP_Base_Cortex-A55x4+Cortex-A75x4`` 102- ``FVP_Base_Cortex-A55x4`` 103- ``FVP_Base_Cortex-A57x1-A53x1`` 104- ``FVP_Base_Cortex-A57x2-A53x4`` 105- ``FVP_Base_Cortex-A57x4-A53x4`` 106- ``FVP_Base_Cortex-A57x4`` 107- ``FVP_Base_Cortex-A72x4-A53x4`` 108- ``FVP_Base_Cortex-A72x4`` 109- ``FVP_Base_Cortex-A73x4-A53x4`` 110- ``FVP_Base_Cortex-A73x4`` 111- ``FVP_Base_Cortex-A75x4`` 112- ``FVP_Base_Cortex-A76x4`` 113- ``FVP_Base_Cortex-A76AEx4`` (Tested with internal model) 114- ``FVP_Base_Cortex-A76AEx8`` (Tested with internal model) 115- ``FVP_Base_Cortex-A77x4`` (Version 11.7 build 36) 116- ``FVP_Base_Neoverse-N1x4`` (Tested with internal model) 117- ``FVP_CSS_SGI-575`` (Version 11.3 build 42) 118- ``FVP_CSS_SGM-775`` (Version 11.3 build 42) 119- ``FVP_RD_E1Edge`` (Version 11.3 build 42) 120- ``FVP_RD_N1Edge`` (Version 11.3 build 42) 121- ``Foundation_Platform`` 122 123The latest version of the AArch32 build of TF-A has been tested on the following 124Arm FVPs without shifted affinities, and that do not support threaded CPU cores 125(64-bit host machine only). 126 127- ``FVP_Base_AEMv8A-AEMv8A`` 128- ``FVP_Base_Cortex-A32x4`` 129 130.. note:: 131 The ``FVP_Base_RevC-2xAEMv8A`` FVP only supports shifted affinities. 132 133The Foundation FVP can be downloaded free of charge. The Base FVPs can be 134licensed from Arm. See the `Arm FVP website`_. 135 136All the above platforms have been tested with `Linaro Release 19.06`_. 137 138This release also contains the following platform support: 139 140- Allwinner sun50i_a64 and sun50i_h6 141- Amlogic Meson S905 (GXBB) 142- Arm Juno Software Development Platform 143- Arm Neoverse N1 System Development Platform (N1SDP) 144- Arm Neoverse Reference Design N1 Edge (RD-N1-Edge) FVP 145- Arm Neoverse Reference Design E1 Edge (RD-E1-Edge) FVP 146- Arm SGI-575 and SGM-775 147- Arm Versatile Express FVP 148- HiKey, HiKey960 and Poplar boards 149- Intel Stratix 10 SoC FPGA 150- Marvell Armada 3700 and 8K 151- MediaTek MT6795 and MT8173 SoCs 152- NVIDIA T132, T186 and T210 SoCs 153- NXP QorIQ LS1043A, i.MX8MM, i.MX8MQ, i.MX8QX, i.MX8QM and i.MX7Solo WaRP7 154- QEMU 155- Raspberry Pi 3 156- Renesas R-Car Generation 3 157- RockChip RK3328, RK3368 and RK3399 SoCs 158- Socionext UniPhier SoC family and SynQuacer SC2A11 SoCs 159- STMicroelectronics STM32MP1 160- Texas Instruments K3 SoCs 161- Xilinx Versal and Zynq UltraScale + MPSoC 162 163-------------- 164 165*Copyright (c) 2013-2019, Arm Limited and Contributors. All rights reserved.* 166 167.. _Armv7-A and Armv8-A: https://developer.arm.com/products/architecture/a-profile 168.. _Secure Monitor: http://www.arm.com/products/processors/technologies/trustzone/tee-smc.php 169.. _Power State Coordination Interface (PSCI): http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf 170.. _Trusted Board Boot Requirements CLIENT (TBBR-CLIENT): https://developer.arm.com/docs/den0006/latest/trusted-board-boot-requirements-client-tbbr-client-armv8-a 171.. _System Control and Management Interface (SCMI): http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf 172.. _Software Delegated Exception Interface (SDEI): http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf 173.. _Juno Arm Development Platform: http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php 174.. _Arm FVP website: https://developer.arm.com/products/system-design/fixed-virtual-platforms 175.. _Linaro Release 19.06: http://releases.linaro.org/members/arm/platforms/19.06 176.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf 177