blob: 0027b16ddd4781bbadd86a93c6a23a9bf164412f [file] [log] [blame]
.. _file_structure:
File structure
##############
This page describes organization of the tree structure in :ref:`optee_os`.
The description is dived into different tables. First the flat top directory
followed by the ``core/`` directory tree with the ``core/arch/arm/`` tree
in separate table. There are two more tables covering the ``lib/`` and
``ta/`` trees.
Top level directories
*********************
.. list-table::
:header-rows: 1
:widths: 1 5
* - Directory
- Description
* - core/
- Files that are only used building OP-TEE core, the privileged mode part
* - keys/
- Secure keys or not so secure example keys
* - ldelf/
- Ldelf the user mode ELF loader, for instance used to load TAs
* - lib/
- Libraries that are used both when building more than one component,
for instance, OP-TEE core, ldelf, or TAs
* - mk/
- Makefiles supporting the build system
* - scripts/
- Helper scripts for miscellaneous tasks
* - ta/
- Files that are only used when building TAs
* - out/
- Created when building unless a different out directory is specified with
``O=...`` on the command line
core/
*****
.. list-table::
:header-rows: 1
:widths: 1 5
* - Directory
- Description
* - arch/
- Architecture and platform specific files
* - arch/arm/
- Arm specific architecture and platform files
* - crypto/
- Crypto infrastructure including software implementations of certain
algorithms.
* - drivers/
- Various device drivers
* - include/
- Header files of resources exported to the rest of the core
* - include/crypto/
- Include files related to files in /core/crypto
* - include/drivers/
- Include files related to device drivers
* - include/dt-bindings/
- Include files for the device tree bindings
* - include/kernel/
- Include files related to files in /core/kernel
* - include/mm/
- Include files related to memory management and files in /core/mm
* - include/tee/
- Include files related to files in /core/tee
* - kernel/
- Miscellaneous architecture neutral files
* - lib/
- Libraries that are used by core only
* - lib/libfdt/
- Flat Device Trees manipulation library
* - lib/libfdt/include/
- Include files related to libfdt
* - lib/libtomcrypt/
- Libtomcrypt crypto library
* - lib/libtomcrypt/include/
- Include files related to libtomcrypt
* - lib/libtomcrypt/src/
- Source files of libtomcrypt
* - lib/zlib/
- Zlib compression library
* - mm/
- Architecture neutral memory management
* - pta/
- Various pseudo TAs
* - tee/
- Architecture neutral TEE files
core/arch/arm/
**************
.. list-table::
:header-rows: 1
:widths: 1 5
* - Directory
- Description
* - cpu/
- CPU specific settings
* - crypto/
- Architecture specific software implementations of crypto algorithms
* - dts/
- Device tree source files
* - include/
- Header files of resources exported to the rest of the core
* - include/crypto/
- Architecture specific include files related to /core/crypto or
/core/arch/arm/crypto files
* - include/kernel/
- Architecture specific include files related to /core/kernel or
/core/arch/arm/kernel files
* - include/mm/
- Architecture specific include files related to /core/mm or
/core/arch/arm/mm files
* - include/sm/
- Include files related to the secure monitor
* - include/tee/
- Architecture specific include files related to /core/tee or
/core/arch/arm/tee files
* - kernel/
- Miscellaneous low level architecure specific files
* - plat-\*/
- Specific files for the different supported platform
* - mm/
- Memory management
* - tee/
- TEE files
* - sm/
- Secure Monitor, ARMv7-A only
lib/
*************
.. list-table::
:header-rows: 1
:widths: 1 5
* - Directory
- Description
* - libdl/
- Implementation of dlopen(), dlsym() and dlclose() used by TAs and ldelf
* - libdl/include/
- Include files for libdl
* - libmbedtls/
- Mbed TLS crypto library
* - libmbedtls/core/
- Glue code only compiled with core to connect with the core internal
<crypto/crypto.h> API.
* - libmbedtls/include/
- Include files with configuration of Mbed TLS
* - libmbedtls/mbedtls/
- Top directory of the imported Mbed TLS source tree
* - libmbedtls/mbedtls/include/
- Mbed TLS include files
* - libmbedtls/mbedtls/library/
- Mbed TLS implementation
* - libunw/
- Unwind library
* - libunw/include/
- Include files for libunwnd
* - libutee/
- Libutee which provide the implementation of TEE Internal Core API.
* - libutee/arch/
- Architecture specific implementation
* - libutee/include/
- Include files related to libutee and the header files for
TEE Internal Core API
* - libutils/
- The reduced "libc" of OP-TEE
* - libutils/ext/
- Extensions to a standard libc
* - libutils/ext/arch/
- Architecture specific implmementation of the extensions
* - libutils/ext/include/
- Include files related to the extensions
* - libutils/isoc/
- A subset of ISOC
* - libutils/isoc/arch/
- Architecture specific
* - libutils/isoc/include/
- Header files related to the provided subset of ISOC
* - libutils/isoc/newlib/
- Routines imported from newlib
ta/
*************
.. list-table::
:header-rows: 1
:widths: 1 5
* - Directory
- Description
* - trusted_keys
- Trusted key TA
* - trusted_keys/include
- Header file of the ABI provided by the trusted key TA
* - arch
- Architecture specific files needed to compile a TA
* - mk
- Makefile includes needed to build TAs and the TA dev kit
* - avb
- TA to support AVB (Android Verified Boot)
* - avb/include
- Header file of the ABI provided by the AVB TA
* - pkcs11
- TA to support PKCS#11
* - pkcs11/src
- Source code for the PKCS#11 TA
* - pkcs11/include
- Header file for the ABI provided by the PKCS#11 TA