Trusted Firmware-A Tests - version 2.1
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.
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 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.
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):
The AArch32 build has been tested on the following FVPs:
NOTE: Unless otherwise stated, the model version is version 11.5, build 33.
System Guidance for Infrastructure Fixed Virtual Platforms
The AArch64 build has been tested on the following Fixed Virtual Platforms (FVP):
- 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).
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.