tlk-dispatcher.rst 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. Trusted Little Kernel (TLK) Dispatcher
  2. ======================================
  3. TLK dispatcher (TLK-D) adds support for NVIDIA's Trusted Little Kernel (TLK)
  4. to work with Trusted Firmware-A (TF-A). TLK-D can be compiled by including it
  5. in the platform's makefile. TLK is primarily meant to work with Tegra SoCs,
  6. so while TF-A only supports TLK on Tegra, the dispatcher code can only be
  7. compiled for other platforms.
  8. In order to compile TLK-D, we need a BL32 image to be present. Since, TLKD
  9. just needs to compile, any BL32 image would do. To use TLK as the BL32, please
  10. refer to the "Build TLK" section.
  11. Once a BL32 is ready, TLKD can be included in the image by adding "SPD=tlkd"
  12. to the build command.
  13. Trusted Little Kernel (TLK)
  14. ---------------------------
  15. TLK is a Trusted OS running as Secure EL1. It is a Free Open Source Software
  16. (FOSS) release of the NVIDIA® Trusted Little Kernel (TLK) technology, which
  17. extends technology made available with the development of the Little Kernel (LK).
  18. You can download the LK modular embedded preemptive kernel for use on Arm,
  19. x86, and AVR32 systems from https://github.com/travisg/lk
  20. NVIDIA implemented its Trusted Little Kernel (TLK) technology, designed as a
  21. free and open-source trusted execution environment (OTE).
  22. TLK features include:
  23. • Small, pre-emptive kernel
  24. • Supports multi-threading, IPCs, and thread scheduling
  25. • Added TrustZone features
  26. • Added Secure Storage
  27. • Under MIT/FreeBSD license
  28. NVIDIA extensions to Little Kernel (LK) include:
  29. • User mode
  30. • Address-space separation for TAs
  31. • TLK Client Application (CA) library
  32. • TLK TA library
  33. • Crypto library (encrypt/decrypt, key handling) via OpenSSL
  34. • Linux kernel driver
  35. • Cortex A9/A15 support
  36. • Power Management
  37. • TrustZone memory carve-out (reconfigurable)
  38. • Page table management
  39. • Debugging support over UART (USB planned)
  40. TLK is hosted by NVIDIA on http://nv-tegra.nvidia.com under the
  41. 3rdparty/ote\_partner/tlk.git repository. Detailed information about
  42. TLK and OTE can be found in the Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf
  43. manual located under the "documentation" directory\_.
  44. Build TLK
  45. ---------
  46. To build and execute TLK, follow the instructions from "Building a TLK Device"
  47. section from Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf manual.
  48. Input parameters to TLK
  49. -----------------------
  50. TLK expects the TZDRAM size and a structure containing the boot arguments. BL2
  51. passes this information to the EL3 software as members of the bl32\_ep\_info
  52. struct, where bl32\_ep\_info is part of bl31\_params\_t (passed by BL2 in X0)
  53. Example
  54. ~~~~~~~
  55. ::
  56. bl32_ep_info->args.arg0 = TZDRAM size available for BL32
  57. bl32_ep_info->args.arg1 = unused (used only on Armv7-A)
  58. bl32_ep_info->args.arg2 = pointer to boot args