blob: 8981072a59aa55e4c1d86a8c528c2c033f710d12 [file] [log] [blame]
Paul Beesley40d553c2019-02-11 17:54:45 +00001Trusted Firmware-A Documentation
2================================
Paul Beesley653279b2019-01-23 15:39:39 +00003
4.. toctree::
5 :maxdepth: 1
Paul Beesley57354ab2019-03-07 17:03:22 +00006 :hidden:
Paul Beesley653279b2019-01-23 15:39:39 +00007
Paul Beesley9f1622b2019-03-07 15:25:14 +00008 Home<self>
Paul Beesley8eb94902019-10-16 13:35:47 +00009 about/index
Paul Beesley40d553c2019-02-11 17:54:45 +000010 getting_started/index
11 process/index
12 components/index
13 design/index
14 plat/index
15 perf/index
16 security_advisories/index
Paul Beesley653279b2019-01-23 15:39:39 +000017 change-log
Paul Beesley8f62ca72019-03-13 13:58:02 +000018 glossary
Paul Beesley9f1622b2019-03-07 15:25:14 +000019 license
Paul Beesley653279b2019-01-23 15:39:39 +000020
Paul Beesley9f1622b2019-03-07 15:25:14 +000021Trusted 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:
Paul Beesley653279b2019-01-23 15:39:39 +000025
Paul Beesley9f1622b2019-03-07 15:25:14 +000026- 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
Paul Beesley8cc36ae2019-09-23 15:40:21 +000042In 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.
Paul Beesley9f1622b2019-03-07 15:25:14 +000045
Paul Beesley8eb94902019-10-16 13:35:47 +000046Getting Started
47---------------
Paul Beesley9f1622b2019-03-07 15:25:14 +000048
Paul Beesley8eb94902019-10-16 13:35:47 +000049The |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.
Paul Beesley9f1622b2019-03-07 15:25:14 +000052
Paul Beesley8eb94902019-10-16 13:35:47 +000053The **About** chapter gives a high-level overview of |TF-A| features as well as
54some information on the project and how it is organized.
Paul Beesley9f1622b2019-03-07 15:25:14 +000055
Paul Beesley8eb94902019-10-16 13:35:47 +000056Refer to the documents in the **Getting Started** chapter for information about
57the prerequisites and requirements for building |TF-A|.
Paul Beesley9f1622b2019-03-07 15:25:14 +000058
Paul Beesley8eb94902019-10-16 13:35:47 +000059The **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).
Paul Beesley9f1622b2019-03-07 15:25:14 +000062
Paul Beesley8eb94902019-10-16 13:35:47 +000063The **Components** chapter holds documents that explain specific components
64that make up the |TF-A| software, the :ref:`Exception Handling Framework`, for
65example.
Paul Beesley9f1622b2019-03-07 15:25:14 +000066
Paul Beesley8eb94902019-10-16 13:35:47 +000067In 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.
Paul Beesley9f1622b2019-03-07 15:25:14 +000070
Paul Beesley8eb94902019-10-16 13:35:47 +000071**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.
Paul Beesley9f1622b2019-03-07 15:25:14 +000075
Paul Beesley8eb94902019-10-16 13:35:47 +000076The results of any performance evaluations are added to the
77**Performance & Testing** chapter.
Paul Beesley9f1622b2019-03-07 15:25:14 +000078
Paul Beesley8eb94902019-10-16 13:35:47 +000079**Security Advisories** holds a list of documents relating to |CVE| entries that
80have previously been raised against the software.
Paul Beesley9f1622b2019-03-07 15:25:14 +000081
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
Paul Beesleye1c50262019-03-13 16:20:44 +000092.. note::
Artsem Artsemenka434d93d2019-10-15 14:59:04 +010093 The FVP models used are Version 11.6 Build 45, unless otherwise stated.
Paul Beesley9f1622b2019-03-07 15:25:14 +000094
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)
Balint Dobszayf363deb2019-07-03 13:02:56 +0200115- ``FVP_Base_Cortex-A77x4`` (Version 11.7 build 36)
Paul Beesley9f1622b2019-03-07 15:25:14 +0000116- ``FVP_Base_Neoverse-N1x4`` (Tested with internal model)
Paul Beesley9f1622b2019-03-07 15:25:14 +0000117- ``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
Paul Beesleye1c50262019-03-13 16:20:44 +0000130.. note::
131 The ``FVP_Base_RevC-2xAEMv8A`` FVP only supports shifted affinities.
Paul Beesley9f1622b2019-03-07 15:25:14 +0000132
133The Foundation FVP can be downloaded free of charge. The Base FVPs can be
134licensed from Arm. See the `Arm FVP website`_.
135
Paul Beesley9ec4afc2019-10-15 09:08:12 +0000136All the above platforms have been tested with `Linaro Release 19.06`_.
Paul Beesley9f1622b2019-03-07 15:25:14 +0000137
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
Paul Beesley9f1622b2019-03-07 15:25:14 +0000163--------------
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
Paul Beesley8eb94902019-10-16 13:35:47 +0000169.. _Power State Coordination Interface (PSCI): http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf
Paul Beesley9f1622b2019-03-07 15:25:14 +0000170.. _Trusted Board Boot Requirements CLIENT (TBBR-CLIENT): https://developer.arm.com/docs/den0006/latest/trusted-board-boot-requirements-client-tbbr-client-armv8-a
Paul Beesley8eb94902019-10-16 13:35:47 +0000171.. _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
Paul Beesley9f1622b2019-03-07 15:25:14 +0000173.. _Juno Arm Development Platform: http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php
Paul Beesley8eb94902019-10-16 13:35:47 +0000174.. _Arm FVP website: https://developer.arm.com/products/system-design/fixed-virtual-platforms
Paul Beesley9ec4afc2019-10-15 09:08:12 +0000175.. _Linaro Release 19.06: http://releases.linaro.org/members/arm/platforms/19.06
Paul Beesley8eb94902019-10-16 13:35:47 +0000176.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf