readme.md 6.92 KB
Newer Older
Achin Gupta's avatar
Achin Gupta committed
1
ARM Trusted Firmware - version 1.1
2
3
4
==================================

ARM Trusted Firmware provides a reference implementation of secure world
Achin Gupta's avatar
Achin Gupta committed
5
6
7
8
software for [ARMv8-A], including Exception Level 3 (EL3) software. This release
provides complete support for version 0.2 of the [PSCI] specification, initial
support for the new version 1.0 of that specification, and prototype support for
the Trusted Board Boot Requirements specification.
9
10
11
12

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
13
possible the code is designed for reuse or porting to other ARMv8-A model and
14
15
16
17
hardware platforms.

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


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

32
33
34
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.
35
36
37

### Functionality

Achin Gupta's avatar
Achin Gupta committed
38
*   Prototype implementation of a subset of the Trusted Board Boot Requirements
Dan Handley's avatar
Dan Handley committed
39
40
    Platform Design Document (PDD). This includes packaging the various firmware
    images into a Firmware Image Package (FIP) to be loaded from non-volatile
Achin Gupta's avatar
Achin Gupta committed
41
42
    storage, and a prototype of authenticated boot using key certificates stored
    in the FIP.
43
44
45
46
47
48
49
50

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

Achin Gupta's avatar
Achin Gupta committed
51
*   Starts the normal world at the Exception Level and Register Width specified
Dan Handley's avatar
Dan Handley committed
52
    by the platform port. Typically this is AArch64 EL2 if available.
53
54

*   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
    for the Secondary CPU Boot, CPU Hotplug, CPU Idle and System Shutdown/Reset
    use-cases.
Dan Handley's avatar
Dan Handley committed
60
61

*   A Test Secure-EL1 Payload and Dispatcher to demonstrate Secure Monitor
62
63
64
65
    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.
66

67
68
69
70
71
72
73
*   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.

Dan Handley's avatar
Dan Handley committed
74
75
76
77
*   Support for CPU specific reset sequences, power down sequences and register
    dumping during crash reporting. The CPU specific reset sequences include
    support for errata workarounds.

78
79
80
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.
81
82
83

### Platforms

Dan Handley's avatar
Dan Handley committed
84
85
86
87
88
89
This release of the Trusted Firmware has been tested on Revision B of the
[Juno ARM Development Platform] [Juno] with Version r0p0-00rel7 of the
[ARM SCP Firmware] [SCP download].

The Trusted Firmware has also been tested on the 64-bit Linux versions of the
following ARM [FVP]s:
90

Achin Gupta's avatar
Achin Gupta committed
91
92
93
94
95
*   `Foundation_Platform` (Version 9.1, Build 9.1.33)
*   `FVP_Base_AEMv8A-AEMv8A` (Version 6.2, Build 0.8.6202)
*   `FVP_Base_Cortex-A57x4-A53x4` (Version 6.2, Build 0.8.6202)
*   `FVP_Base_Cortex-A57x1-A53x1` (Version 6.2, Build 0.8.6202)
*   `FVP_Base_Cortex-A57x2-A53x4` (Version 6.2, Build 0.8.6202)
96

Dan Handley's avatar
Dan Handley committed
97
98
The Foundation FVP can be downloaded free of charge. The Base FVPs can be
licensed from ARM: see [www.arm.com/fvp] [FVP].
99
100
101

### Still to Come

Achin Gupta's avatar
Achin Gupta committed
102
*   Complete and more flexible Trusted Board Boot implementation.
103

Achin Gupta's avatar
Achin Gupta committed
104
*   Complete implementation of the [PSCI] v1.0 specification.
105

106
*   Support for alternative types of Secure-EL1 Payloads.
107

Achin Gupta's avatar
Achin Gupta committed
108
*   Extending the GICv3 support to the secure world.
109

Dan Handley's avatar
Dan Handley committed
110
111
*   Support for new System IP devices.

112
For a full list of detailed issues in the current code, please see the [Change
Dan Handley's avatar
Dan Handley committed
113
Log] and the [GitHub issue tracker].
114
115
116
117
118
119
120
121
122
123
124


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

127
See the [Porting Guide] as well for information about how to use this
128
software on another ARMv8-A platform.
129

Dan Handley's avatar
Dan Handley committed
130
See the [Contributing Guidelines] for information on how to contribute to this
131
project and the [Acknowledgments] file for a list of contributors to the
Dan Handley's avatar
Dan Handley committed
132
133
project.

134
135
136
### Feedback and support

ARM welcomes any feedback on the Trusted Firmware. Please send feedback using
Dan Handley's avatar
Dan Handley committed
137
the [GitHub issue tracker].
138
139
140
141
142
143

ARM licensees may contact ARM directly via their partner managers.


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

Achin Gupta's avatar
Achin Gupta committed
144
_Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved._
145
146


Dan Handley's avatar
Dan Handley committed
147
148
[License]:                  ./license.md "BSD license for ARM Trusted Firmware"
[Contributing Guidelines]:  ./contributing.md "Guidelines for contributors"
149
[Acknowledgments]:          ./acknowledgements.md "Contributor acknowledgments"
Dan Handley's avatar
Dan Handley committed
150
151
[Change Log]:               ./docs/change-log.md
[User Guide]:               ./docs/user-guide.md
Dan Handley's avatar
Dan Handley committed
152
[Firmware Design]:          ./docs/firmware-design.md
Dan Handley's avatar
Dan Handley committed
153
[Porting Guide]:            ./docs/porting-guide.md
154

Dan Handley's avatar
Dan Handley committed
155
156
[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"
Dan Handley's avatar
Dan Handley committed
157
158
[Juno]:                  http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php "Juno ARM Development Platform"
[SCP download]:          https://silver.arm.com/download/download.tm?pv=1764630
Achin Gupta's avatar
Achin Gupta committed
159
[PSCI]:                  http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf "Power State Coordination Interface PDD (ARM DEN 0022C)"
Dan Handley's avatar
Dan Handley committed
160
161
162
[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