Disable building repository with ASan extra packs.
[platform/core/security/tef-optee_os.git] / README.md
1 # OP-TEE Trusted OS
2 ## Contents
3 1. [Introduction](#1-introduction)
4 2. [License](#2-license)
5 3. [Platforms supported](#3-platforms-supported)
6 4. [Get and build OP-TEE software](#4-get-and-build-op-tee-software)
7 5. [Coding standards](#5-coding-standards)
8     5. [checkpatch](#51-checkpatch)
9
10 ## 1. Introduction
11 The `optee_os git`, contains the source code for the TEE in Linux using the
12 ARM® TrustZone® technology. This component meets the GlobalPlatform
13 TEE System Architecture specification. It also provides the TEE Internal core API
14 v1.1 as defined by the GlobalPlatform TEE Standard for the development of
15 Trusted Applications. For a general overview of OP-TEE and to find out how to
16 contribute, please see the [Notice.md](Notice.md) file.
17
18 The 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),
20 which also is used to trigger secure execution of applications within the TEE.
21
22 ---
23 ## 2. License
24 The software is distributed mostly under the
25 [BSD 2-Clause](http://opensource.org/licenses/BSD-2-Clause) open source
26 license, apart from some files in the `optee_os/lib/libutils` directory
27 which are distributed under the
28 [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) or public domain
29 licenses.
30
31 ---
32 ## 3. Platforms supported
33 Several platforms are supported. In order to manage slight differences
34 between platforms, a `PLATFORM_FLAVOR` flag has been introduced.
35 The `PLATFORM` and `PLATFORM_FLAVOR` flags define the whole configuration
36 for a chip the where the Trusted OS runs. Note that there is also a
37 composite form which makes it possible to append `PLATFORM_FLAVOR` directly,
38 by adding a dash in-between the names. The composite form is shown below
39 for the different boards. For more specific details about build flags etc,
40 please read the file [build_system.md](documentation/build_system.md). Some
41 platforms have different sub-maintainers, please refer to the file
42 [MAINTAINERS.md](MAINTAINERS.md) for contact details for various platforms.
43
44 <!-- Please keep this list sorted in alphabetic order -->
45 | Platform | Composite PLATFORM flag | Publicly available? |
46 |----------|-------------------------|---------------------|
47 | [Allwinner A80 Board](http://linux-sunxi.org/A80)|`PLATFORM=sunxi`| No |
48 | [ARM Juno Board](http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php) |`PLATFORM=vexpress-juno`| Yes |
49 | [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 |
50 | [FSL i.MX6 Quad SABRE Lite Board](https://boundarydevices.com/product/sabre-lite-imx6-sbc/) |`PLATFORM=imx`| Yes |
51 | [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`| Yes |
52 | [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`| Yes |
53 | [ARM Foundation FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms) |`PLATFORM=vexpress-fvp`| Yes |
54 | [HiSilicon D02](http://open-estuary.org/d02-2)|`PLATFORM=d02`| No |
55 | [HiKey Board (HiSilicon Kirin 620)](https://www.96boards.org/products/hikey)|`PLATFORM=hikey`| Yes |
56 | [MediaTek MT8173 EVB Board](https://www.mediatek.com/products/tablets/mt8173)|`PLATFORM=mediatek-mt8173`| No |
57 | [QEMU](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_virt`| Yes |
58 | [QEMUv8](http://wiki.qemu.org/Main_Page) |`PLATFORM=vexpress-qemu_armv8a`| Yes |
59 | [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b) |`PLATFORM=rpi3`| Yes |
60 | [Renesas RCAR](https://www.renesas.com/en-sg/solutions/automotive/products/rcar-h3.html)|`PLATFORM=rcar`| No |
61 | [STMicroelectronics b2260 - h410 (96boards fmt)](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-b2260`| No |
62 | [STMicroelectronics b2120 - h310 / h410](http://www.st.com/web/en/catalog/mmc/FM131/SC999/SS1628/PF258776) |`PLATFORM=stm-cannes`| No |
63 | [Texas Instruments DRA7xx](http://www.ti.com/product/DRA746)|`PLATFORM=ti-dra7xx`| Yes |
64 | [Xilinx Zynq 7000 ZC702](http://www.xilinx.com/products/boards-and-kits/ek-z7-zc702-g.html)|`PLATFORM=zynq7k-zc702`| Yes |
65 | [Xilinx Zynq UltraScale+ MPSOC](http://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html)|`PLATFORM=zynqmp-zcu102`| Yes |
66 | [Spreadtrum SC9860](http://www.spreadtrum.com/en/SC9860GV.html)|`PLATFORM=sprd-sc9860`| No |
67
68 ---
69 ## 4. Get and build OP-TEE software
70 Please see [build] for instructions how to run OP-TEE on various devices.
71
72 ---
73 ## 5. Coding standards
74 In this project we are trying to adhere to the same coding convention as used in
75 the Linux kernel (see
76 [CodingStyle](https://www.kernel.org/doc/Documentation/process/coding-style.rst)). We achieve this by running
77 [checkpatch](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/checkpatch.pl)
78 from Linux kernel. However there are a few exceptions that we had to make since
79 the code also follows GlobalPlatform standards. The exceptions are as follows:
80
81 - CamelCase for GlobalPlatform types are allowed.
82 - And we also exclude checking third party code that we might use in this
83   project, such as LibTomCrypt, MPA, newlib (not in this particular git, but
84   those are also part of the complete TEE solution). The reason for excluding
85   and not fixing third party code is because we would probably deviate too much
86   from upstream and therefore it would be hard to rebase against those projects
87   later on (and we don't expect that it is easy to convince other software
88   projects to change coding style).
89
90 ### 5.1 checkpatch
91 Since checkpatch is licensed under the terms of GNU GPL License Version 2, we
92 cannot include this script directly into this project. Please use checkpatch
93 directly from the Linux kernel git in combination with the local [checkpatch
94 script].
95
96 [build]: https://github.com/OP-TEE/build
97 [checkpatch script]: scripts/checkpatch.sh