blob: f2c7b73c0c9d435d4b6ce629bc5aeb9e0f080375 [file] [log] [blame]
Anton Komlev91281f02022-04-22 09:24:20 +01001##################
2First Things First
3##################
4
5************
6Prerequisite
7************
Antonio de Angelis465cc7b2024-06-27 20:19:01 +01008Trusted Firmware M provides a reference implementation of the Platform Security
9Architecture (PSA) specifications, aligning with PSA Certified guidelines.
10It is assumed that the reader is familiar with the specifications that can be
11found
12`here <https://developer.arm.com/architectures/security-architectures/platform-security-architecture>`__.
Anton Komlev91281f02022-04-22 09:24:20 +010013
Antonio de Angelis465cc7b2024-06-27 20:19:01 +010014The current TF-M implementation on Armv8-M leverages TrustZone for Armv8-M so a
Anton Komlev91281f02022-04-22 09:24:20 +010015good understanding of the v8-M architecture is also necessary. A good place to
Antonio de Angelis465cc7b2024-06-27 20:19:01 +010016get started with Armv8-M is
Anton Komlev91281f02022-04-22 09:24:20 +010017`developer.arm.com <https://developer.arm.com/architectures/cpu-architecture/m-profile>`__.
18
19**************************
20Build and run instructions
21**************************
22Trusted Firmware M source code is available on
23`git.trustedfirmware.org <https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/>`__.
24
25To build & run TF-M:
26
27 - Follow the this guide to set up and check your environment.
28 - Follow the
Anton Komlev0dbe8f12022-06-17 16:48:12 +010029 :doc:`Build instructions </building/tfm_build_instruction>`
Anton Komlev91281f02022-04-22 09:24:20 +010030 to compile and build the TF-M source.
Anton Komlev0dbe8f12022-06-17 16:48:12 +010031 - Follow the :doc:`Run TF-M examples on Arm platforms </building/run_tfm_examples_on_arm_platforms>`
Anton Komlev91281f02022-04-22 09:24:20 +010032 for information on running the example.
33
34To port TF-M to a another system or OS, follow the
35:doc:`OS Integration Guide </integration_guide/index>`
36
37:doc:`Contributing Guidelines </contributing/contributing_process>` contains guidance on how to
38contribute to this project.
39
40#########################
41Set up build environments
42#########################
Summer Qin6d5c91c2021-05-24 15:32:44 +080043
44TF-M officially supports a limited set of build environments and setups. In
45this context, official support means that the environments listed below
46are actively used by team members and active developers, hence users should
47be able to recreate the same configurations by following the instructions
48described below. In case of problems, the TF-M team provides support
49only for these environments, but building in other environments can still be
50possible.
51
52The following environments are supported:
53
54.. tabs::
55
56 .. group-tab:: Linux
57
58 1. version supported:
59
60 Ubuntu 18.04 x64+
61
62 2. install dependencies:
63
64 .. code-block:: bash
65
66 sudo apt-get install -y git curl wget build-essential libssl-dev python3 \
67 python3-pip cmake make
68
69 3. verify cmake version:
70
71 .. code-block:: bash
72
73 cmake --version
74
75 .. note::
76
Nik Dewallyae923b12024-06-26 15:30:09 +010077 Please download CMake version 3.21 or later from https://cmake.org/download/.
Summer Qin6d5c91c2021-05-24 15:32:44 +080078
79 4. add CMake path into environment:
80
81 .. code-block:: bash
82
83 export PATH=<CMake path>/bin:$PATH
84
85 .. group-tab:: Windows
86
87 1. version supported:
88
89 Windows 10 x64
90
Nik Dewallyae923b12024-06-26 15:30:09 +010091 2. install dependencies:
Summer Qin6d5c91c2021-05-24 15:32:44 +080092
93 - Git client latest version (https://git-scm.com/download/win)
Nik Dewallyae923b12024-06-26 15:30:09 +010094 - CMake version 3.21 or later (`native Windows version <https://cmake.org/download/>`__)
Summer Qin6d5c91c2021-05-24 15:32:44 +080095 - GNU make (http://gnuwin32.sourceforge.net/packages/make.htm)
96 - Python3 `(native Windows version) <https://www.python.org/downloads/>`__ and
97 the pip package manager (from Python 3.4 it's included)
98
99 3. add CMake path into environment:
100
101 .. code-block:: bash
102
Anton Komlev3c785b22022-06-19 16:08:49 +0100103 set PATH=<CMake_Path>\bin;%PATH%
Summer Qin6d5c91c2021-05-24 15:32:44 +0800104
105###########################
106Install python dependencies
107###########################
108
109Clone the TF-M source code, and then install the TF-M's additional Python
110dependencies.
111
112.. tabs::
113
114 .. group-tab:: Linux
115
116 1. get the TF-M source code:
117
118 .. code-block:: bash
119
Summer Qin6d5c91c2021-05-24 15:32:44 +0800120 git clone https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git
121
122 2. TF-M's ``tools/requirements.txt`` file declares additional Python
123 dependencies. Install them with ``pip3``:
124
125 .. code-block:: bash
126
127 pip3 install --upgrade pip
128 cd trusted-firmware-m
129 pip3 install -r tools/requirements.txt
130
131 .. group-tab:: Windows
132
133 1. get the TF-M source code:
134
135 .. code-block:: bash
136
Summer Qin6d5c91c2021-05-24 15:32:44 +0800137 git clone https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git
138
139 2. TF-M's ``tools/requirements.txt`` file declares additional Python
140 dependencies. Install them with ``pip3``:
141
142 .. code-block:: bash
143
144 cd trusted-firmware-m
145 pip3 install -r tools\requirements.txt
146
147###################
148Install a toolchain
149###################
150
151To compile TF-M code, at least one of the supported compiler toolchains have to
152be available in the build environment. The currently supported compiler
153versions are:
154
Chris Brand4b381f82022-12-01 16:30:23 -0800155 - Arm Compiler v6.13 ~ v6.14, v6.18+
Summer Qin6d5c91c2021-05-24 15:32:44 +0800156
157 .. tabs::
158
159 .. group-tab:: Linux
160
161 - Download the standalone packages from `here <https://developer.arm.com/products/software-development-tools/compilers/arm-compiler/downloads/version-6>`__.
162 - Add Arm Compiler into environment:
163
164 .. code-block:: bash
165
David Hu3aca3ed2022-01-12 20:58:05 +0800166 export PATH=<ARM_CLANG_PATH>/bin:$PATH
Summer Qin6d5c91c2021-05-24 15:32:44 +0800167 export ARM_PRODUCT_PATH=<ARM_CLANG_PATH>/sw/mappings
168
David Hu3aca3ed2022-01-12 20:58:05 +0800169 - Configure proper tool variant and license.
170
Summer Qin6d5c91c2021-05-24 15:32:44 +0800171 .. group-tab:: Windows
172
173 - Download the standalone packages from `here <https://developer.arm.com/products/software-development-tools/compilers/arm-compiler/downloads/version-6>`__.
174 - Add Arm Compiler into environment:
175
176 .. code-block:: bash
177
Anton Komlev3c785b22022-06-19 16:08:49 +0100178 set PATH=<ARM_CLANG_PATH>\bin;%PATH%
Summer Qin6d5c91c2021-05-24 15:32:44 +0800179 set ARM_PRODUCT_PATH=<ARM_CLANG_PATH>\sw\mappings
180
David Hu3aca3ed2022-01-12 20:58:05 +0800181 - Configure proper tool variant and license.
182
Anton Komlevc52e2d92021-11-25 17:20:09 +0000183 .. note::
184
David Hud9baf202022-05-17 15:47:21 +0800185 Arm compiler v6.15 ~ v6.17 may cause MemManage fault.
186 This defect has been fixed since Arm compiler v6.18.
187 See [SDCOMP-59788] in Armclang v6.18 `release note`__ for details.
188
Anton Komlevbd4582c2024-04-04 15:37:43 +0100189 .. __: https://developer.arm.com/documentation/107814/6-18
Anton Komlevc52e2d92021-11-25 17:20:09 +0000190
Summer Qin6d5c91c2021-05-24 15:32:44 +0800191 - GNU Arm compiler v7.3.1+
192
193 .. tabs::
194
195 .. group-tab:: Linux
196
197 - Download the GNU Arm compiler from `here <https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads>`__.
198 - Add GNU Arm into environment:
199
200 .. code-block:: bash
201
202 export PATH=<GNU_ARM_PATH>/bin:$PATH
203
204 .. group-tab:: Windows
205
206 - Download the GNU Arm compiler from `here <https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads>`__.
207 - Add GNU Arm into environment:
208
209 .. code-block:: bash
210
Anton Komlev3c785b22022-06-19 16:08:49 +0100211 set PATH=<GNU_ARM_PATH>\bin;%PATH%
Summer Qin6d5c91c2021-05-24 15:32:44 +0800212
213 .. note::
214
215 GNU Arm compiler version *10-2020-q4-major* has an issue in CMSE
216 support. The bug is reported in `here <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99157>`__.
217 Select other GNU Arm compiler versions instead.
218
219 - IAR Arm compiler v8.42.x, v8.50.x
220
221 .. tabs::
222
223 .. group-tab:: Linux
224
Anton Komlevbd4582c2024-04-04 15:37:43 +0100225 - Download IAR build tools from `here <https://www.iar.com/products/architectures/arm/iar-embedded-workbench-for-arm>`__.
Summer Qin6d5c91c2021-05-24 15:32:44 +0800226 - Add IAR Arm compiler into environment:
227
228 .. code-block:: bash
229
230 export PATH=<IAR_COMPILER_PATH>/bin:$PATH
231
232 .. group-tab:: Windows
233
Anton Komlevbd4582c2024-04-04 15:37:43 +0100234 - Download IAR build tools from `here <https://www.iar.com/products/architectures/arm/iar-embedded-workbench-for-arm>`__.
Summer Qin6d5c91c2021-05-24 15:32:44 +0800235 - Add IAR Arm compiler into environment:
236
237 .. code-block:: bash
238
Anton Komlev3c785b22022-06-19 16:08:49 +0100239 set PATH=<IAR_COMPILER_PATH>\bin;%PATH%
Summer Qin6d5c91c2021-05-24 15:32:44 +0800240
Anton Komlev25afa332024-12-27 15:19:51 +0000241 - LLVM Embedded Toolchain for Arm v18.1.3+
242
243 .. tabs::
244
245 .. group-tab:: Linux
246
247 - Download the LLVM Embedded Toolchain for Arm from `here <https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm>`__.
248 - Add LLVM Embedded into environment:
249
250 .. code-block:: bash
251
252 export PATH=<LLVM_PATH>/bin:$PATH
253
254 .. group-tab:: Windows
255
256 - Download the LLVM Embedded Toolchain for Arm from `here <https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm>`__.
257 - Add LLVM Embedded into environment:
258
259 .. code-block:: bash
260
261 set PATH=<LLVM_PATH>\bin;%PATH%
262
263 .. note::
264
265 Not all platforms support this toolchain. Please refer to a platform documentation or check with the platform owner.
266
Summer Qin6d5c91c2021-05-24 15:32:44 +0800267#############################
268Build AN521 regression sample
269#############################
270
271Here, we take building TF-M for AN521 platform with regression tests using GCC
272as an example:
273
274.. tabs::
275
276 .. group-tab:: Linux
277
Kevin Peng2d170442023-11-20 14:09:07 +0800278 Get the TF-M tests source code:
Summer Qin6d5c91c2021-05-24 15:32:44 +0800279
280 .. code-block:: bash
281
Kevin Peng2d170442023-11-20 14:09:07 +0800282 git clone https://git.trustedfirmware.org/TF-M/tf-m-tests.git
283
284 Build SPE and NSPE.
285
286 .. code-block:: bash
287
288 cd </tf-m-tests/tests_reg>
Matthew Dalzellcb5e8b12024-03-20 14:35:39 +0000289 cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir absolute path> \
290 -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<TF-M source dir absolute path>/toolchain_GNUARM.cmake \
Kevin Peng2d170442023-11-20 14:09:07 +0800291 -DTEST_S=ON -DTEST_NS=ON \
292 cmake --build build_spe -- install
293
Matthew Dalzellcb5e8b12024-03-20 14:35:39 +0000294 cmake -S . -B build_test -DCONFIG_SPE_PATH=<tf-m-tests absolute path>/tests_reg/build_spe/api_ns \
295 -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-tests absolute path>/tests_reg/build_spe/api_ns/cmake/toolchain_ns_GNUARM.cmake
Kevin Peng2d170442023-11-20 14:09:07 +0800296 cmake --build build_test
Summer Qin6d5c91c2021-05-24 15:32:44 +0800297
298 .. group-tab:: Windows
299
Ken Liu6792e042023-11-13 14:48:00 +0800300 .. important::
301 Use "/" instead of "\\" when assigning Windows paths to CMAKE
302 variables, for example, use "c:/build" instead of "c:\\\\build".
303
Kevin Peng2d170442023-11-20 14:09:07 +0800304 Get the TF-M tests source code:
Summer Qin6d5c91c2021-05-24 15:32:44 +0800305
306 .. code-block:: bash
307
Kevin Peng2d170442023-11-20 14:09:07 +0800308 git clone https://git.trustedfirmware.org/TF-M/tf-m-tests.git
Summer Qin6d5c91c2021-05-24 15:32:44 +0800309
Kevin Peng2d170442023-11-20 14:09:07 +0800310 Build SPE and NSPE.
311
312 .. code-block:: bash
313
314 cd </tf-m-tests/tests_reg>
Matthew Dalzellcb5e8b12024-03-20 14:35:39 +0000315 cmake -G"Unix Makefiles" -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir absolute path> \
316 -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<TF-M source dir absolute path>/toolchain_GNUARM.cmake \
Kevin Peng2d170442023-11-20 14:09:07 +0800317 -DTEST_S=ON -DTEST_NS=ON \
318 cmake --build build_spe -- install
319
Matthew Dalzellcb5e8b12024-03-20 14:35:39 +0000320 cmake -G"Unix Makefiles" -S . -B build_test -DCONFIG_SPE_PATH=<tf-m-tests absolute path>/tests_reg/build_spe/api_ns \
321 -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-tests absolute path>/tests_reg/build_spe/api_ns/cmake/toolchain_ns_GNUARM.cmake
Kevin Peng2d170442023-11-20 14:09:07 +0800322 cmake --build build_test
Anton Komlev81506422022-02-15 21:53:13 +0000323
324 .. note::
325 The latest Windows support long paths, but if you are less lucky
326 then you can reduce paths by moving the build directory closer to
Kevin Peng2d170442023-11-20 14:09:07 +0800327 the root by changing the ``-B`` option of the commands, for example,
328 to ``C:\build_spe`` and ``C:\build_test`` folders.
Anton Komlev81506422022-02-15 21:53:13 +0000329
Summer Qin6d5c91c2021-05-24 15:32:44 +0800330###########################
331Run AN521 regression sample
332###########################
333
334Run the sample code on SSE-200 Fast-Model, using FVP_MPS2_AEMv8M provided by
335Arm Development Studio.
336
337.. note::
338
339 Arm Development Studio is not essential to develop TF-M, you can skip this
340 section if don't want to try on Arm develop boards.
341
342.. tabs::
343
344 .. group-tab:: Linux
345
346 1. install Arm Development Studio to get the fast-model.
347
348 Download Arm Development Studio from `here <https://developer.arm.com/tools-and-software/embedded/arm-development-studio>`__.
349
350 2. Add ``bl2.axf`` and ``tfm_s_ns_signed.bin`` to symbol files in Debug
351 Configuration menu.
352
353 .. code-block:: bash
354
355 <DS_PATH>/sw/models/bin/FVP_MPS2_AEMv8M \
356 --parameter fvp_mps2.platform_type=2 \
357 --parameter cpu0.baseline=0 \
358 --parameter cpu0.INITVTOR_S=0x10000000 \
359 --parameter cpu0.semihosting-enable=0 \
360 --parameter fvp_mps2.DISABLE_GATING=0 \
361 --parameter fvp_mps2.telnetterminal0.start_telnet=1 \
362 --parameter fvp_mps2.telnetterminal1.start_telnet=0 \
363 --parameter fvp_mps2.telnetterminal2.start_telnet=0 \
364 --parameter fvp_mps2.telnetterminal0.quiet=0 \
365 --parameter fvp_mps2.telnetterminal1.quiet=1 \
366 --parameter fvp_mps2.telnetterminal2.quiet=1 \
Kevin Peng2d170442023-11-20 14:09:07 +0800367 --application cpu0=<build_spe>/api_ns/bin/bl2.axf \
368 --data cpu0=<build_test>/tfm_s_ns_signed.bin@0x10080000
Summer Qin6d5c91c2021-05-24 15:32:44 +0800369
Jason Guof64dc6b2023-07-06 15:55:26 +0800370 .. note::
371
372 The log is output to telnet by default.
373 It can be also redirected to stdout by adding the following parameter.
374
375 .. code-block:: bash
376
377 --parameter fvp_mps2.UART0.out_file=/dev/stdout
378
379 To automatically terminate the fast-model when it finishes running,
380 you can add the following parameters:
381
382 .. code-block:: bash
383
384 --parameter fvp_mps2.UART0.shutdown_on_eot=1
385
Summer Qin6d5c91c2021-05-24 15:32:44 +0800386 .. group-tab:: Windows
387
388 1. install Arm Development Studio to get the fast-model.
389
390 Download Arm Development Studio from `here <https://developer.arm.com/tools-and-software/embedded/arm-development-studio>`__.
391
392 2. Add ``bl2.axf`` and ``tfm_s_ns_signed.bin`` to symbol files in Debug
393 Configuration menu.
394
395 .. code-block:: bash
396
397 <DS_PATH>\sw\models\bin\FVP_MPS2_AEMv8M \
398 --parameter fvp_mps2.platform_type=2 \
399 --parameter cpu0.baseline=0 \
400 --parameter cpu0.INITVTOR_S=0x10000000 \
401 --parameter cpu0.semihosting-enable=0 \
402 --parameter fvp_mps2.DISABLE_GATING=0 \
403 --parameter fvp_mps2.telnetterminal0.start_telnet=1 \
404 --parameter fvp_mps2.telnetterminal1.start_telnet=0 \
405 --parameter fvp_mps2.telnetterminal2.start_telnet=0 \
406 --parameter fvp_mps2.telnetterminal0.quiet=0 \
407 --parameter fvp_mps2.telnetterminal1.quiet=1 \
408 --parameter fvp_mps2.telnetterminal2.quiet=1 \
Kevin Peng2d170442023-11-20 14:09:07 +0800409 --application cpu0=<build_spe>/api_ns/bin/bl2.axf \
410 --data cpu0=<build_test>/tfm_s_ns_signed.bin@0x10080000
Summer Qin6d5c91c2021-05-24 15:32:44 +0800411
Jason Guof64dc6b2023-07-06 15:55:26 +0800412 .. note::
413
414 To automatically terminate the fast-model when it finishes running,
415 you can add the following parameters:
416
417 .. code-block:: bash
418
419 --parameter fvp_mps2.UART0.shutdown_on_eot=1
420
Summer Qin6d5c91c2021-05-24 15:32:44 +0800421After completing the procedure you should see the following messages on the
422DAPLink UART (baud 115200 8n1)::
423
Kevin Peng2d170442023-11-20 14:09:07 +0800424 ...
425 #### Execute test suites for the Secure area ####
426 Running Test Suite PSA protected storage S interface tests (TFM_S_PS_TEST_1XXX)...
427 > Executing 'TFM_S_PS_TEST_1001'
428 Description: 'Set interface'
429 TEST: TFM_S_PS_TEST_1001 - PASSED!
430 > Executing 'TFM_S_PS_TEST_1002'
431 Description: 'Set interface with create flags'
432 TEST: TFM_S_PS_TEST_1002 - PASSED!
433 > Executing 'TFM_S_PS_TEST_1003'
434 Description: 'Set interface with NULL data pointer'
435 TEST: TFM_S_PS_TEST_1003 - PASSED!
436 > Executing 'TFM_S_PS_TEST_1005'
437 Description: 'Set interface with write once UID'
438 TEST: TFM_S_PS_TEST_1005 - PASSED!
Summer Qin6d5c91c2021-05-24 15:32:44 +0800439 ....
440
441##########################
442Tool & Dependency overview
443##########################
444
445To build the TF-M firmware the following tools are needed:
446
Anton Komlev4c436bf2021-10-18 21:59:55 +0100447 - C compiler of supported toolchains
Nik Dewallyae923b12024-06-26 15:30:09 +0100448 - CMake version 3.21 or later
Anton Komlev4c436bf2021-10-18 21:59:55 +0100449 - Git
450 - gmake, aka GNU Make
451 - Python v3.x
Nicola Mazzucatoafd24bb2024-02-14 17:27:27 +0000452 - a set of python modules listed in ``tools/requirements.txt``
Summer Qin6d5c91c2021-05-24 15:32:44 +0800453
Anton Komlev91281f02022-04-22 09:24:20 +0100454****************
Anton Komlev4c436bf2021-10-18 21:59:55 +0100455Dependency chain
Anton Komlev91281f02022-04-22 09:24:20 +0100456****************
Summer Qin6d5c91c2021-05-24 15:32:44 +0800457
458.. uml::
459
460 @startuml
461 skinparam state {
462 BackgroundColor #92AEE0
463 FontColor black
464 FontSize 16
465 AttributeFontColor black
466 AttributeFontSize 16
Summer Qin6d5c91c2021-05-24 15:32:44 +0800467 }
468 state fw as "Firmware" : TF-M binary
469 state c_comp as "C Compiler" : C99
Anton Komlev4c436bf2021-10-18 21:59:55 +0100470 state python as "Python" : v3.x
Summer Qin6d5c91c2021-05-24 15:32:44 +0800471
Summer Qin6d5c91c2021-05-24 15:32:44 +0800472 fw --> c_comp
473 fw --> CMake
474 CMake --> gmake
Anton Komlev4c436bf2021-10-18 21:59:55 +0100475 CMake --> Ninja
Summer Qin6d5c91c2021-05-24 15:32:44 +0800476 fw --> cryptography
477 fw --> pyasn1
478 fw --> yaml
479 fw --> jinja2
Ross Burton5ba82392021-11-10 16:56:10 +0000480 fw --> cbor2
Summer Qin6d5c91c2021-05-24 15:32:44 +0800481 fw --> click
482 fw --> imgtool
Anton Komlev4c436bf2021-10-18 21:59:55 +0100483 c_comp --> GCC
484 c_comp --> CLANG
485 c_comp --> IAR
486 cryptography --> python
487 pyasn1 --> python
488 yaml --> python
489 jinja2 --> python
Ross Burton5ba82392021-11-10 16:56:10 +0000490 cbor2 --> python
Anton Komlev4c436bf2021-10-18 21:59:55 +0100491 click --> python
492 imgtool --> python
Jianliang Shendfddc982022-11-29 15:08:19 +0800493 kconfiglib --> python
Summer Qin6d5c91c2021-05-24 15:32:44 +0800494 @enduml
495
Anton Komlev91281f02022-04-22 09:24:20 +0100496.. rubric:: Next steps
Summer Qin6d5c91c2021-05-24 15:32:44 +0800497
498Here are some next steps for exploring TF-M:
499
Anton Komlev0dbe8f12022-06-17 16:48:12 +0100500 - Detailed :doc:`Build instructions </building/tfm_build_instruction>`.
501 - :doc:`IAR Build instructions </building/tfm_build_instruction_iar>`.
502 - Try other :doc:`Samples and Demos </building/run_tfm_examples_on_arm_platforms>`.
503 - :doc:`Documentation generation </building/documentation_generation>`.
Summer Qin6d5c91c2021-05-24 15:32:44 +0800504
505--------------
506
Nicola Mazzucatoafd24bb2024-02-14 17:27:27 +0000507*Copyright (c) 2017-2024, Arm Limited. All rights reserved.*
Chris Brand4b381f82022-12-01 16:30:23 -0800508*Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon company)
509or an affiliate of Cypress Semiconductor Corporation. All rights reserved.*