Trusted Firmware-A Tests - version 2.2

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):

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.


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 release makes a wide range of tests available for validating the functionality of TF-A as well as several improvements to test framework and test suite.

Please refer to the change log for more details of the features, known issues and limitations in the current release.


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 FVPs:

  • FVP_Base_Cortex-A32x4
  • FVP_Base_RevC-2xAEMv8A

NOTE: Unless otherwise stated, the model version is version 11.6, build 45.

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


  • For FVP_CSS_SGI-575 and FVP_RD_N1Edge, internal version of the models were used.

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.

Contact us

We welcome any feedback on TF-A Tests. You can use either the issue tracker or our mailing list.

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