OP-TEE Trusted OS
optee_os git, contains the source code for the TEE in Linux using the
ARM® TrustZone® technology. This component meets the GlobalPlatform
TEE System Architecture specification. It also provides the TEE Internal core API
v1.1 as defined by the GlobalPlatform TEE Standard for the development of
Trusted Applications. For a general overview of OP-TEE and to find out how to
contribute, please see the Notice.md file.
The Trusted OS is accessible from the Rich OS (Linux) using the GlobalPlatform TEE Client API Specification v1.0, which also is used to trigger secure execution of applications within the TEE.
The software is distributed mostly under the
BSD 2-Clause open source
license, apart from some files in the
which are distributed under the
BSD 3-Clause or public domain
3. Platforms supported
Several platforms are supported. In order to manage slight differences
between platforms, a
PLATFORM_FLAVOR flag has been introduced.
PLATFORM_FLAVOR flags define the whole configuration
for a chip the where the Trusted OS runs. Note that there is also a
composite form which makes it possible to append
by adding a dash in-between the names. The composite form is shown below
for the different boards. For more specific details about build flags etc,
please read the file build_system.md. Some
platforms have different sub-maintainers, please refer to the file
MAINTAINERS.md for contact details for various platforms.
|Platform||Composite PLATFORM flag||Publicly available?|
|Allwinner A80 Board||
|ARM Juno Board||
|FSL i.MX6 Quad SABRE Lite Board||
|FSL i.MX6 Quad SABRE SD Board||
|FSL i.MX6 UltraLite EVK Board||
|ARM Foundation FVP||
|HiKey Board (HiSilicon Kirin 620)||
|MediaTek MT8173 EVB Board||
|Raspberry Pi 3||
|STMicroelectronics b2260 - h410 (96boards fmt)||
|STMicroelectronics b2120 - h310 / h410||
|Texas Instruments DRA7xx||
|Texas Instruments AM43xx||
|Xilinx Zynq 7000 ZC702||
|Xilinx Zynq UltraScale+ MPSOC||
4. Get and build OP-TEE software
Please see build for instructions how to run OP-TEE on various devices.
5. Coding standards
In this project we are trying to adhere to the same coding convention as used in the Linux kernel (see CodingStyle). We achieve this by running checkpatch from Linux kernel. However there are a few exceptions that we had to make since the code also follows GlobalPlatform standards. The exceptions are as follows:
- CamelCase for GlobalPlatform types are allowed.
- And we also exclude checking third party code that we might use in this project, such as LibTomCrypt, MPA, newlib (not in this particular git, but those are also part of the complete TEE solution). The reason for excluding and not fixing third party code is because we would probably deviate too much from upstream and therefore it would be hard to rebase against those projects later on (and we don't expect that it is easy to convince other software projects to change coding style).
Since checkpatch is licensed under the terms of GNU GPL License Version 2, we cannot include this script directly into this project. Please use checkpatch directly from the Linux kernel git in combination with the local [checkpatch script].