Trusted side of the TEE
.github | 7 years ago | ||
core | 5 years ago | ||
documentation | 6 years ago | ||
keys | 9 years ago | ||
lib | 5 years ago | ||
mk | 6 years ago | ||
scripts | 6 years ago | ||
ta | 6 years ago | ||
.gitignore | 10 years ago | ||
.shippable.yml | 6 years ago | ||
.travis.yml | 6 years ago | ||
CHANGELOG.md | 6 years ago | ||
LICENSE | 9 years ago | ||
MAINTAINERS | 6 years ago | ||
Makefile | 6 years ago | ||
Notice.md | 6 years ago | ||
README.md | 6 years ago | ||
typedefs.checkpatch | 7 years ago |
The optee_os
git repository contains the source code of a Trusted Execution Environment (TEE) as companion to a non-secure OS on ARM® Cortex-A cores using the TrustZone® technology. This component meets the TEE System Architecture specifications and provides the TEE Internal Core API v1.1 as defined by the GlobalPlatform Device technology TEE specifications 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 optee_os/lib/libutils
directory which are distributed under the BSD 3-Clause or public domain licenses.
Several platforms are supported. In order to manage slight differences between platforms, a PLATFORM_FLAVOR
flag has been introduced. The PLATFORM
and 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 PLATFORM_FLAVOR
directly, 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 for contact details for various platforms.
The Maintained? column shows:
Platform | Composite PLATFORM flag | Publicly available? | Maintained? |
---|---|---|---|
ARM Juno Board | PLATFORM=vexpress-juno |
Yes | |
Atmel ATSAMA5D2-XULT Board | PLATFORM=sam |
Yes | |
DeveloperBox (Socionext Synquacer SC2A11) | PLATFORM=synquacer |
Yes | |
FSL ls1021a | PLATFORM=ls-ls1021atwr |
Yes | |
NXP ls1043ardb | PLATFORM=ls-ls1043ardb |
Yes | |
NXP ls1046ardb | PLATFORM=ls-ls1046ardb |
Yes | |
NXP ls1012ardb | PLATFORM=ls-ls1012ardb |
Yes | |
NXP ls1088ardb | PLATFORM=ls-ls1088ardb |
Yes | |
NXP ls2088ardb | PLATFORM=ls-ls2088ardb |
Yes | |
NXP ls1012afrwy | PLATFORM=ls-ls1012afrwy |
Yes | |
FSL i.MX6 Quad SABRE Lite Board | PLATFORM=imx-mx6qsabrelite |
Yes | |
FSL i.MX6 Quad SABRE SD Board | PLATFORM=imx-mx6qsabresd |
Yes | |
SolidRun i.MX6 Quad Hummingboard Edge | PLATFORM=imx-mx6qhmbedge |
Yes | |
SolidRun i.MX6 Dual Hummingboard Edge | PLATFORM=imx-mx6dhmbedge |
Yes | |
SolidRun i.MX6 Dual Lite Hummingboard Edge | PLATFORM=imx-mx6dlhmbedge |
Yes | |
SolidRun i.MX6 Solo Hummingboard Edge | PLATFORM=imx-mx6shmbedge |
Yes | |
FSL i.MX6 UltraLite EVK Board | PLATFORM=imx-mx6ulevk |
Yes | |
NXP i.MX7Dual SabreSD Board | PLATFORM=imx-mx7dsabresd |
Yes | |
NXP i.MX7Solo WaRP7 Board | PLATFORM=imx-mx7swarp7 |
Yes | |
ARM Foundation FVP | PLATFORM=vexpress-fvp |
Yes | |
HiSilicon D02 | PLATFORM=d02 |
No | |
HiKey Board (HiSilicon Kirin 620) | PLATFORM=hikey or PLATFORM=hikey-hikey |
Yes | |
HiKey960 Board (HiSilicon Kirin 960) | PLATFORM=hikey-hikey960 |
Yes | |
Marvell ARMADA 7K Family | PLATFORM=marvell-armada7k8k |
Yes | |
Marvell ARMADA 8K Family | PLATFORM=marvell-armada7k8k |
Yes | |
Marvell ARMADA 3700 Family | PLATFORM=marvell-armada3700 |
Yes | |
MediaTek MT8173 EVB Board | PLATFORM=mediatek-mt8173 |
No | v3.0.0 |
Poplar Board (HiSilicon Hi3798C V200) | PLATFORM=poplar |
Yes | |
QEMU | PLATFORM=vexpress-qemu_virt |
Yes | |
QEMUv8 | PLATFORM=vexpress-qemu_armv8a |
Yes | |
Raspberry Pi 3 | PLATFORM=rpi3 |
Yes | |
Renesas RCAR | PLATFORM=rcar |
No | |
Rockchip RK322X | PLATFORM=rockchip-rk322x |
No | |
STMicroelectronics b2260 - h410 (96boards fmt) | PLATFORM=stm-b2260 |
No | |
STMicroelectronics b2120 - h310 / h410 | PLATFORM=stm-cannes |
No | |
STMicroelectronics stm32mp1 | PLATFORM=stm32mp1 |
No | |
Allwinner A64 Pine64 Board | PLATFORM=sunxi-sun50i_a64 |
Yes | |
Texas Instruments AM65x | PLATFORM=k3-am65x |
Yes | |
Texas Instruments DRA7xx | PLATFORM=ti-dra7xx |
Yes | |
Texas Instruments AM57xx | PLATFORM=ti-am57xx |
Yes | |
Texas Instruments AM43xx | PLATFORM=ti-am43xx |
Yes | |
Xilinx Zynq 7000 ZC702 | PLATFORM=zynq7k-zc702 |
Yes | v2.3.0 |
Xilinx Zynq UltraScale+ MPSOC | PLATFORM=zynqmp-zcu102 |
Yes | v2.4.0 |
Spreadtrum SC9860 | PLATFORM=sprd-sc9860 |
No | v2.1.0 |
Please see build for instructions how to run OP-TEE on various devices.
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:
Regarding the checkpatch tool, it is not included directly into this project. Please use checkpatch.pl from the Linux kernel git in combination with the local [checkpatch script].