blob: a36dc83fc98fa79661b1ec2476e16e3145490dab [file] [log] [blame]
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +00001##################
2Trusted Firmware M
3##################
4Trusted Firmware M provides a reference implementation of secure world software
5for ARMv8-M.
6
7.. Note::
8 The software implementation contained in this project is designed to be a
9 reference implementation of the Platform Security Architecture (PSA).
10 It currently does not implement all the features of that architecture,
11 however we expect the code to evolve along with the specifications.
12
13Terms ``TFM`` and ``TF-M`` are commonly used in documents and code and both
14refer to ``Trusted Firmware M.`` :doc:`Glossary </docs/glossary>` has the list
15of terms and abbreviations.
16
17#######
18License
19#######
20The software is provided under a BSD-3-Clause :doc:`License </docs/lic>`.
21Contributions to this project are accepted under the same license with developer
22sign-off as described in the :doc:`Contributing Guidelines </docs/contributing>`.
23
24This project contains code from other projects as listed below. The code from
25external projects is limited to ``app`` and ``platform`` folders.
26The original license text is included in those source files.
27
28- The ``platform`` folder currently contains drivers imported from external
29 project and the files have Apache 2.0 license.
30- The ``app`` folder contains files imported from CMSIS_5 project and the files
31 have Apache 2.0 license.
32- The ``bl2`` folder contains files imported from MCUBoot project and the files
33 have Apache 2.0 license.
34
35.. Note::
36 Any code that has license other than BSD-3-Clause is kept in specific sub
37 folders named ``ext`` so that it can isolated if required.
38
39############
40This Release
41############
42This release includes:
43
44 - A Secure FW with support for PSA Level 1 and 2 isolation on Armv8-M.
45 - The Interfaces exposed by the Secure FW to NS side.
46 - A secure fw model with NS application example.
47 - Secure services running within this SPE:
48
49 - Secure Storage Service (PSA Protected Storage API - 1.0-beta-2)
50 - Attestation (PSA API 1.0-beta-0)
51 - Crypto Service (PSA API 1.0-beta-1)
52 - TF-M Audit Log
53 - Platform Service
54 - Internal Trusted Storage (PSA API 1.0.0)
55
56 - PSA IPC support
57 - Support for Armv8-M mainline and baseline
58 - Testcases running baremetal and with RTX to test the functionality.
59 - BL2 bootloader for image authentication based on SHA256 and RSA-3072
60 digital signature.
61 - Build system based on cmake, supporting armclang and GNU Arm.
62
63*********
64Platforms
65*********
66Current release has been tested on:
67
68 - Cortex M33 based SSE-200 system:
69
70 - `FPGA image loaded on MPS2 board.
71 <https://developer.arm.com/products/system-design/development-boards/cortex-m-prototyping-systems/mps2>`__
72 - `Fast model FVP_MPS2_AEMv8M.
73 <https://developer.arm.com/products/system-design/fixed-virtual-platforms>`__
74 - `Musca-A test chip board.
75 <https://developer.arm.com/products/system-design/development-boards/iot-test-chips-and-boards/musca-a-test-chip-board>`__
76 - `Musca-B1 test chip board.
77 <https://developer.arm.com/products/system-design/development-boards/iot-test-chips-and-boards/musca-b-test-chip-board>`__
78 - `FPGA image loaded on MPS3 board.
79 <https://developer.arm.com/tools-and-software/development-boards/fpga-prototyping-boards/mps3>`__
80
81 - Cortex M23 based IoT Kit system:
82
83 - `FPGA image loaded on MPS2 board.
84 <https://developer.arm.com/products/system-design/development-boards/cortex-m-prototyping-systems/mps2>`__
85
86###############
87Getting Started
88###############
89
90************
91Prerequisite
92************
93Trusted Firmware M provides a reference implementation of PSA specifications.
94It is assumed that the reader is familiar with PSA concepts and terms. PSA
95specifications are currently not available in the public domain.
96
97The current TF-M implementation specifically targets TrustZone for ARMv8-M so a
98good understanding of the v8-M architecture is also necessary. A good place to
99get started with ARMv8-M is
100`developer.arm.com <https://developer.arm.com/technologies/trustzone>`__.
101
102**********************
103Really getting started
104**********************
105Trusted Firmware M source code is available on `git.trustedfirmware.org
106<https://git.trustedfirmware.org/trusted-firmware-m.git/>`__
107
108To build & run TF-M:
109
110 - Follow the :doc:`SW requirements guide </docs/user_guides/tfm_sw_requirement>`
111 to set up your environment.
112 - Follow the
113 :doc:`Build instructions </docs/user_guides/tfm_build_instruction>` to compile
114 and build the TF-M source.
115 - Follow the :doc:`User guide </docs/user_guides/tfm_user_guide>` for information
116 on running the example.
117
118To port TF-M to a another system or OS, follow the
119:doc:`OS Integration Guide </docs/user_guides/tfm_integration_guide>`
120
121Please also see the :doc:`glossary </docs/glossary>` of terms used in the project.
122
123:doc:`Contributing Guidelines </docs/contributing>` contains guidance on how to
124contribute to this project.
125
126Further documents can be found in the ``docs`` folder.
127
128
129####################
130Feedback and support
131####################
132For this early access release, feedback is requested via email to
133`support-trustedfirmware-m@arm.com <support-trustedfirmware-m@arm.com>`__.
134
135###############
136Version history
137###############
138+-------------+--------------+--------------------+
139| Version | Date | Description |
140+=============+==============+====================+
141| v1.0-beta | 2019-02-15 | 1.0-beta release |
142+-------------+--------------+--------------------+
143| v1.0-RC1 | 2019-05-31 | 1.0-RC1 release |
144+-------------+--------------+--------------------+
145| v1.0-RC2 | 2019-10-09 | 1.0-RC2 release |
146+-------------+--------------+--------------------+
147
148--------------
149
150*Copyright (c) 2017-2019, Arm Limited. All rights reserved.*