| .. _aosp: |
| |
| #### |
| AOSP |
| #### |
| This page contains information that tells how to get OP-TEE up and running on |
| HiKey devices (see :ref:`hikey`, :ref:`hikey960`) together with AOSP. The build |
| is based on the latest OP-TEE release and updated every quarter together with |
| the regular OP-TEE releases. |
| |
| .. note:: |
| |
| We **only** use and support this static/stable configuration. If you try |
| using it with the latest available AOSP, there is a risk that both OP-TEE |
| and other parts are not working as expected. |
| |
| Prerequisites |
| ************* |
| |
| - You should already be able to build AOSP for Hikey according to the |
| `official instructions`_. Note that the official build is **NOT** part |
| of the OP-TEE build. It is a separate and non-related build used only |
| to verify and make sure that your system has everything needed to |
| build AOSP without any issues. |
| |
| - Distro should have necessary packages installed, and the repo tool |
| should be installed. Note that AOSP is built with Java. Also make sure |
| that the ``mtools`` package is installed, which is needed to make the |
| hikey boot image. |
| |
| - In addition, you will need the pre-requisites necessary to build |
| optee-os. |
| |
| After following the AOSP setup instructions, the following additional packages |
| from main :ref:`prerequisites` page are needed. Please install them. |
| |
| Build instructions |
| ****************** |
| |
| .. code-block:: bash |
| |
| $ git clone https://github.com/linaro-swg/optee_android_manifest [-b <release_tag>] |
| # release tags come in the form of X.Y.Z, e.g. 3.8.0 |
| $ cd optee_android_manifest |
| |
| |
| HiKey620 - LeMaker 8GB |
| .. code-block:: bash |
| |
| $ ./sync-p.sh |
| $ ./build-p.sh |
| |
| HiKey620 - CircuitCo 4GB |
| .. code-block:: bash |
| |
| $ ./sync-p.sh |
| $ ./build-p.sh -4g |
| |
| HiKey960 |
| .. code-block:: bash |
| |
| $ ./sync-p-hikey960.sh |
| $ ./build-p-hikey960.sh |
| |
| These steps **MUST** finish with **no errors**. For ``sync*.sh`` scripts, that |
| means there must be no errors prior to the ``Sync done!`` console output. For |
| ``build*.sh`` scripts, that means there must be a ``#### build completed |
| successfully (MM:SS (mm:ss)) ####`` console output! If there are errors, then |
| there is no point in trying to flash the device. |
| |
| .. warning:: |
| |
| - ``--force-sync`` is used which means you might **lose your work** so save |
| often, save frequent, and save accordingly, especially before running |
| ``sync-p.sh`` again! |
| |
| - **Attention!** Do **NOT** use ``git clean`` with ``-x`` or ``-X`` or |
| ``-e`` option in ``optee_android_manifest/``, else risk **losing all |
| files** in the directory!!! |
| |
| .. hint:: |
| |
| You can add the ``-squashfs`` option to ``build.sh`` option to make |
| ``system.img`` size smaller, but this will make ``/system`` read-only, so |
| you won't be able to push files to it. |
| |
| Currently, only version P is supported. Other existing files are for internal |
| development purposes ONLY and **NOT SUPPORTED**! |
| |
| Flashing the image |
| ****************** |
| The instructions for flashing the image can be found in detail under |
| ``device/linaro/hikey/installer/hikey{960}/README`` in the tree. |
| |
| 1. Set jumpers/switches ``1-2`` and ``3-4``, and unset ``5-6``. |
| 2. Reset the board. After that, invoke: |
| |
| HiKey620 |
| .. code-block:: bash |
| |
| $ cp -a out/target/product/hikey/*.img device/linaro/hikey/installer/hikey/ |
| $ sudo ./device/linaro/hikey/installer/hikey/flash-all.sh /dev/ttyUSBn |
| |
| HiKey960 |
| .. code-block:: bash |
| |
| $ cp -a out/target/product/hikey960/*.img device/linaro/hikey/installer/hikey960/ |
| $ sudo ./device/linaro/hikey/installer/hikey960/flash-all.sh /dev/ttyUSBn |
| |
| where the ``/dev/ttyUSBn`` device is the one that appears after rebooting with |
| the 3-4 jumper set. Note that the device only remains in this recovery mode for |
| about 90 seconds. If you take too long to run the flash commands, it will need |
| to be reset again. After flashing, unset the 3-4 jumper again to boot normally. |
| |
| Partial flashing |
| **************** |
| The last handful of lines in the ``flash-all.sh`` script flash various images. |
| After modifying and rebuilding Android, it is only necessary to flash `boot`, |
| `system`, `cache`, `vendor` and `userdata`. If you aren't modifying the kernel, |
| `boot` is not necessary, either. |
| |
| Experimental prebuilts |
| ********************** |
| Available at http://snapshots.linaro.org/android under ``android-hikey*`` |
| directories. Note that these images do not always work and are **NOT |
| SUPPORTED** as well! |
| |
| Running xtest |
| ************* |
| Do NOT try to run ``tee-supplicant`` as it has already been started |
| automatically as a service! Once booted to the command prompt, ``xtest`` can be |
| run immediately from the console or an ``adb`` shell. For more details about |
| running OP-TEE, please see :ref:`optee_test_run_xtest` at :ref:`optee_test`. |
| |
| Running VTS Gtest unit for Gatekeeper and Keymaster (Optional) |
| ************************************************************** |
| On the device after going into the command prompt, run: |
| |
| .. code-block:: bash |
| |
| $ su |
| $ ./data/nativetest64/VtsHalGatekeeperV1_0TargetTest/VtsHalGatekeeperV1_0TargetTest |
| $ ./data/nativetest64/VtsHalKeymasterV3_0TargetTest/VtsHalKeymasterV3_0TargetTest |
| |
| .. note:: |
| |
| These tests need to be run as root. |
| |
| Enable adb over USB |
| ******************* |
| |
| Boot the device. On serial console: |
| |
| .. code-block:: bash |
| |
| $ su setprop sys.usb.configfs 1 |
| $ stop adbd |
| $ start adbd |
| |
| Known issues |
| ************ |
| - If you don't have a monitor or hdmi emulator (dummy plug) connected to |
| the board, you'll see constant errors scrolling on the console. As a |
| workaround, move ``android.hardware.graphics.composer@2.1-service.rc`` |
| out of ``/vendor/etc/init``. Move it back in when working with a |
| monitor again. |
| |
| - Adb over USB currently doesn't work on HiKey960. As a workaround, use |
| adb over tcpip. See https://bugs.96boards.org/show_bug.cgi?id=502 for |
| details on how to connect. There are still some limitations however. |
| E.g. running ``adb shell`` or a second ``adb`` instance will break the |
| current adb tcpip connection. This might be due to unstable WiFi |
| (there are periodic error messages like ``wlcore: WARNING corrupted |
| packet in RX: status: 0x1 len: 76``) or just incompleteness of the |
| generic HiKey960 builds under P. |
| |
| .. _official instructions: https://source.android.com/source/devices.html |