blob: 2e67961a4ee86a0097bd8f2efd869b7acd940cea [file] [log] [blame]
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +00001##################
2Trusted Firmware M
3##################
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +00004
Minos Galanakisa8f9d102020-07-06 16:09:45 +01005Trusted Firmware-M (TF-M) implements the Secure Processing Environment (SPE)
6for Armv8-M, Armv8.1-M architectures (e.g. the `Cortex-M33`_, `Cortex-M23`_,
Summer Qina1f68962021-04-08 16:31:27 +08007`Cortex-M55`_ processors) and dual-core platforms. It is the platform security
8architecture reference implementation aligning with PSA Certified guidelines,
9enabling chips, Real Time Operating Systems and devices to become PSA Certified.
Minos Galanakisa8f9d102020-07-06 16:09:45 +010010
11TF-M relies on an isolation boundary between the Non-secure Processing
12Environment (NSPE) and the Secure Processing Environment (SPE). It can but is
13not limited to using the `Arm TrustZone technology`_ on Armv8-M and Armv8.1-M
14architectures. In pre-Armv8-M architectures physical core isolation is required.
15
16**Trusted Firmware-M consists of:**
17
18- Secure Boot to authenticate integrity of NSPE and SPE images
19- TF-M Core responsible for controlling the isolation, communication and
20 execution within SPE and with NSPE
21- Crypto, Internal Trusted Storage (ITS), Protected Storage (PS) and
22 Attestation secure services
23
24.. figure:: readme_tfm_v8.png
25 :scale: 65 %
26 :align: center
27
Minos Galanakis01da63f2020-09-15 17:38:59 +010028 FF-M compliant design with TF-M
Minos Galanakisa8f9d102020-07-06 16:09:45 +010029
30Applications and Libraries in the Non-secure Processing Environment can
31utilize these secure services with a standardized set of PSA Functional APIs.
32Applications running on Cortex-M devices can leverage TF-M services to ensure
33secure connection with edge gateways and IoT cloud services. It also protects
34the critical security assets such as sensitive data, keys and certificates on
35the platform. TF-M is supported on several Cortex-M based
36:doc:`Microcontrollers </platform/ext/index>` and Real Time Operating
37Systems (RTOS).
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000038
39Terms ``TFM`` and ``TF-M`` are commonly used in documents and code and both
Summer Qinabf66982021-04-06 17:22:15 +080040refer to ``Trusted Firmware M.`` :doc:`Glossary </docs/glossary>` has the list
41of terms and abbreviations.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000042
43#######
44License
45#######
Minos Galanakise4094012020-06-12 14:25:34 +010046The software is provided under a BSD-3-Clause :doc:`License </docs/contributing/lic>`.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000047Contributions to this project are accepted under the same license with developer
Summer Qinabf66982021-04-06 17:22:15 +080048sign-off as described in the :doc:`Contributing Guidelines </docs/contributing/contributing_process>`.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000049
50This project contains code from other projects as listed below. The code from
Ken Liufc750062020-05-09 15:16:20 +080051external projects is limited to ``app``, ``bl2``, ``lib`` and ``platform``
52folders. The original license text is included in those source files.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000053
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000054- The ``app`` folder contains files imported from CMSIS_5 project and the files
55 have Apache 2.0 license.
56- The ``bl2`` folder contains files imported from MCUBoot project and the files
57 have Apache 2.0 license.
Ken Liufc750062020-05-09 15:16:20 +080058- The ``lib`` folder may contain 3rd party files with diverse licenses.
59- The ``platform`` folder currently contains platforms support imported from
60 the external project and the files may have different licenses.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000061
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000062###############
63Getting Started
64###############
65
66************
67Prerequisite
68************
Minos Galanakis01da63f2020-09-15 17:38:59 +010069Trusted Firmware M provides a reference implementation of platform security
70architecture reference implementation aligning with PSA Certified guidelines.
71It is assumed that the reader is familiar with specifications can be found at
Ken Liufc750062020-05-09 15:16:20 +080072`Platform Security Architecture Resources <https://developer.arm.com/architectures/security-architectures/platform-security-architecture>`__.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000073
74The current TF-M implementation specifically targets TrustZone for ARMv8-M so a
75good understanding of the v8-M architecture is also necessary. A good place to
76get started with ARMv8-M is
Leonardo Sandovale02ce632021-02-03 16:30:41 -060077`developer.arm.com <https://developer.arm.com/architectures/cpu-architecture/m-profile>`__.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000078
Summer Qina1f68962021-04-08 16:31:27 +080079**************************
80Build and run instructions
81**************************
Ken Liufc750062020-05-09 15:16:20 +080082Trusted Firmware M source code is available on
Minos Galanakis0f39fa52020-06-08 16:53:53 +010083`git.trustedfirmware.org <https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/>`__.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000084
85To build & run TF-M:
86
Minos Galanakise4094012020-06-12 14:25:34 +010087 - Follow the :doc:`SW requirements guide </docs/getting_started/tfm_sw_requirement>`
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000088 to set up your environment.
89 - Follow the
Summer Qinab1dd992021-05-25 13:58:55 +080090 :doc:`Build instructions </docs/technical_references/instructions/tfm_build_instruction>`
91 to compile and build the TF-M source.
Summer Qin0de91c92021-06-17 16:30:18 +080092 - Follow the :doc:`Run TF-M examples on Arm platforms </docs/technical_references/instructions/run_tfm_examples_on_arm_platforms>`
Summer Qinab1dd992021-05-25 13:58:55 +080093 for information on running the example.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000094
95To port TF-M to a another system or OS, follow the
Summer Qinabf66982021-04-06 17:22:15 +080096:doc:`OS Integration Guide </docs/integration_guide/tfm_integration_guide>`
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000097
Summer Qinabf66982021-04-06 17:22:15 +080098:doc:`Contributing Guidelines </docs/contributing/contributing_process>` contains guidance on how to
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +000099contribute to this project.
100
Tamas Banab1c8282020-04-29 10:00:04 +0100101###################
102Platforms supported
103###################
Summer Qina1f68962021-04-08 16:31:27 +0800104The document :doc:`Supported Platforms </platform/ext/index>` lists the details.
Mark Horvath9a5a9b92019-11-29 15:57:55 +0100105
Summer Qina1f68962021-04-08 16:31:27 +0800106#########################
107Release Notes and Process
108#########################
109The :doc:`Release Cadence and Process </docs/releases/release_process>` provides
110release cadence and process information.
Mark Horvath9a5a9b92019-11-29 15:57:55 +0100111
Summer Qina1f68962021-04-08 16:31:27 +0800112The :doc:`Releases </docs/releases/index>` provides details of
113major features of the release and platforms supported.
Soby Mathew175efe12020-07-03 14:33:11 +0100114
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +0000115####################
116Feedback and support
117####################
Minos Galanakisfc6804e2020-03-10 11:03:34 +0000118For this release, feedback is requested via email to
119`tf-m@lists.trustedfirmware.org <tf-m@lists.trustedfirmware.org>`__.
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +0000120
Minos Galanakisa8f9d102020-07-06 16:09:45 +0100121.. _Cortex-M33: https://developer.arm.com/ip-products/processors/cortex-m/cortex-m33
122.. _Cortex-M23: https://developer.arm.com/ip-products/processors/cortex-m/cortex-m23
123.. _Cortex-M55: https://developer.arm.com/ip-products/processors/cortex-m/cortex-m55
124.. _PSA Certified: https://www.psacertified.org/about/developing-psa-certified/
125.. _Arm TrustZone technology: https://developer.arm.com/ip-products/security-ip/trustzone/trustzone-for-cortex-m
126
Galanakis, Minos6ccf7ec2019-11-07 15:15:05 +0000127--------------
128
Hugo L'Hostiscd94d472021-01-27 12:03:21 +0000129*Copyright (c) 2017-2021, Arm Limited. All rights reserved.*