xref: /optee_os/README.md (revision 56fbf082e5b351e2f42f97eac5951d16b8364ecf)
1# OP-TEE Trusted OS
2## Contents
31. [Introduction](#1-introduction)
42. [License](#2-license)
53. [Platforms supported](#3-platforms-supported)
64. [Get and build OP-TEE software](#4-get-and-build-op-tee-software)
75. [Coding standards](#5-coding-standards)
8    5. [checkpatch](#51-checkpatch)
9
10## 1. Introduction
11The `optee_os git`, contains the source code for the TEE in Linux using the
12ARM® TrustZone® technology. This component meets the GlobalPlatform
13TEE System Architecture specification. It also provides the TEE Internal core API
14v1.1 as defined by the GlobalPlatform TEE Standard for the development of
15Trusted Applications. For a general overview of OP-TEE and to find out how to
16contribute, please see the [Notice.md](Notice.md) file.
17
18The Trusted OS is accessible from the Rich OS (Linux) using the
19[GlobalPlatform TEE Client API Specification v1.0](http://www.globalplatform.org/specificationsdevice.asp),
20which also is used to trigger secure execution of applications within the TEE.
21
22---
23## 2. License
24The software is distributed mostly under the
25[BSD 2-Clause](http://opensource.org/licenses/BSD-2-Clause) open source
26license, apart from some files in the `optee_os/lib/libutils` directory
27which are distributed under the
28[BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) or public domain
29licenses.
30
31---
32## 3. Platforms supported
33Several platforms are supported. In order to manage slight differences
34between platforms, a `PLATFORM_FLAVOR` flag has been introduced.
35The `PLATFORM` and `PLATFORM_FLAVOR` flags define the whole configuration
36for a chip the where the Trusted OS runs. Note that there is also a
37composite form which makes it possible to append `PLATFORM_FLAVOR` directly,
38by adding a dash in-between the names. The composite form is shown below
39for the different boards. For more specific details about build flags etc,
40please read the file [build_system.md](documentation/build_system.md). Some
41platforms have different sub-maintainers, please refer to the file
42[MAINTAINERS.md](MAINTAINERS.md) for contact details for various platforms.
43
44The `Maintained` column shows:
45
46- A green image if the platform is actively maintained: either tested successfully
47  with the latest release (N), or is a newly supported platform.
48- An orange image if the platform was last tested successfully with release N-1.
49- A red image if the last successful test report is older.
50
51<!-- Please keep this list sorted in alphabetic order -->
52| Platform | Composite PLATFORM flag | Publicly available? | Maintained? |
53|----------|-------------------------|---------------------|-------------|
54| [ARM Juno Board](http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php) |`PLATFORM=vexpress-juno`| Yes | ![Actively Maintained](documentation/images/green.svg) |
55| [Atmel ATSAMA5D2-XULT Board](http://www.atmel.com/tools/atsama5d2-xult.aspx)|`PLATFORM=sam`| Yes | ![Actively Maintained](documentation/images/green.svg) |
56| [FSL ls1021a](http://www.freescale.com/tools/embedded-software-and-tools/hardware-development-tools/tower-development-boards/mcu-and-processor-modules/powerquicc-and-qoriq-modules/qoriq-ls1021a-tower-system-module:TWR-LS1021A?lang_cd=en)|`PLATFORM=ls-ls1021atwr`| Yes | ![Actively maintained](documentation/images/green.svg) |
57| [NXP ls1043ardb](http://www.nxp.com/products/microcontrollers-and-processors/power-architecture-processors/qoriq-platforms/developer-resources/qoriq-ls1043a-reference-design-board:LS1043A-RDB)|`PLATFORM=ls-ls1043ardb`| Yes | ![Actively Maintained](documentation/images/green.svg) |
58| [NXP ls1046ardb](http://www.nxp.com/products/microcontrollers-and-processors/power-architecture-processors/qoriq-platforms/developer-resources/qoriq-ls1046a-reference-design-board:LS1046A-RDB)|`PLATFORM=ls-ls1046ardb`| Yes | ![Actively Maintained](documentation/images/green.svg) |
59| [FSL i.MX6 Quad SABRE Lite Board](https://boundarydevices.com/product/sabre-lite-imx6-sbc/) |`PLATFORM=imx-mx6qsabrelite`| Yes | ![Not maintained](documentation/images/red.svg) v2.2.0 |
60| [FSL i.MX6 Quad SABRE SD Board](http://www.nxp.com/products/software-and-tools/hardware-development-tools/sabre-development-system/sabre-board-for-smart-devices-based-on-the-i.mx-6quad-applications-processors:RD-IMX6Q-SABRE) |`PLATFORM=imx-mx6qsabresd`| Yes | ![Not maintained](documentation/images/red.svg) v2.2.0 |
61| [FSL i.MX6 UltraLite EVK Board](http://www.freescale.com/products/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx-6-processors/i.mx6qp/i.mx6ultralite-evaluation-kit:MCIMX6UL-EVK) |`PLATFORM=imx-mx6ulevk`| Yes | ![Actively Maintained](documentation/images/green.svg) |
62| [NXP i.MX7Dual SabreSD Board](http://www.nxp.com/products/software-and-tools/hardware-development-tools/sabre-development-system/sabre-board-for-smart-devices-based-on-the-i.mx-7dual-applications-processors:MCIMX7SABRE) |`PLATFORM=imx-mx7dsabresd`| Yes | ![Actively Maintained](documentation/images/green.svg) |
63| [NXP i.MX7Solo WaRP7 Board](http://www.nxp.com/products/developer-resources/reference-designs/warp7-next-generation-iot-and-wearable-development-platform:WARP7) |`PLATFORM=imx-mx7warp7`| Yes | ![Actively Maintained](documentation/images/green.svg) |
64| [ARM Foundation FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms) |`PLATFORM=vexpress-fvp`| Yes | ![Actively Maintained](documentation/images/green.svg) |
65| [HiSilicon D02](http://open-estuary.org/d02-2)|`PLATFORM=d02`| No | ![Actively Maintained](documentation/images/green.svg) |
66| [HiKey Board (HiSilicon Kirin 620)](https://www.96boards.org/product/hikey)|`PLATFORM=hikey` or `PLATFORM=hikey-hikey`| Yes | ![Actively Maintained](documentation/images/green.svg) |
67| [HiKey960 Board (HiSilicon Kirin 960)](https://www.96boards.org/product/hikey960)|`PLATFORM=hikey-hikey960`| Yes | ![Actively Maintained](documentation/images/green.svg) |
68| [Marvell ARMADA 7K Family](http://www.marvell.com/embedded-processors/armada-70xx/)|`PLATFORM=marvell-armada7k8k`| Yes | ![Actively Maintained](documentation/images/green.svg) |
69| [Marvell ARMADA 8K Family](http://www.marvell.com/embedded-processors/armada-80xx/)|`PLATFORM=marvell-armada7k8k`| Yes | ![Actively Maintained](documentation/images/green.svg) |
70| [Marvell ARMADA 3700 Family](http://www.marvell.com/embedded-processors/armada-3700/)|`PLATFORM=marvell-armada3700`| Yes | ![Actively Maintained](documentation/images/green.svg) |
71| [MediaTek MT8173 EVB Board](https://www.mediatek.com/products/tablets/mt8173)|`PLATFORM=mediatek-mt8173`| No | ![Actively Maintained](documentation/images/green.svg) |
72| [Poplar Board (HiSilicon Hi3798C V200)](https://www.96boards.org/product/poplar)|`PLATFORM=poplar`| Yes | ![Actively Maintained](documentation/images/green.svg) |
73| [QEMU](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_virt`| Yes | ![Actively Maintained](documentation/images/green.svg) |
74| [QEMUv8](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_armv8a`| Yes | ![Actively Maintained](documentation/images/green.svg) |
75| [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b) |`PLATFORM=rpi3`| Yes | ![Actively maintained](documentation/images/green.svg) |
76| [Renesas RCAR](https://www.renesas.com/en-sg/solutions/automotive/products/rcar-h3.html)|`PLATFORM=rcar`| No | ![Actively maintained](documentation/images/green.svg) |
77| [Rockchip RK322X](http://www.rock-chips.com/a/en/products/RK32_Series/2016/1109/799.html) |`PLATFORM=rockchip-rk322x`| No | ![Actively maintained](documentation/images/green.svg) |
78| [STMicroelectronics b2260 - h410 (96boards fmt)](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-b2260`| No | ![Actively maintained](documentation/images/green.svg) |
79| [STMicroelectronics b2120 - h310 / h410](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-cannes`| No | ![Actively maintained](documentation/images/green.svg) |
80| [Texas Instruments DRA7xx](http://www.ti.com/processors/automotive-processors/drax-infotainment-socs/overview.html)|`PLATFORM=ti-dra7xx`| Yes | ![Actively maintained](documentation/images/green.svg) |
81| [Texas Instruments AM57xx](http://www.ti.com/processors/sitara/arm-cortex-a15/am57x/overview.html)|`PLATFORM=ti-am57xx`| Yes | ![Actively maintained](documentation/images/green.svg) |
82| [Texas Instruments AM43xx](http://www.ti.com/processors/sitara/arm-cortex-a9/am438x/overview.html)|`PLATFORM=ti-am43xx`| Yes | ![Actively maintained](documentation/images/green.svg) |
83| [Xilinx Zynq 7000 ZC702](http://www.xilinx.com/products/boards-and-kits/ek-z7-zc702-g.html)|`PLATFORM=zynq7k-zc702`| Yes | ![Not maintained](documentation/images/red.svg) v2.3.0 |
84| [Xilinx Zynq UltraScale+ MPSOC](http://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html)|`PLATFORM=zynqmp-zcu102`| Yes | ![Not maintained](documentation/images/red.svg) v2.4.0 |
85| [Spreadtrum SC9860](http://www.spreadtrum.com/en/SC9860GV.html)|`PLATFORM=sprd-sc9860`| No | ![Not maintained](documentation/images/red.svg) v2.1.0 |
86
87---
88## 4. Get and build OP-TEE software
89Please see [build] for instructions how to run OP-TEE on various devices.
90
91---
92## 5. Coding standards
93In this project we are trying to adhere to the same coding convention as used in
94the Linux kernel (see
95[CodingStyle](https://www.kernel.org/doc/Documentation/process/coding-style.rst)). We achieve this by running
96[checkpatch](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/checkpatch.pl)
97from Linux kernel. However there are a few exceptions that we had to make since
98the code also follows GlobalPlatform standards. The exceptions are as follows:
99
100- CamelCase for GlobalPlatform types are allowed.
101- And we also exclude checking third party code that we might use in this
102  project, such as LibTomCrypt, MPA, newlib (not in this particular git, but
103  those are also part of the complete TEE solution). The reason for excluding
104  and not fixing third party code is because we would probably deviate too much
105  from upstream and therefore it would be hard to rebase against those projects
106  later on (and we don't expect that it is easy to convince other software
107  projects to change coding style).
108
109### 5.1 checkpatch
110Since checkpatch is licensed under the terms of GNU GPL License Version 2, we
111cannot include this script directly into this project. Please use checkpatch
112directly from the Linux kernel git in combination with the local [checkpatch
113script].
114
115[build]: https://github.com/OP-TEE/build
116[checkpatch script]: scripts/checkpatch.sh
117