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`_, |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 7 | `Cortex-M55`_ processors) and dual-core platforms. It is the platform security |
| 8 | architecture reference implementation aligning with PSA Certified guidelines, |
| 9 | enabling chips, Real Time Operating Systems and devices to become PSA Certified. |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 10 | |
| 11 | TF-M relies on an isolation boundary between the Non-secure Processing |
| 12 | Environment (NSPE) and the Secure Processing Environment (SPE). It can but is |
| 13 | not limited to using the `Arm TrustZone technology`_ on Armv8-M and Armv8.1-M |
| 14 | architectures. 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 Galanakis | 01da63f | 2020-09-15 17:38:59 +0100 | [diff] [blame] | 28 | FF-M compliant design with TF-M |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 29 | |
| 30 | Applications and Libraries in the Non-secure Processing Environment can |
| 31 | utilize these secure services with a standardized set of PSA Functional APIs. |
| 32 | Applications running on Cortex-M devices can leverage TF-M services to ensure |
| 33 | secure connection with edge gateways and IoT cloud services. It also protects |
| 34 | the critical security assets such as sensitive data, keys and certificates on |
| 35 | the platform. TF-M is supported on several Cortex-M based |
| 36 | :doc:`Microcontrollers </platform/ext/index>` and Real Time Operating |
| 37 | Systems (RTOS). |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 38 | |
| 39 | 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^] | 40 | refer to ``Trusted Firmware M.`` :doc:`Glossary </glossary>` has the list |
Summer Qin | abf6698 | 2021-04-06 17:22:15 +0800 | [diff] [blame] | 41 | of terms and abbreviations. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 42 | |
| 43 | ####### |
| 44 | License |
| 45 | ####### |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 46 | 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] | 47 | Contributions to this project are accepted under the same license with developer |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 48 | sign-off as described in the :doc:`Contributing Guidelines </contributing/contributing_process>`. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 49 | |
| 50 | This project contains code from other projects as listed below. The code from |
Ken Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 51 | external projects is limited to ``app``, ``bl2``, ``lib`` and ``platform`` |
| 52 | folders. The original license text is included in those source files. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 53 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 54 | - 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 Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 58 | - 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, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 61 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 62 | ############### |
| 63 | Getting Started |
| 64 | ############### |
| 65 | |
| 66 | ************ |
| 67 | Prerequisite |
| 68 | ************ |
Minos Galanakis | 01da63f | 2020-09-15 17:38:59 +0100 | [diff] [blame] | 69 | Trusted Firmware M provides a reference implementation of platform security |
| 70 | architecture reference implementation aligning with PSA Certified guidelines. |
| 71 | It is assumed that the reader is familiar with specifications can be found at |
Ken Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 72 | `Platform Security Architecture Resources <https://developer.arm.com/architectures/security-architectures/platform-security-architecture>`__. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 73 | |
| 74 | The current TF-M implementation specifically targets TrustZone for ARMv8-M so a |
| 75 | good understanding of the v8-M architecture is also necessary. A good place to |
| 76 | get started with ARMv8-M is |
Leonardo Sandoval | e02ce63 | 2021-02-03 16:30:41 -0600 | [diff] [blame] | 77 | `developer.arm.com <https://developer.arm.com/architectures/cpu-architecture/m-profile>`__. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 78 | |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 79 | ************************** |
| 80 | Build and run instructions |
| 81 | ************************** |
Ken Liu | fc75006 | 2020-05-09 15:16:20 +0800 | [diff] [blame] | 82 | Trusted Firmware M source code is available on |
Minos Galanakis | 0f39fa5 | 2020-06-08 16:53:53 +0100 | [diff] [blame] | 83 | `git.trustedfirmware.org <https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/>`__. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 84 | |
| 85 | To build & run TF-M: |
| 86 | |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 87 | - Follow the :doc:`TF-M getting started </getting_started/tfm_getting_started>` |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 88 | to set up your environment. |
| 89 | - Follow the |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 90 | :doc:`Build instructions </technical_references/instructions/tfm_build_instruction>` |
Summer Qin | ab1dd99 | 2021-05-25 13:58:55 +0800 | [diff] [blame] | 91 | to compile and build the TF-M source. |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 92 | - Follow the :doc:`Run TF-M examples on Arm platforms </technical_references/instructions/run_tfm_examples_on_arm_platforms>` |
Summer Qin | ab1dd99 | 2021-05-25 13:58:55 +0800 | [diff] [blame] | 93 | for information on running the example. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 94 | |
| 95 | To port TF-M to a another system or OS, follow the |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 96 | :doc:`OS Integration Guide </integration_guide/tfm_integration_guide>` |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 97 | |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 98 | :doc:`Contributing Guidelines </contributing/contributing_process>` contains guidance on how to |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 99 | contribute to this project. |
| 100 | |
Tamas Ban | ab1c828 | 2020-04-29 10:00:04 +0100 | [diff] [blame] | 101 | ################### |
| 102 | Platforms supported |
| 103 | ################### |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 104 | The document :doc:`Supported Platforms </platform/ext/index>` lists the details. |
Mark Horvath | 9a5a9b9 | 2019-11-29 15:57:55 +0100 | [diff] [blame] | 105 | |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 106 | ######################### |
| 107 | Release Notes and Process |
| 108 | ######################### |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 109 | The :doc:`Release Cadence and Process </releases/release_process>` provides |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 110 | release cadence and process information. |
Mark Horvath | 9a5a9b9 | 2019-11-29 15:57:55 +0100 | [diff] [blame] | 111 | |
Anton Komlev | 3356ba3 | 2022-03-31 22:02:11 +0100 | [diff] [blame^] | 112 | The :doc:`Releases </releases/index>` provides details of |
Summer Qin | a1f6896 | 2021-04-08 16:31:27 +0800 | [diff] [blame] | 113 | major features of the release and platforms supported. |
Soby Mathew | 175efe1 | 2020-07-03 14:33:11 +0100 | [diff] [blame] | 114 | |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 115 | #################### |
| 116 | Feedback and support |
| 117 | #################### |
Minos Galanakis | fc6804e | 2020-03-10 11:03:34 +0000 | [diff] [blame] | 118 | For this release, feedback is requested via email to |
| 119 | `tf-m@lists.trustedfirmware.org <tf-m@lists.trustedfirmware.org>`__. |
Galanakis, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 120 | |
Minos Galanakis | a8f9d10 | 2020-07-06 16:09:45 +0100 | [diff] [blame] | 121 | .. _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, Minos | 6ccf7ec | 2019-11-07 15:15:05 +0000 | [diff] [blame] | 127 | -------------- |
| 128 | |
Hugo L'Hostis | cd94d47 | 2021-01-27 12:03:21 +0000 | [diff] [blame] | 129 | *Copyright (c) 2017-2021, Arm Limited. All rights reserved.* |