Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Open Source Software and Platforms
Open Source Software and Platforms
Wiki Trusted Applications on Juno
  • Help
  • Jump...
  • Cancel
  • About this wiki
  • Supported platforms
  • Obtaining support
  • +Arm Reference Platforms deliverables
  • -A-class platforms
    • -Juno
      • Run the Arm Platforms deliverables on Juno
      • Juno board revisions
      • +Troubleshooting your Juno
      • Bare metal development on Juno
      • Change which CPUs are released from reset on Juno
      • Install Debian on Juno
      • Energy monitoring on Juno
      • Ethernet on Juno
      • PCIe on Juno
      • Trusted Applications on Juno
      • Build Android from source for Juno
      • Build OpenEmbedded from source for Juno
      • Documentation error: Mali OpenGL in OpenEmbedded on Juno
    • +FVPs
    • +Total Compute Platforms
    • +System Guidance for Infrastructure (SGI)
    • +System Guidance for Mobile (SGM)
    • Corstone-500
    • Cortex-A5 DesignStart
    • +Neoverse N1 SDP
    • Neoverse Reference Designs
    • +Legacy platforms
  • +M-class platforms
  • +R-class platforms
  • +FPGA prototyping boards
  • +Open source software

Trusted Applications on Juno

These instructions demonstrate how to run an OP-TEE "Hello, world!" Trusted Application (TA) on Juno.

  1. Follow the instructions here to sync a new workspace using the `ack-armlt' kernel:
    +-------------+----------------------------+
    | Workspace   | <workspace>                |
    | Platform    | Juno                       |
    | Build       | Build from source          |
    | Environment | Linux/Android              |
    | Kernel      | ack-4.9-armlt              |
    | Filesystem  | OpenEmbedded Minimal 15.09 |
    +-------------+----------------------------+
  2. Build the deliverables
  3. Burn the OpenEmbedded Minimal filesystem image to a USB stick and insert the USB stick into the Juno
  4. Wipe the Juno board's Flash:
    Cmd> flash
    Flash> eraseall
    Flash> quit
    Cmd> usb_on
  5. Delete everything on the Juno's mounted MMC card
  6. Copy the contents of `<workspace>/recovery/' to the Juno's mounted MMC card
  7. Copy the contents of `<workspace>/output/juno/juno-oe/uboot' to the `/SOFTWARE/' directory on the Juno's mounted MMC card, overwriting any duplicate files
  8. Issue a `$ sync' command from your host PC
  9. Power cycle the Juno board; it should boot to the OpenEmbedded prompt
  10. Get the Juno board's IP address using `# ifconfig'
  11. Using full absolute paths, export the following environment variables on your host PC:
    $ export JUNO_IP=<juno_ip_address>
    $ export HOST_CROSS_COMPILE=<workspace>/tools/gcc/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
    $ export TA_CROSS_COMPILE=<workspace>/tools/gcc/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
    $ export TEEC_EXPORT=<workspace>/optee/optee_client/out/export
    $ export TA_DEV_KIT_DIR=<workspace>/optee/optee_os/out/arm-plat-vexpress/export-ta_arm32/

    Note: Replace `5.3.1-2016.05' with the correct release and date for your workspace.

  12. Build the Trusted Application:
    $ cd <workspace>/optee/
    $ git clone https://github.com/jenswi-linaro/lcu14_optee_hello_world.git
    $ cd lcu14_optee_hello_world/
    $ make
  13. Copy required files to the Juno:
    $ scp host/hello_world root@$JUNO_IP:~
    $ find -name "*.ta" -exec scp {} root@$JUNO_IP:~ \;
    $ cd <workspace>/optee/optee_client/out
    $ tar zcf export.tar.gz export/
    $ scp export.tar.gz root@$JUNO_IP:~
  14. Run the TA on the Juno:
    # cd ~
    # mkdir -p /lib/optee_armtz/
    # mv *.ta /lib/optee_armtz/
    # tar xzf export.tar.gz
    # export LD_LIBRARY_PATH=~/export/lib:$LD_LIBRARY_PATH
    # ./export/bin/tee-supplicant &
    # ./hello_world
    Invoking TA to increment 42
    TA incremented value to 43
  • Linaro
  • Juno Arm Development Platform
  • OP-TEE
  • Trusted Execution Environment (TEE)
  • TrustZone
  • Share
  • History
  • More
  • Cancel
Related
Recommended