.. _optee_with_rust:

################ 
OP-TEE with Rust
################

This document describes how to build OP-TEE client and trusted applications
written in `Rust <https://www.rust-lang.org>`_ with `Teaclave TrustZone SDK
<https://github.com/apache/incubator-teaclave-trustzone-sdk>`_.

Clone OP-TEE repo 
*****************

Currently, Teaclave TrustZone SDK is compatible with QEMUv8 (aarch64).

Before building examples written with Teaclave TrustZone SDK, you should 
clone the OP-TEE repo first. For QEMUv8, run:

.. code-block:: bash

    $ mkdir YOUR_OPTEE_DIR && cd YOUR_OPTEE_DIR
    $ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml 
    $ repo sync

The source code of Teaclave TrustZone SDK is located in 
``YOUR_OPTEE_DIR/optee_rust/`` containing a set of examples written in Rust
using the SDK.

For more information about building OP-TEE using QEMUv8, see `run OP-TEE using
QEMU
<https://optee.readthedocs.io/en/latest/building/devices/qemu.html#qemu-v8>`_ .

Compile Rust examples 
*********************

Rust example applications are located in ``optee_rust/examples/``. To build
and install them with Buildroot, run:

.. code-block:: bash

    $ (cd build && make toolchains && make OPTEE_RUST_ENABLE=y CFG_TEE_RAM_VA_SIZE=0x00300000)

Then start QEMUv8:

.. code-block:: bash

    $ (cd build && make run-only)

.. hint::

    Note that if you are under the environment without GUI, you can use
    ``soc_term`` instead.

    Access to normal world terminal:

    .. code-block:: bash

       $ ./build/soc_term.py 54320

    Access to secure world terminal:

    .. code-block:: bash

       $ ./build/soc_term.py 54321

    Run QEMU:

    .. code-block:: bash

       $ (cd build && make run-only)

To differentiate from client applications generated by `optee_examples
<https://optee.readthedocs.io/en/latest/building/gits/optee_examples/optee_examples.html#>`_
, OP-TEE Rust examples are not prefixed with ``optee_example_`` but suffixed with
``-rs``. More description about Rust examples can be found in `Overview of
OP-TEE Rust Examples
<https://teaclave.apache.org/trustzone-sdk-docs/overview-of-optee-rust-examples/>`_
.

During the build process, host applications are installed to ``/usr/bin/`` and
TAs are installed to ``/lib/optee_armtz/``. After QEMU boots up, you can run
host applications in normal world terminal. For example:

.. code-block:: bash

    $ hello_world-rs 
    original value is 29 
    inc value is 129 
    dec value is 29
    Success

TA log will be printed correspondingly in the secure terminal.

Development Documents
*********************

More information about developing OP-TEE applications in Rust can be found in
`Teaclave TrustZone SDK Documentation
<https://teaclave.apache.org/trustzone-sdk-docs/>`_.
