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 |  | 55| [Atmel ATSAMA5D2-XULT Board](http://www.atmel.com/tools/atsama5d2-xult.aspx)|`PLATFORM=sam`| Yes |  | 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 |  | 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 |  | 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 |  | 59| [FSL i.MX6 Quad SABRE Lite Board](https://boundarydevices.com/product/sabre-lite-imx6-sbc/) |`PLATFORM=imx-mx6qsabrelite`| Yes |  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 |  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 |  | 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 |  | 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 |  | 64| [ARM Foundation FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms) |`PLATFORM=vexpress-fvp`| Yes |  | 65| [HiSilicon D02](http://open-estuary.org/d02-2)|`PLATFORM=d02`| No |  | 66| [HiKey Board (HiSilicon Kirin 620)](https://www.96boards.org/product/hikey)|`PLATFORM=hikey` or `PLATFORM=hikey-hikey`| Yes |  | 67| [HiKey960 Board (HiSilicon Kirin 960)](https://www.96boards.org/product/hikey960)|`PLATFORM=hikey-hikey960`| Yes |  | 68| [Marvell ARMADA 7K Family](http://www.marvell.com/embedded-processors/armada-70xx/)|`PLATFORM=marvell-armada7k8k`| Yes |  | 69| [Marvell ARMADA 8K Family](http://www.marvell.com/embedded-processors/armada-80xx/)|`PLATFORM=marvell-armada7k8k`| Yes |  | 70| [Marvell ARMADA 3700 Family](http://www.marvell.com/embedded-processors/armada-3700/)|`PLATFORM=marvell-armada3700`| Yes |  | 71| [MediaTek MT8173 EVB Board](https://www.mediatek.com/products/tablets/mt8173)|`PLATFORM=mediatek-mt8173`| No |  | 72| [Poplar Board (HiSilicon Hi3798C V200)](https://www.96boards.org/product/poplar)|`PLATFORM=poplar`| Yes |  | 73| [QEMU](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_virt`| Yes |  | 74| [QEMUv8](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_armv8a`| Yes |  | 75| [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b) |`PLATFORM=rpi3`| Yes |  | 76| [Renesas RCAR](https://www.renesas.com/en-sg/solutions/automotive/products/rcar-h3.html)|`PLATFORM=rcar`| No |  | 77| [Rockchip RK322X](http://www.rock-chips.com/a/en/products/RK32_Series/2016/1109/799.html) |`PLATFORM=rockchip-rk322x`| No |  | 78| [STMicroelectronics b2260 - h410 (96boards fmt)](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-b2260`| No |  | 79| [STMicroelectronics b2120 - h310 / h410](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-cannes`| No |  | 80| [Texas Instruments DRA7xx](http://www.ti.com/processors/automotive-processors/drax-infotainment-socs/overview.html)|`PLATFORM=ti-dra7xx`| Yes |  | 81| [Texas Instruments AM57xx](http://www.ti.com/processors/sitara/arm-cortex-a15/am57x/overview.html)|`PLATFORM=ti-am57xx`| Yes |  | 82| [Texas Instruments AM43xx](http://www.ti.com/processors/sitara/arm-cortex-a9/am438x/overview.html)|`PLATFORM=ti-am43xx`| Yes |  | 83| [Xilinx Zynq 7000 ZC702](http://www.xilinx.com/products/boards-and-kits/ek-z7-zc702-g.html)|`PLATFORM=zynq7k-zc702`| Yes |  v2.3.0 | 84| [Xilinx Zynq UltraScale+ MPSOC](http://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html)|`PLATFORM=zynqmp-zcu102`| Yes |  v2.4.0 | 85| [Spreadtrum SC9860](http://www.spreadtrum.com/en/SC9860GV.html)|`PLATFORM=sprd-sc9860`| No |  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