blob: 7c04013ace18e4d12a6c82e3bdf237112009cf6c [file] [log] [blame]
Sandrine Bailleux931e0572019-03-21 09:32:28 +01001Trusted Firmware-A Tests - version 2.1
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002======================================
3
4The Trusted Firmware-A Tests (TF-A-Tests) is a suite of baremetal tests to
5exercise the `Trusted Firmware-A (TF-A)`_ features from the Normal World. It
6enables strong TF-A functional testing without dependency on a Rich OS. It
7mainly interacts with TF-A through its SMC interface.
8
9It provides a basis for TF-A developers to validate their own platform ports and
10add their own test cases.
11
12The following TF-A features are currently tested to some extent (this list is
13not exhaustive):
14
15- `SMC Calling Convention`_
16- `Power State Coordination Interface (PSCI)`_
17- `Software Delegated Exception Interface (SDEI)`_
18- `Performance Measurement Framework (PMF)`_
19- Communication and interaction with the `Test Secure Payload (TSP)`_
20- `Firmware update`_ (or recovery mode)
21- `EL3 payload`_ boot flow
22- `Secure partition`_ support
23
24These tests are not a compliance test suite for the Arm interface standards used
25in TF-A (such as PSCI).
26
27They do not cover 100% of the TF-A code. The fact that all tests pass does not
28mean that TF-A is free of bugs.
29
30They are not reference code. They should not be considered as the official way
31to test hardware/firmware features. Instead, they are provided as example code
32to experiment with and improve on.
33
34License
35-------
36
37The software is provided under a BSD-3-Clause `license`_. Contributions to this
38project are accepted under the same license with developer sign-off as
39described in the `Contributing Guidelines`_.
40
41This project contains code from other projects as listed below. The original
42license text is included in those source files.
43
Ambroise Vincentd6e806d2019-02-11 14:34:26 +000044- The libc source code is derived from `FreeBSD`_ and `SCC`_. FreeBSD uses
45 various BSD licenses, including BSD-3-Clause and BSD-2-Clause. The SCC code
46 is used under the BSD-3-Clause license with the author's permission.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020047
48- The `LLVM compiler-rt`_ source code is disjunctively dual licensed
49 (NCSA OR MIT). It is used by this project under the terms of the NCSA
50 license (also known as the University of Illinois/NCSA Open Source License),
51 which is a permissive license compatible with BSD-3-Clause. Any
52 contributions to this code must be made under the terms of both licenses.
53
54This release
55------------
56
Sandrine Bailleux931e0572019-03-21 09:32:28 +010057This release provides a starting point for exercising some of the TF-A features
58on the Arm FVP and Juno platforms, porting the tests to new platforms, enhancing
59existing tests or implementing new ones.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020060
61Please note that this code is not mature yet and suffers from some stability
62issues. Refer to the known issues in the `change log`_ for more details.
63
64
65Platforms
66`````````
67
68Juno Arm Development Platform
69'''''''''''''''''''''''''''''
70
71The AArch64 build of this release has been tested on variants r0, r1 and r2 of
72the `Juno Arm Development Platform`_. The AArch32 build has only been tested on
73variant r0.
74
Sandrine Bailleux1b97b112018-12-11 10:18:06 +010075Armv8 Architecture Fixed Virtual Platforms
76''''''''''''''''''''''''''''''''''''''''''
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020077
Sandrine Bailleux1b97b112018-12-11 10:18:06 +010078The AArch64 build has been tested on the following Armv8 Architecture Fixed
79Virtual Platforms (`FVP`_):
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020080
81- ``FVP_Base_AEMv8A-AEMv8A``
82- ``FVP_Base_Cortex-A35x4``
83- ``FVP_Base_Cortex-A57x4-A53x4``
84- ``FVP_Base_RevC-2xAEMv8A``
85- ``Foundation_Platform``
86
87The AArch32 build has been tested on the following `FVP`_\ s:
88
89- ``FVP_Base_Cortex-A32x4``
90- ``FVP_Base_RevC-2xAEMv8A``
91
Sandrine Bailleux931e0572019-03-21 09:32:28 +010092NOTE: Unless otherwise stated, the model version is version 11.5, build 33.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020093
Chandni Cherukuric73c2912018-12-05 14:00:56 +053094System Guidance for Infrastructure Fixed Virtual Platforms
95''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
96
Chandni Cherukuri673285d2019-01-08 11:47:17 +053097The AArch64 build has been tested on the following Fixed Virtual Platforms
Chandni Cherukuric73c2912018-12-05 14:00:56 +053098(`FVP`_):
Sandrine Bailleux931e0572019-03-21 09:32:28 +010099
Chandni Cherukuric73c2912018-12-05 14:00:56 +0530100- ``FVP_CSS_SGI-575``
Chandni Cherukuri673285d2019-01-08 11:47:17 +0530101- ``FVP_RD_N1Edge``
Chandni Cherukuric73c2912018-12-05 14:00:56 +0530102
Chandni Cherukuri673285d2019-01-08 11:47:17 +0530103NOTE:
Sandrine Bailleux931e0572019-03-21 09:32:28 +0100104
Chandni Cherukuri673285d2019-01-08 11:47:17 +0530105- For ``FVP_CSS_SGI-575``, the model version is 11.4, build 40
106- For ``FVP_RD_N1Edge``, the model version is 11.6, build 29
Chandni Cherukuric73c2912018-12-05 14:00:56 +0530107
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200108Still to come
109`````````````
110
111- More tests.
112- Support for new platforms.
113- Design improvements.
114- Stability improvements.
115- Enhance test framework to make it easier to implement tests.
116- Fixing known issues (see the `change log`_ for more details).
117
118
119Getting started
120---------------
121
122Get the TF-A Tests source code from `trustedfirmware.org`_.
123
124See the `User Guide`_ for instructions on how to install, build and use the TF-A
125Tests.
126
127See the `Design Guide`_ for information on how the TF-A Tests internally work.
128
129See the `Porting Guide`_ for information about how to use this software on
130another Armv8-A platform.
131
132See the `Contributing Guidelines`_ for information on how to contribute to this
133project.
134
135
136IRC channel
137-----------
138
139Development discussion takes place on the same channel as for TF-A, i.e. the
140``#trusted-firmware-a`` channel on the Freenode IRC network. This is not an
Sandrine Bailleuxb1e04de2019-03-21 09:35:01 +0100141official support channel. If you have an issue to raise, please use the
142`issues tracker`_.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200143
144--------------
145
Ambroise Vincentd6e806d2019-02-11 14:34:26 +0000146*Copyright (c) 2018-2019, Arm Limited. All rights reserved.*
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200147
148.. _Contributing Guidelines: contributing.rst
149.. _license: license.rst
150.. _change log: docs/change-log.rst
151.. _Design Guide: docs/design.rst
152.. _Porting Guide: docs/porting-guide.rst
153.. _User Guide: docs/user-guide.rst
154
155.. _FVP: https://developer.arm.com/products/system-design/fixed-virtual-platforms
156.. _Juno Arm Development Platform: https://developer.arm.com/products/system-design/development-boards/juno-development-board
157
158.. _FreeBSD: http://www.freebsd.org
Ambroise Vincentd6e806d2019-02-11 14:34:26 +0000159.. _SCC: http://www.simple-cc.org/
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200160.. _LLVM compiler-rt: https://compiler-rt.llvm.org/
161
162.. _Power State Coordination Interface (PSCI): PSCI_
163.. _PSCI: http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf
164.. _Software Delegated Exception Interface (SDEI): SDEI_
165.. _SDEI: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf
166.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf
167
Sandrine Bailleux2d0136e2018-11-05 14:21:27 +0100168.. _trustedfirmware.org: https://git.trustedfirmware.org/TF-A/tf-a-tests.git
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200169
170.. _Trusted Firmware-A (TF-A): TF-A_
171.. _TF-A: https://www.github.com/ARM-software/arm-trusted-firmware
172.. _Test Secure Payload (TSP): TSP_
173.. _TSP: https://github.com/ARM-software/arm-trusted-firmware/tree/master/bl32/tsp
174.. _Performance Measurement Framework (PMF): PMF_
175.. _PMF: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-design.rst#performance-measurement-framework
176.. _Firmware update: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-update.rst
177.. _EL3 payload: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#el3-payloads-alternative-boot-flow
178.. _Secure partition: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/secure-partition-manager-design.rst
Sandrine Bailleuxb1e04de2019-03-21 09:35:01 +0100179
180.. _issues tracker: https://developer.trustedfirmware.org/project/board/9/