readme.md 5.89 KB
Newer Older
Dan Handley's avatar
Dan Handley committed
1
ARM Trusted Firmware - version 0.3
2
3
4
==================================

ARM Trusted Firmware provides a reference implementation of secure world
Dan Handley's avatar
Dan Handley committed
5
software for [ARMv8-A], including Exception Level 3 (EL3) software. This
6
7
8
9
10
release focuses on support for ARM's [Fixed Virtual Platforms (FVPs)] [FVP].

The intent is to provide a reference implementation of various ARM interface
standards, such as the Power State Coordination Interface ([PSCI]), Trusted
Board Boot Requirements (TBBR) and [Secure Monitor] [TEE-SMC] code. As far as
11
possible the code is designed for reuse or porting to other ARMv8-A model and
12
13
hardware platforms.

Dan Handley's avatar
Dan Handley committed
14
15
16
This release builds on the previous source code release, which has been
available in source and binary form since the [Linaro AArch64 OpenEmbedded 13.11
Engineering Build] [AArch64 LEB]. These support the Base FVP platform
17
18
19
20
models from ARM.

ARM will continue development in collaboration with interested parties to
provide a full reference implementation of PSCI, TBBR and Secure Monitor code
21
to the benefit of all developers working with ARMv8-A TrustZone software.
22
23
24
25
26
27
28
29
30
31
32
33
34


License
-------

The software is provided under a BSD 3-Clause [license]. Certain source files
are derived from FreeBSD code: the original license is included in these
source files.


This Release
------------

Dan Handley's avatar
Dan Handley committed
35
This release is an incomplete implementation of the Trusted Firmware. Only
36
37
38
39
40
41
limited functionality is provided at present and it has not been optimized or
subjected to extended robustness or stress testing.

### Functionality

*   Initial implementation of a subset of the Trusted Board Boot Requirements
Dan Handley's avatar
Dan Handley committed
42
43
44
    Platform Design Document (PDD). This includes packaging the various firmware
    images into a Firmware Image Package (FIP) to be loaded from non-volatile
    storage.
45
46
47
48
49
50
51
52
53
54
55
56

*   Initializes the secure world (for example, exception vectors, control
    registers, GIC and interrupts for the platform), before transitioning into
    the normal world.

*   Supports both GICv2 and GICv3 initialization for use by normal world
    software.

*   Starts the normal world at the highest available Exception Level: EL2
    if available, otherwise EL1.

*   Handles SMCs (Secure Monitor Calls) conforming to the [SMC Calling
Dan Handley's avatar
Dan Handley committed
57
    Convention PDD] [SMCCC] using an EL3 runtime services framework.
58
59

*   Handles SMCs relating to the [Power State Coordination Interface PDD] [PSCI]
Dan Handley's avatar
Dan Handley committed
60
61
62
63
64
65
66
    for the Secondary CPU Boot, CPU hotplug and CPU idle use-cases.

*   A Test Secure-EL1 Payload and Dispatcher to demonstrate Secure Monitor
    functionality such as world switching and EL1 context management. This
    also demonstrates Secure-EL1 interaction with PSCI. Some of this
    functionality is provided in library form for re-use by other Secure-EL1
    Payload Dispatchers.
67
68
69
70
71
72
73
74
75
76

For a full list of updated functionality and implementation details, please
see the [User Guide]. The [Change Log] provides details of changes made
since the last release.

### Platforms

This release of the Trusted Firmware has been tested on the following ARM
[FVP]s (64-bit versions only):

Dan Handley's avatar
Dan Handley committed
77
78
79
80
*   `Foundation_v8` (Version 2.0, Build 0.8.5206)
*   `FVP_Base_AEMv8A-AEMv8A` (Version 5.4, Build 0.8.5405)
*   `FVP_Base_Cortex-A57x4-A53x4` (Version 5.4, Build 0.8.5405)
*   `FVP_Base_Cortex-A57x1-A53x1` (Version 5.4, Build 0.8.5405)
81

Dan Handley's avatar
Dan Handley committed
82
83
The Foundation FVP can be downloaded free of charge. The Base FVPs can be
licensed from ARM: see [www.arm.com/fvp] [FVP].
84
85
86
87
88

### Still to Come

*   Complete implementation of the [PSCI] specification.

Dan Handley's avatar
Dan Handley committed
89
90
*   Secure memory, Secure interrupts and support for other types of Secure-EL1
    Payloads.
91

Dan Handley's avatar
Dan Handley committed
92
*   Booting the firmware from a Virtio block device.
93
94
95
96

*   Completing the currently experimental GICv3 support.

For a full list of detailed issues in the current code, please see the [Change
Dan Handley's avatar
Dan Handley committed
97
Log] and the [GitHub issue tracker].
98
99
100
101
102
103
104
105
106
107
108


Getting Started
---------------

Get the Trusted Firmware source code from
[GitHub](https://www.github.com/ARM-software/arm-trusted-firmware).

See the [User Guide] for instructions on how to install, build and use
the Trusted Firmware with the ARM [FVP]s.

Dan Handley's avatar
Dan Handley committed
109
110
See the [Firmware Design] for information on how the ARM Trusted Firmware works.

111
See the [Porting Guide] as well for information about how to use this
112
software on another ARMv8-A platform.
113

Dan Handley's avatar
Dan Handley committed
114
115
116
117
See the [Contributing Guidelines] for information on how to contribute to this
project and the [Acknowledgements] file for a list of contributors to the
project.

118
119
120
### Feedback and support

ARM welcomes any feedback on the Trusted Firmware. Please send feedback using
Dan Handley's avatar
Dan Handley committed
121
the [GitHub issue tracker].
122
123
124
125
126
127

ARM licensees may contact ARM directly via their partner managers.


- - - - - - - - - - - - - - - - - - - - - - - - - -

128
_Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved._
129
130


Dan Handley's avatar
Dan Handley committed
131
132
133
134
135
[License]:                  ./license.md "BSD license for ARM Trusted Firmware"
[Contributing Guidelines]:  ./contributing.md "Guidelines for contributors"
[Acknowledgements]:         ./acknowledgements.md "Contributor acknowledgements"
[Change Log]:               ./docs/change-log.md
[User Guide]:               ./docs/user-guide.md
Dan Handley's avatar
Dan Handley committed
136
[Firmware Design]:          ./docs/firmware-design.md
Dan Handley's avatar
Dan Handley committed
137
[Porting Guide]:            ./docs/porting-guide.md
138

Dan Handley's avatar
Dan Handley committed
139
140
141
142
143
144
145
[ARMv8-A]:               http://www.arm.com/products/processors/armv8-architecture.php "ARMv8-A Architecture"
[FVP]:                   http://www.arm.com/fvp "ARM's Fixed Virtual Platforms"
[PSCI]:                  http://infocenter.arm.com/help/topic/com.arm.doc.den0022b/index.html "Power State Coordination Interface PDD (ARM DEN 0022B.b)"
[SMCCC]:                 http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html "SMC Calling Convention PDD (ARM DEN 0028A)"
[TEE-SMC]:               http://www.arm.com/products/processors/technologies/trustzone/tee-smc.php "Secure Monitor and TEEs"
[AArch64 LEB]:           http://releases.linaro.org/13.11/openembedded/aarch64 "Linaro AArch64 OpenEmbedded ARM Fast Model 13.11 Release"
[GitHub issue tracker]:  https://github.com/ARM-software/tf-issues/issues