mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00

Due to recent issues in the rendering of the documentation on GitHub and some long-standing issues like the lack of automatic table of content in Markdown, the documentation has been converted to reStructuredText. Basic constructs looks pretty similar to Markdown. Automatically convert GitHub markdown documentation to reStructuredText using pandoc. Change-Id: If20b695acedc6d1b49c8d9fb64efd6b6ba23f4a9 Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
76 lines
2.7 KiB
ReStructuredText
76 lines
2.7 KiB
ReStructuredText
Trusted Little Kernel (TLK) Dispatcher
|
|
======================================
|
|
|
|
TLK dispatcher adds support for NVIDIA's Trusted Little Kernel (TLK) to work
|
|
with the Trusted Firmware. TLK-D can be compiled by including it in the
|
|
platform's makefile. TLK is primarily meant to work with Tegra SoCs, so until
|
|
Trusted Firmware starts supporting Tegra, the dispatcher code can only be
|
|
compiled for other platforms.
|
|
|
|
In order to compile TLK-D, we need a BL32 image to be present. Since, TLKD
|
|
just needs to compile, any BL32 image would do. To use TLK as the BL32, please
|
|
refer to the "Build TLK" section.
|
|
|
|
Once a BL32 is ready, TLKD can be included in the image by adding "SPD=tlkd"
|
|
to the build command.
|
|
|
|
Trusted Little Kernel (TLK)
|
|
===========================
|
|
|
|
TLK is a Trusted OS running as Secure EL1. It is a Free Open Source Software
|
|
(FOSS) release of the NVIDIA® Trusted Little Kernel (TLK) technology, which
|
|
extends technology made available with the development of the Little Kernel (LK).
|
|
You can download the LK modular embedded preemptive kernel for use on ARM,
|
|
x86, and AVR32 systems from https://github.com/travisg/lk
|
|
|
|
NVIDIA implemented its Trusted Little Kernel (TLK) technology, designed as a
|
|
free and open-source trusted execution environment (OTE).
|
|
|
|
TLK features include:
|
|
|
|
• Small, pre-emptive kernel
|
|
• Supports multi-threading, IPCs, and thread scheduling
|
|
• Added TrustZone features
|
|
• Added Secure Storage
|
|
• Under MIT/FreeBSD license
|
|
|
|
NVIDIA extensions to Little Kernel (LK) include:
|
|
|
|
• User mode
|
|
• Address-space separation for TAs
|
|
• TLK Client Application (CA) library
|
|
• TLK TA library
|
|
• Crypto library (encrypt/decrypt, key handling) via OpenSSL
|
|
• Linux kernel driver
|
|
• Cortex A9/A15 support
|
|
• Power Management
|
|
• TrustZone memory carve-out (reconfigurable)
|
|
• Page table management
|
|
• Debugging support over UART (USB planned)
|
|
|
|
TLK is hosted by NVIDIA on http://nv-tegra.nvidia.com under the
|
|
3rdparty/ote\_partner/tlk.git repository. Detailed information about
|
|
TLK and OTE can be found in the Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf
|
|
manual located under the "documentation" directory\_.
|
|
|
|
Build TLK
|
|
=========
|
|
|
|
To build and execute TLK, follow the instructions from "Building a TLK Device"
|
|
section from Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf manual.
|
|
|
|
Input parameters to TLK
|
|
=======================
|
|
|
|
TLK expects the TZDRAM size and a structure containing the boot arguments. BL2
|
|
passes this information to the EL3 software as members of the bl32\_ep\_info
|
|
struct, where bl32\_ep\_info is part of bl31\_params\_t (passed by BL2 in X0)
|
|
|
|
Example:
|
|
--------
|
|
|
|
::
|
|
|
|
bl32_ep_info->args.arg0 = TZDRAM size available for BL32
|
|
bl32_ep_info->args.arg1 = unused (used only on ARMv7)
|
|
bl32_ep_info->args.arg2 = pointer to boot args
|