Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 1 | ################## |
| 2 | Trusted Firmware M |
| 3 | ################## |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 4 | |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 5 | Trusted Firmware-M (TF-M) implements the Secure Processing Environment (SPE) |
| 6 | for Armv8-M, Armv8.1-M architectures (e.g. the `Cortex-M33`_, `Cortex-M23`_, |
Anton Komlev | 44b7b0a | 2022-05-19 15:52:44 +0100 | [diff] [blame] | 7 | `Cortex-M55`_, `Cortex-M85`_ processors) and dual-core platforms. |
| 8 | It is the platform security architecture reference implementation aligning with |
| 9 | PSA Certified guidelines, enabling chips, Real Time Operating Systems and |
| 10 | devices to become PSA Certified. |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 11 | |
| 12 | TF-M relies on an isolation boundary between the Non-secure Processing |
| 13 | Environment (NSPE) and the Secure Processing Environment (SPE). It can but is |
| 14 | not limited to using the `Arm TrustZone technology`_ on Armv8-M and Armv8.1-M |
| 15 | architectures. In pre-Armv8-M architectures physical core isolation is required. |
| 16 | |
Anton Komlev | 2cd9153 | 2022-11-17 13:36:55 +0000 | [diff] [blame] | 17 | **TF-M consists of:** |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 18 | |
Anton Komlev | 2cd9153 | 2022-11-17 13:36:55 +0000 | [diff] [blame] | 19 | - Secure Boot to authenticate NSPE and SPE images |
| 20 | - TF-M Core for controlling the isolation, communication |
| 21 | and execution within SPE and with NSPE |
| 22 | - Crypto, Internal Trusted Storage (ITS), Protected Storage (PS), |
| 23 | Firmware Update and Attestation secure services |
| 24 | |
Anton Komlev | 5bc799f | 2022-11-10 18:22:48 +0000 | [diff] [blame] | 25 | TF-M implements `PSA-FF-M`_ defined IPC and SFN mechanisms to allow communication |
Anton Komlev | 2cd9153 | 2022-11-17 13:36:55 +0000 | [diff] [blame] | 26 | between isolated firmware partitions. TF-M is highly configurable allowing users |
| 27 | to only include the required secure services and features. Project provides |
Anton Komlev | 5bc799f | 2022-11-10 18:22:48 +0000 | [diff] [blame] | 28 | :ref:`Base_configuration` build with just TF-M core and platform drivers and 4 predefined |
Anton Komlev | 2cd9153 | 2022-11-17 13:36:55 +0000 | [diff] [blame] | 29 | configurations known as :ref:`tf-m_profiles`. TF-M Profiles or TF-M base can |
| 30 | be configured to include required services and features as described in the |
Kevin Peng | 75b0b76 | 2022-10-25 18:00:27 +0800 | [diff] [blame] | 31 | :ref:`tf-m_configuration` section. |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 32 | |
| 33 | .. figure:: readme_tfm_v8.png |
| 34 | :scale: 65 % |
| 35 | :align: center |
| 36 | |
Minos Galanakis | 01da63f | 2020-09-15 17:38:59 +0100 | [diff] [blame] | 37 | FF-M compliant design with TF-M |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 38 | |
| 39 | Applications and Libraries in the Non-secure Processing Environment can |
| 40 | utilize these secure services with a standardized set of PSA Functional APIs. |
| 41 | Applications running on Cortex-M devices can leverage TF-M services to ensure |
| 42 | secure connection with edge gateways and IoT cloud services. It also protects |
| 43 | the critical security assets such as sensitive data, keys and certificates on |
| 44 | the platform. TF-M is supported on several Cortex-M based |
Anton Komlev | de14f45 | 2022-06-19 15:45:26 +0100 | [diff] [blame] | 45 | :doc:`Microcontrollers </platform/index>` and Real Time Operating |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 46 | Systems (RTOS). |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 47 | |
| 48 | Terms ``TFM`` and ``TF-M`` are commonly used in documents and code and both |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame] | 49 | refer to ``Trusted Firmware M.`` :doc:`Glossary </glossary>` has the list |
Summer Qin | abf6698 | 2021-04-06 17:22:15 +0800 | [diff] [blame] | 50 | of terms and abbreviations. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 51 | |
Awadhy Mohammed | 42f0522 | 2023-07-13 10:18:03 +0100 | [diff] [blame] | 52 | ************ |
| 53 | Repositories |
| 54 | ************ |
| 55 | |
| 56 | TF-M is comprised of multiple repositories that supplement each other in making the project both customisable and maintainable. |
| 57 | |
| 58 | .. list-table:: TF-M Repositories |
| 59 | :widths: auto |
| 60 | :header-rows: 1 |
| 61 | |
| 62 | * - **Repository** |
| 63 | - **Description** |
| 64 | * - `trusted-firmware-m <https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/tree/>`_ |
| 65 | - Software implementation of TF-M with documentation and essential tools |
| 66 | * - `tf-m-tests <https://git.trustedfirmware.org/TF-M/tf-m-tests.git/tree/>`_ |
| 67 | - Tests that focus on the functionalities of TF-M components |
| 68 | * - `tf-m-tools <https://git.trustedfirmware.org/TF-M/tf-m-tools.git/tree/>`_ |
| 69 | - Non essential tools used for testing and verification of TF-M |
| 70 | * - `tf-m-extras <https://git.trustedfirmware.org/TF-M/tf-m-extras.git/tree/>`_ |
| 71 | - Extension of the main repository to host examples, demonstrations, third-party modules etc |
| 72 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 73 | ####### |
| 74 | License |
| 75 | ####### |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame] | 76 | The software is provided under a BSD-3-Clause :doc:`License </contributing/lic>`. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 77 | Contributions to this project are accepted under the same license with developer |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame] | 78 | sign-off as described in the :doc:`Contributing Guidelines </contributing/contributing_process>`. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 79 | |
| 80 | This project contains code from other projects as listed below. The code from |
Anton Komlev | 5fd9943 | 2022-11-26 22:08:05 +0000 | [diff] [blame] | 81 | external projects is limited to ``bl2``, ``lib`` and ``platform`` |
Ken Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 82 | folders. The original license text is included in those source files. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 83 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 84 | - The ``bl2`` folder contains files imported from MCUBoot project and the files |
| 85 | have Apache 2.0 license. |
Anton Komlev | a36614c | 2023-02-27 12:18:19 +0000 | [diff] [blame] | 86 | - The ``lib/ext`` folder may contain 3rd party projects and files with |
| 87 | diverse licenses. Here are some that are different from the BSD-3-Clause and |
| 88 | may be a part of the runtime image. The source code for these projects is |
| 89 | fetched from upstream at build time only. |
| 90 | |
| 91 | - ``CMSIS_5`` - Apache 2.0 license |
| 92 | - ``mbedcrypto`` - `Apache 2.0 license MbedTLS |
| 93 | <https://github.com/Mbed-TLS/mbedtls/blob/development/LICENSE>`_ |
| 94 | - ``mcuboot`` - `Apache 2.0 license MCUBoot |
| 95 | <https://github.com/mcu-tools/mcuboot/blob/main/LICENSE>`_ |
| 96 | - ``qcbor`` - `Modified BSD-3-Clause license |
| 97 | <https://github.com/laurencelundblade/QCBOR#copyright-and-license>`_ |
| 98 | - ``tf-m-extras`` - Set of additional components. Please check individually in |
| 99 | `tf-m-extras repository <https://git.trustedfirmware.org/TF-M/tf-m-extras.git/tree/>`_ |
| 100 | |
Ken Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 101 | - The ``platform`` folder currently contains platforms support imported from |
| 102 | the external project and the files may have different licenses. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 103 | |
Anton Komlev | de14f45 | 2022-06-19 15:45:26 +0100 | [diff] [blame] | 104 | .. include:: /platform/platform_introduction.rst |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 105 | |
Anton Komlev | de14f45 | 2022-06-19 15:45:26 +0100 | [diff] [blame] | 106 | The document :doc:`Supported Platforms </platform/index>` lists the details. |
Mark Horvath | 9a5a9b9 | 2019-11-29 15:57:55 +0100 | [diff] [blame] | 107 | |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 108 | ######################### |
| 109 | Release Notes and Process |
| 110 | ######################### |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame] | 111 | The :doc:`Release Cadence and Process </releases/release_process>` provides |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 112 | release cadence and process information. |
Mark Horvath | 9a5a9b9 | 2019-11-29 15:57:55 +0100 | [diff] [blame] | 113 | |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame] | 114 | The :doc:`Releases </releases/index>` provides details of |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 115 | major features of the release and platforms supported. |
Soby Mathew | 175efe1 | 2020-07-03 14:33:11 +0100 | [diff] [blame] | 116 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 117 | #################### |
Anton Komlev | 91281f0 | 2022-04-22 09:24:20 +0100 | [diff] [blame] | 118 | Feedback and Support |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 119 | #################### |
Minos Galanakis | fc6804e | 2020-03-10 11:03:34 +0000 | [diff] [blame] | 120 | For this release, feedback is requested via email to |
| 121 | `tf-m@lists.trustedfirmware.org <tf-m@lists.trustedfirmware.org>`__. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 122 | |
Anton Komlev | fb83540 | 2022-08-09 13:04:04 +0100 | [diff] [blame] | 123 | A bi-weekly technical forum is available for discussion on any technical topics |
| 124 | online. Welcome to join `TF-M Forum <https://www.trustedfirmware.org/meetings/tf-m-technical-forum>`__. |
| 125 | |
Anton Komlev | 44b7b0a | 2022-05-19 15:52:44 +0100 | [diff] [blame] | 126 | .. _Cortex-M33: https://developer.arm.com/Processors/Cortex-M33 |
| 127 | .. _Cortex-M23: https://developer.arm.com/Processors/Cortex-M23 |
| 128 | .. _Cortex-M55: https://developer.arm.com/Processors/Cortex-M55 |
| 129 | .. _Cortex-M85: https://developer.arm.com/Processors/Cortex-M85 |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 130 | .. _PSA Certified: https://www.psacertified.org/about/developing-psa-certified/ |
| 131 | .. _Arm TrustZone technology: https://developer.arm.com/ip-products/security-ip/trustzone/trustzone-for-cortex-m |
Anton Komlev | 5bc799f | 2022-11-10 18:22:48 +0000 | [diff] [blame] | 132 | .. _PSA-FF-M: https://www.arm.com/architecture/security-features/platform-security |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 133 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 134 | -------------- |
| 135 | |
Anton Komlev | fb83540 | 2022-08-09 13:04:04 +0100 | [diff] [blame] | 136 | *Copyright (c) 2017-2022, Arm Limited. All rights reserved.* |