aboutsummaryrefslogtreecommitdiff
path: root/readme.rst
blob: 667d64b7286a5c766a01509f83922da55bc9f5a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
Trusted Firmware-A Tests - version 2.0
======================================

The Trusted Firmware-A Tests (TF-A-Tests) is a suite of baremetal tests to
exercise the `Trusted Firmware-A (TF-A)`_ features from the Normal World. It
enables strong TF-A functional testing without dependency on a Rich OS. It
mainly interacts with TF-A through its SMC interface.

It provides a basis for TF-A developers to validate their own platform ports and
add their own test cases.

The following TF-A features are currently tested to some extent (this list is
not exhaustive):

-  `SMC Calling Convention`_
-  `Power State Coordination Interface (PSCI)`_
-  `Software Delegated Exception Interface (SDEI)`_
-  `Performance Measurement Framework (PMF)`_
-  Communication and interaction with the `Test Secure Payload (TSP)`_
-  `Firmware update`_ (or recovery mode)
-  `EL3 payload`_ boot flow
-  `Secure partition`_ support

These tests are not a compliance test suite for the Arm interface standards used
in TF-A (such as PSCI).

They do not cover 100% of the TF-A code. The fact that all tests pass does not
mean that TF-A is free of bugs.

They are not reference code. They should not be considered as the official way
to test hardware/firmware features. Instead, they are provided as example code
to experiment with and improve on.

License
-------

The software is provided under a BSD-3-Clause `license`_. Contributions to this
project are accepted under the same license with developer sign-off as
described in the `Contributing Guidelines`_.

This project contains code from other projects as listed below. The original
license text is included in those source files.

-  The libc source code is derived from `FreeBSD`_ and `SCC`_. FreeBSD uses
   various BSD licenses, including BSD-3-Clause and BSD-2-Clause. The SCC code
   is used under the BSD-3-Clause license with the author's permission.

-  The `LLVM compiler-rt`_ source code is disjunctively dual licensed
   (NCSA OR MIT). It is used by this project under the terms of the NCSA
   license (also known as the University of Illinois/NCSA Open Source License),
   which is a permissive license compatible with BSD-3-Clause. Any
   contributions to this code must be made under the terms of both licenses.

This release
------------

This is the first public release of the TF-A Tests code. It provides a starting
point for exercising some of the TF-A features on the Arm FVP and Juno
platforms, porting the tests to new platforms, enhancing existing tests or
implementing new ones.

Please note that this code is not mature yet and suffers from some stability
issues. Refer to the known issues in the `change log`_ for more details.


Platforms
`````````

Juno Arm Development Platform
'''''''''''''''''''''''''''''

The AArch64 build of this release has been tested on variants r0, r1 and r2 of
the `Juno Arm Development Platform`_. The AArch32 build has only been tested on
variant r0.

Armv8 Architecture Fixed Virtual Platforms
''''''''''''''''''''''''''''''''''''''''''

The AArch64 build has been tested on the following Armv8 Architecture Fixed
Virtual Platforms (`FVP`_):

-  ``FVP_Base_AEMv8A-AEMv8A``
-  ``FVP_Base_Cortex-A35x4``
-  ``FVP_Base_Cortex-A57x4-A53x4``
-  ``FVP_Base_RevC-2xAEMv8A``
-  ``Foundation_Platform``

The AArch32 build has been tested on the following `FVP`_\ s:

-  ``FVP_Base_Cortex-A32x4``
-  ``FVP_Base_RevC-2xAEMv8A``

NOTE: Unless otherwise stated, the model version is version 11.4, build 37.

System Guidance for Infrastructure Fixed Virtual Platforms
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

The AArch64 build has been tested on the following Fixed Virtual Platforms
(`FVP`_):
-  ``FVP_CSS_SGI-575``
-  ``FVP_RD_N1Edge``

NOTE:
-  For ``FVP_CSS_SGI-575``, the model version is 11.4, build 40
-  For ``FVP_RD_N1Edge``, the model version is 11.6, build 29

Still to come
`````````````

-  More tests.
-  Support for new platforms.
-  Design improvements.
-  Stability improvements.
-  Enhance test framework to make it easier to implement tests.
-  Fixing known issues (see the `change log`_ for more details).


Getting started
---------------

Get the TF-A Tests source code from `trustedfirmware.org`_.

See the `User Guide`_ for instructions on how to install, build and use the TF-A
Tests.

See the `Design Guide`_ for information on how the TF-A Tests internally work.

See the `Porting Guide`_ for information about how to use this software on
another Armv8-A platform.

See the `Contributing Guidelines`_ for information on how to contribute to this
project.


IRC channel
-----------

Development discussion takes place on the same channel as for TF-A, i.e. the
``#trusted-firmware-a`` channel on the Freenode IRC network. This is not an
official support channel.  If you have an issue to raise, please use the issues
tracker <TODO: insert link>.

--------------

*Copyright (c) 2018-2019, Arm Limited. All rights reserved.*

.. _Contributing Guidelines: contributing.rst
.. _license: license.rst
.. _change log: docs/change-log.rst
.. _Design Guide: docs/design.rst
.. _Porting Guide: docs/porting-guide.rst
.. _User Guide: docs/user-guide.rst

.. _FVP: https://developer.arm.com/products/system-design/fixed-virtual-platforms
.. _Juno Arm Development Platform: https://developer.arm.com/products/system-design/development-boards/juno-development-board

.. _FreeBSD: http://www.freebsd.org
.. _SCC: http://www.simple-cc.org/
.. _LLVM compiler-rt: https://compiler-rt.llvm.org/

.. _Power State Coordination Interface (PSCI): PSCI_
.. _PSCI: http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf
.. _Software Delegated Exception Interface (SDEI): SDEI_
.. _SDEI: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf
.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf

.. _trustedfirmware.org: https://git.trustedfirmware.org/TF-A/tf-a-tests.git

.. _Trusted Firmware-A (TF-A): TF-A_
.. _TF-A: https://www.github.com/ARM-software/arm-trusted-firmware
.. _Test Secure Payload (TSP): TSP_
.. _TSP: https://github.com/ARM-software/arm-trusted-firmware/tree/master/bl32/tsp
.. _Performance Measurement Framework (PMF): PMF_
.. _PMF: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-design.rst#performance-measurement-framework
.. _Firmware update: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-update.rst
.. _EL3 payload: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#el3-payloads-alternative-boot-flow
.. _Secure partition: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/secure-partition-manager-design.rst