blob: de70f78bb6dd243852a427e93e59a61bc2fe2d32 [file] [log] [blame]
.. _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/>`_.