blob: 728b12fdd884051f047f3c15a03c965ae18a604b [file] [log] [blame]
Anton Komleve69cf682023-01-31 11:59:25 +00001.. _source_structure:
2
3################
4Source Structure
5################
6
7TF-M is designed to provide a user-friendly source structure to ease
8integration and service development. This document introduces the source
9structure and its design intention of TF-M. Additionally, the folders below are
Antonio de Angelis9d496a52025-01-07 21:18:00 +000010important for TF-M integration and described in a separate documents:
Anton Komleve69cf682023-01-31 11:59:25 +000011
12.. toctree::
13 :maxdepth: 1
14
15 Details for the /platform folder <platform_folder.rst>
16 Details for the /platform/ext folder <platform_ext_folder.rst>
17
18/ (TF-M root)
19=============
20This table describes the structure under the root folder with part of
21possible folders.
22
23========================= ====================================
24Folder name Description
25========================= ====================================
26bl1 The 1st stage immutable bootloader
27bl2 MCUBoot based 2nd stage bootloader
28cmake Cmake files of the build system
29config Configuration system files
30docs The documentation
31interface RoT service API for client calls
32lib The 3rd party libraries
33`platform`_ Platform intermedia files
34`secure_fw`_ The secure firmware
35tools Tools in scripts for building
36========================= ====================================
37
38platform
39========
40The `platform` folder contains SW ports of all :ref:`supported platforms
41<supported_platforms>` and the files necessary for :ref:`adding a new platform
42<adding_platform>`. Please refer to :ref:`platform folder document
43<platform_folder>` for more information.
44
45========================= =============================================
46Folder name Description
47========================= =============================================
48include HAL and platform public headers
49ext Platform ports and related files
50========================= =============================================
51
52platform/ext
53------------
54This folder can include imported files licensed differently from TF-M's
55BSD-3 license. More details are in the dedicated document :ref:`platform_ext_folder`.
56
57========================= =============================================
58Folder name Description
59========================= =============================================
60accelerator Supported Crypto HW accelerators
61cmsis A copy of essential CMSIS headers
62common Common HAL implementation
63driver Driver headers for porting
64target/<vendor> Vendor specific folders with ported platforms
65========================= =============================================
66
67Each `vendor` is assigned one folder for usage under `target/`.
68A `vendor` contributes platform's ports and manages the structure inside it.
69
70secure_fw
71=========
72This folder contains components needed by secure firmware and the exported
73interfaces for application, service development and HAL integration.
74
75========================= =============================================
76Folder name Description
77========================= =============================================
78include Public headers of `secure_fw`
79partitions Default services and SPRTL
80spm PSA FF-M SPM implementation
81shared Sources shared out of SPRTL
82========================= =============================================
83
84The shared sources can be referenced by the building system out of SPRTL.
85Generally, they are runtime and PSA APIs.
86
87secure_fw/include
88-----------------
89This folder holds public headers for external references by clients,
90services and platforms. Avoid putting private headers, not referenced by
91other modules in this `include` folder.
92
93secure_fw/partitions
94--------------------
95This folder contains default services implemented as partitions and runtime
96utilities used and provided by TF-M.
97
98============================== =============================================
99Folder name Description
100============================== =============================================
101lib/runtime The SPRTL sources and intermedia files
102<partition_x> Sources of `partition_x`
103<partition_x>/include RoT Service API headers of `partition_x`
104<partition_y> Sources of `partition_y`
105<partition_y>/include RoT Service API headers of `partition_y`
106============================== =============================================
107
108Here `partition_x` and `partition_y` are examples of RoT services without
109detailed structure of them.
110
111secure_fw/spm
112-------------
113The SPM is the core component to provide a mechanism for providing secure
114services complied with PSA FF-M.
115
116============================== =============================================
117Folder name Description
118============================== =============================================
119include SPM public headers.
Ken Liu44274212023-03-17 15:22:04 +0800120core SPM base functionalities
121\*ext Extended SPM functionalities
Anton Komleve69cf682023-01-31 11:59:25 +0000122============================== =============================================
123
124--------------
125
126*Copyright (c) 2020-2023, Arm Limited. All rights reserved.*