readme.md 6.11 KB
Newer Older
1
ARM Trusted Firmware - version 0.4
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.

14
15
This release builds on previous source code releases, supporting the Base and
Foundation FVP platform models from ARM.
16
17
18

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


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
------------

33
34
35
This release is a limited functionality implementation of the Trusted Firmware.
It provides a suitable starting point for productization. Future versions will
contain new features, optimizations and quality improvements.
36
37
38
39

### Functionality

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

*   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
55
    Convention PDD] [SMCCC] using an EL3 runtime services framework.
56
57

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

*   A Test Secure-EL1 Payload and Dispatcher to demonstrate Secure Monitor
61
62
63
64
    functionality such as world switching, EL1 context management and interrupt
    routing. 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.
65

66
67
68
69
70
71
72
73
74
75
*   Support for alternative Trusted Boot Firmware. Some platforms have their own
    Trusted Boot implementation and only require the Secure Monitor
    functionality provided by ARM Trusted Firmware.

*   Isolation of memory accessible by the secure world from the normal world
    through programming of a TrustZone controller.

For a full description of functionality and implementation details, please
see the [Firmware Design] and supporting documentation. The [Change Log]
provides details of changes made since the last release.
76
77
78
79
80
81

### 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
82
*   `Foundation_v8` (Version 2.0, Build 0.8.5206)
83
84
85
86
*   `FVP_Base_AEMv8A-AEMv8A` (Version 5.6, Build 0.8.5602)
*   `FVP_Base_Cortex-A57x4-A53x4` (Version 5.6, Build 0.8.5602)
*   `FVP_Base_Cortex-A57x1-A53x1` (Version 5.6, Build 0.8.5602)
*   `FVP_Base_Cortex-A57x2-A53x4` (Version 5.6, Build 0.8.5602)
87

Dan Handley's avatar
Dan Handley committed
88
89
The Foundation FVP can be downloaded free of charge. The Base FVPs can be
licensed from ARM: see [www.arm.com/fvp] [FVP].
90
91
92

### Still to Come

93
*   Support for ARMv8-A development board as a reference platform.
94

95
96
97
*   Complete Trusted Boot implementation.

*   Complete implementation of the [PSCI] specification.
98

99
*   Support for alternative types of Secure-EL1 Payloads.
100
101
102
103

*   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
104
Log] and the [GitHub issue tracker].
105
106
107
108
109
110
111
112
113
114
115


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
116
117
See the [Firmware Design] for information on how the ARM Trusted Firmware works.

118
See the [Porting Guide] as well for information about how to use this
119
software on another ARMv8-A platform.
120

Dan Handley's avatar
Dan Handley committed
121
See the [Contributing Guidelines] for information on how to contribute to this
122
project and the [Acknowledgments] file for a list of contributors to the
Dan Handley's avatar
Dan Handley committed
123
124
project.

125
126
127
### Feedback and support

ARM welcomes any feedback on the Trusted Firmware. Please send feedback using
Dan Handley's avatar
Dan Handley committed
128
the [GitHub issue tracker].
129
130
131
132
133
134

ARM licensees may contact ARM directly via their partner managers.


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

135
_Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved._
136
137


Dan Handley's avatar
Dan Handley committed
138
139
[License]:                  ./license.md "BSD license for ARM Trusted Firmware"
[Contributing Guidelines]:  ./contributing.md "Guidelines for contributors"
140
[Acknowledgments]:          ./acknowledgements.md "Contributor acknowledgments"
Dan Handley's avatar
Dan Handley committed
141
142
[Change Log]:               ./docs/change-log.md
[User Guide]:               ./docs/user-guide.md
Dan Handley's avatar
Dan Handley committed
143
[Firmware Design]:          ./docs/firmware-design.md
Dan Handley's avatar
Dan Handley committed
144
[Porting Guide]:            ./docs/porting-guide.md
145

Dan Handley's avatar
Dan Handley committed
146
147
148
149
150
151
[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"
[GitHub issue tracker]:  https://github.com/ARM-software/tf-issues/issues