xref: /rk3399_ARM-atf/readme.rst (revision 4bf3349b80838e2d3ffa996423bc9ad28eadc010)
1*4bf3349bSDan HandleyARM Trusted Firmware - version 1.4
26f625747SDouglas Raillard==================================
36f625747SDouglas Raillard
46f625747SDouglas RaillardARM Trusted Firmware provides a reference implementation of secure world
56f625747SDouglas Raillardsoftware for `ARMv8-A`_, including a `Secure Monitor`_ executing at
6*4bf3349bSDan HandleyException Level 3 (EL3). It implements various ARM interface standards, such as:
7*4bf3349bSDan Handley
8*4bf3349bSDan Handley-  The `Power State Coordination Interface (PSCI)`_
9*4bf3349bSDan Handley-  Trusted Board Boot Requirements (TBBR, ARM DEN0006C-1)
10*4bf3349bSDan Handley-  `SMC Calling Convention`_
11*4bf3349bSDan Handley-  `System Control and Management Interface`_
12*4bf3349bSDan Handley
13*4bf3349bSDan HandleyAs far as possible the code is designed for reuse or porting to other ARMv8-A
14*4bf3349bSDan Handleymodel and hardware platforms.
156f625747SDouglas Raillard
166f625747SDouglas RaillardARM will continue development in collaboration with interested parties to
17*4bf3349bSDan Handleyprovide a full reference implementation of Secure Monitor code and ARM standards
186f625747SDouglas Raillardto the benefit of all developers working with ARMv8-A TrustZone technology.
196f625747SDouglas Raillard
206f625747SDouglas RaillardLicense
216f625747SDouglas Raillard-------
226f625747SDouglas Raillard
236f625747SDouglas RaillardThe software is provided under a BSD-3-Clause `license`_. Contributions to this
246f625747SDouglas Raillardproject are accepted under the same license with developer sign-off as
256f625747SDouglas Raillarddescribed in the `Contributing Guidelines`_.
266f625747SDouglas Raillard
276f625747SDouglas RaillardThis project contains code from other projects as listed below. The original
286f625747SDouglas Raillardlicense text is included in those source files.
296f625747SDouglas Raillard
306f625747SDouglas Raillard-  The stdlib source code is derived from FreeBSD code.
316f625747SDouglas Raillard
326f625747SDouglas Raillard-  The libfdt source code is dual licensed. It is used by this project under
336f625747SDouglas Raillard   the terms of the BSD-2-Clause license.
346f625747SDouglas Raillard
35*4bf3349bSDan Handley-  The LLVM compiler-rt source code is dual licensed. It is used by this
36*4bf3349bSDan Handley   project under the terms of the University of Illinois "BSD-Like" license.
37*4bf3349bSDan Handley
386f625747SDouglas RaillardThis Release
396f625747SDouglas Raillard------------
406f625747SDouglas Raillard
416f625747SDouglas RaillardThis release provides a suitable starting point for productization of secure
42*4bf3349bSDan Handleyworld boot and runtime firmware, in either the AArch32 or AArch64 execution
43*4bf3349bSDan Handleystate.
446f625747SDouglas Raillard
456f625747SDouglas RaillardUsers are encouraged to do their own security validation, including penetration
466f625747SDouglas Raillardtesting, on any secure world code derived from ARM Trusted Firmware.
476f625747SDouglas Raillard
486f625747SDouglas RaillardFunctionality
496f625747SDouglas Raillard~~~~~~~~~~~~~
506f625747SDouglas Raillard
51*4bf3349bSDan Handley-  Initialization of the secure world, for example exception vectors, control
52*4bf3349bSDan Handley   registers and interrupts for the platform.
536f625747SDouglas Raillard
546f625747SDouglas Raillard-  Library support for CPU specific reset and power down sequences. This
55*4bf3349bSDan Handley   includes support for errata workarounds and the latest ARM DynamIQ CPUs.
566f625747SDouglas Raillard
576f625747SDouglas Raillard-  Drivers to enable standard initialization of ARM System IP, for example
58*4bf3349bSDan Handley   Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI),
59*4bf3349bSDan Handley   Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone
60*4bf3349bSDan Handley   Controller (TZC).
616f625747SDouglas Raillard
62*4bf3349bSDan Handley-  A generic `SCMI`_ driver to interface with conforming power controllers, for
63*4bf3349bSDan Handley   example the ARM System Control Processor (SCP).
646f625747SDouglas Raillard
65*4bf3349bSDan Handley-  SMC (Secure Monitor Call) handling, conforming to the `SMC Calling
66*4bf3349bSDan Handley   Convention`_ using an EL3 runtime services framework.
676f625747SDouglas Raillard
68*4bf3349bSDan Handley-  `PSCI`_ library support for CPU, cluster and system power management
69*4bf3349bSDan Handley   use-cases.
70*4bf3349bSDan Handley   This library is pre-integrated with the AArch64 EL3 Runtime Software, and
71*4bf3349bSDan Handley   is also suitable for integration with other AArch32 EL3 Runtime Software,
72*4bf3349bSDan Handley   for example an AArch32 Secure OS.
73*4bf3349bSDan Handley
74*4bf3349bSDan Handley-  A minimal AArch32 Secure Payload (SP\_MIN) to demonstrate `PSCI`_ library
75*4bf3349bSDan Handley   integration with AArch32 EL3 Runtime Software.
766f625747SDouglas Raillard
776f625747SDouglas Raillard-  Secure Monitor library code such as world switching, EL1 context management
786f625747SDouglas Raillard   and interrupt routing.
79*4bf3349bSDan Handley   When a Secure-EL1 Payload (SP) is present, for example a Secure OS, the
80*4bf3349bSDan Handley   AArch64 EL3 Runtime Software must be integrated with a dispatcher component
81*4bf3349bSDan Handley   (SPD) to customize the interaction with the SP.
826f625747SDouglas Raillard
83*4bf3349bSDan Handley-  A Test SP/SPD to demonstrate AArch64 Secure Monitor functionality and SP
84*4bf3349bSDan Handley   interaction with PSCI.
856f625747SDouglas Raillard
86*4bf3349bSDan Handley-  SPDs for the `OP-TEE Secure OS`_, `NVidia Trusted Little Kernel`_
87*4bf3349bSDan Handley   and `Trusty Secure OS`_.
886f625747SDouglas Raillard
896f625747SDouglas Raillard-  A Trusted Board Boot implementation, conforming to all mandatory TBBR
90*4bf3349bSDan Handley   requirements. This includes image authentication, Firmware Update (or
91*4bf3349bSDan Handley   recovery mode), and packaging of the various firmware images into a
92*4bf3349bSDan Handley   Firmware Image Package (FIP).
936f625747SDouglas Raillard
94*4bf3349bSDan Handley-  Pre-integration of TBB with the ARM TrustZone CryptoCell product, to take
95*4bf3349bSDan Handley   advantage of its hardware Root of Trust and crypto acceleration services.
96*4bf3349bSDan Handley
97*4bf3349bSDan Handley-  Support for alternative boot flows, for example to support platforms where
98*4bf3349bSDan Handley   the EL3 Runtime Software is loaded using other firmware or a separate
99*4bf3349bSDan Handley   secure system processor.
100*4bf3349bSDan Handley
101*4bf3349bSDan Handley-  Support for the GCC, LLVM and ARM Compiler 6 toolchains.
1026f625747SDouglas Raillard
1036f625747SDouglas RaillardFor a full description of functionality and implementation details, please
1046f625747SDouglas Raillardsee the `Firmware Design`_ and supporting documentation. The `Change Log`_
1056f625747SDouglas Raillardprovides details of changes made since the last release.
1066f625747SDouglas Raillard
1076f625747SDouglas RaillardPlatforms
1086f625747SDouglas Raillard~~~~~~~~~
1096f625747SDouglas Raillard
110*4bf3349bSDan HandleyVarious AArch32 and AArch64 builds of this release has been tested on variants
111*4bf3349bSDan Handleyr0, r1 and r2 of the `Juno ARM Development Platform`_.
1126f625747SDouglas Raillard
113*4bf3349bSDan HandleyVarious AArch64 builds of this release have been tested on the following ARM
114*4bf3349bSDan Handley`FVP`_\ s (64-bit host machine only):
1156f625747SDouglas Raillard
116*4bf3349bSDan HandleyNOTE: Unless otherwise stated, the FVP Version is 11.0, Build 11.0.34.
1176f625747SDouglas Raillard
118*4bf3349bSDan Handley-  ``Foundation_Platform``
119*4bf3349bSDan Handley-  ``FVP_Base_AEMv8A-AEMv8A`` (Version 8.5, Build 0.8.8502)
120*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A35x4``
121*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A53x4``
122*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A57x4-A53x4``
123*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A57x4``
124*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A72x4-A53x4``
125*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A72x4``
126*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A73x4-A53x4``
127*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A73x4``
128*4bf3349bSDan Handley-  ``FVP_CSS_SGM-775`` (Version 11.0, Build 11.0.36)
1296f625747SDouglas Raillard
130*4bf3349bSDan HandleyVarious AArch32 builds of this release has been tested on the following ARM
131*4bf3349bSDan Handley`FVP`_\ s (64-bit host machine only):
132*4bf3349bSDan Handley
133*4bf3349bSDan Handley-  ``FVP_Base_AEMv8A-AEMv8A`` (Version 8.5, Build 0.8.8502)
134*4bf3349bSDan Handley-  ``FVP_Base_Cortex-A32x4``
1356f625747SDouglas Raillard
1366f625747SDouglas RaillardThe Foundation FVP can be downloaded free of charge. The Base FVPs can be
137*4bf3349bSDan Handleylicensed from ARM. See the `ARM FVP website`_.
138*4bf3349bSDan Handley
139*4bf3349bSDan HandleyAll the above platforms have been tested with `Linaro Release 17.04`_.
1406f625747SDouglas Raillard
1416f625747SDouglas RaillardThis release also contains the following platform support:
1426f625747SDouglas Raillard
143*4bf3349bSDan Handley-  HiKey and HiKey960 boards
1446f625747SDouglas Raillard-  MediaTek MT6795 and MT8173 SoCs
145*4bf3349bSDan Handley-  NVidia T132, T186 and T210 SoCs
1466f625747SDouglas Raillard-  QEMU emulator
147*4bf3349bSDan Handley-  RockChip RK3328, RK3368 and RK3399 SoCs
148*4bf3349bSDan Handley-  Socionext UniPhier SoC family
1496f625747SDouglas Raillard-  Xilinx Zynq UltraScale + MPSoC
1506f625747SDouglas Raillard
1516f625747SDouglas RaillardStill to Come
1526f625747SDouglas Raillard~~~~~~~~~~~~~
1536f625747SDouglas Raillard
1546f625747SDouglas Raillard-  More platform support.
1556f625747SDouglas Raillard
1566f625747SDouglas Raillard-  Ongoing support for new architectural features, CPUs and System IP.
1576f625747SDouglas Raillard
158*4bf3349bSDan Handley-  Ongoing support for new `PSCI`_, `SCMI`_ and TBBR features.
1596f625747SDouglas Raillard
1606f625747SDouglas Raillard-  Ongoing security hardening, optimization and quality improvements.
1616f625747SDouglas Raillard
162*4bf3349bSDan HandleyFor a full list of detailed issues in the current code, please see the `Change
163*4bf3349bSDan HandleyLog`_ and the `GitHub issue tracker`_.
1646f625747SDouglas Raillard
1656f625747SDouglas RaillardGetting Started
1666f625747SDouglas Raillard---------------
1676f625747SDouglas Raillard
168*4bf3349bSDan HandleyGet the Trusted Firmware source code from `GitHub`_.
1696f625747SDouglas Raillard
1706f625747SDouglas RaillardSee the `User Guide`_ for instructions on how to install, build and use
1716f625747SDouglas Raillardthe Trusted Firmware with the ARM `FVP`_\ s.
1726f625747SDouglas Raillard
173*4bf3349bSDan HandleySee the `Firmware Design`_ for information on how the Trusted Firmware works.
1746f625747SDouglas Raillard
1756f625747SDouglas RaillardSee the `Porting Guide`_ as well for information about how to use this
1766f625747SDouglas Raillardsoftware on another ARMv8-A platform.
1776f625747SDouglas Raillard
1786f625747SDouglas RaillardSee the `Contributing Guidelines`_ for information on how to contribute to this
1796f625747SDouglas Raillardproject and the `Acknowledgments`_ file for a list of contributors to the
1806f625747SDouglas Raillardproject.
1816f625747SDouglas Raillard
1826f625747SDouglas RaillardFeedback and support
1836f625747SDouglas Raillard~~~~~~~~~~~~~~~~~~~~
1846f625747SDouglas Raillard
185*4bf3349bSDan HandleyARM welcomes any feedback on Trusted Firmware. If you think you have found a
186*4bf3349bSDan Handleysecurity vulnerability, please report this using the process defined in the
187*4bf3349bSDan HandleyTrusted Firmware `Security Centre`_. For all other feedback, please use the
188*4bf3349bSDan Handley`GitHub issue tracker`_.
1896f625747SDouglas Raillard
1906f625747SDouglas RaillardARM licensees may contact ARM directly via their partner managers.
1916f625747SDouglas Raillard
1926f625747SDouglas Raillard--------------
1936f625747SDouglas Raillard
194*4bf3349bSDan Handley*Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.*
1956f625747SDouglas Raillard
1966f625747SDouglas Raillard.. _ARMv8-A: http://www.arm.com/products/processors/armv8-architecture.php
1976f625747SDouglas Raillard.. _Secure Monitor: http://www.arm.com/products/processors/technologies/trustzone/tee-smc.php
198*4bf3349bSDan Handley.. _Power State Coordination Interface (PSCI): PSCI_
199*4bf3349bSDan Handley.. _PSCI: http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf
200*4bf3349bSDan Handley.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf
201*4bf3349bSDan Handley.. _System Control and Management Interface: SCMI_
202*4bf3349bSDan Handley.. _SCMI: http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf
203*4bf3349bSDan Handley.. _Juno ARM Development Platform: http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php
204*4bf3349bSDan Handley.. _ARM FVP website: FVP_
205*4bf3349bSDan Handley.. _FVP: https://developer.arm.com/products/system-design/fixed-virtual-platforms
206*4bf3349bSDan Handley.. _Linaro Release 17.04: https://community.arm.com/dev-platforms/b/documents/posts/linaro-release-notes-deprecated#LinaroRelease17.04
2076f625747SDouglas Raillard.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os
2086f625747SDouglas Raillard.. _NVidia Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary
209*4bf3349bSDan Handley.. _Trusty Secure OS: https://source.android.com/security/trusty
210*4bf3349bSDan Handley.. _GitHub: https://www.github.com/ARM-software/arm-trusted-firmware
211*4bf3349bSDan Handley.. _GitHub issue tracker: https://github.com/ARM-software/tf-issues/issues
212*4bf3349bSDan Handley.. _Security Centre: https://github.com/ARM-software/arm-trusted-firmware/wiki/ARM-Trusted-Firmware-Security-Centre
213*4bf3349bSDan Handley.. _license: ./license.rst
214*4bf3349bSDan Handley.. _Contributing Guidelines: ./contributing.rst
215*4bf3349bSDan Handley.. _Acknowledgments: ./acknowledgements.rst
2166f625747SDouglas Raillard.. _Firmware Design: ./docs/firmware-design.rst
2176f625747SDouglas Raillard.. _Change Log: ./docs/change-log.rst
2186f625747SDouglas Raillard.. _User Guide: ./docs/user-guide.rst
2196f625747SDouglas Raillard.. _Porting Guide: ./docs/porting-guide.rst
220