blob: bd4f1271ae45a32813010af14bbd3e0612ba87fa [file] [log] [blame]
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02001###############
Kevin Townsenda26983f2020-04-06 13:26:21 +02002LPCXpresso55S69
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02003###############
Kevin Townsenda26983f2020-04-06 13:26:21 +02004
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02005****************
61. Building TF-M
7****************
Kevin Townsenda26983f2020-04-06 13:26:21 +02008
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +02009There are two options for the TF-M build - with or without secondary bootloader (BL2).
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020010
111.1 Building TF-M demo without BL2
12==================================
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020013To build S and NS application image for the LPCXpresso55S69, run the ``build_tfm_demo.py`` script in ``platform/ext/target/nxp/lpcxpresso55s69/scripts``
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020014
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020015Or do it manually using the following commands:
David Vinczeb56c5ad2020-10-08 15:50:46 +020016
17.. code:: bash
18
Andrej Butokf4240162023-05-30 14:56:31 +020019 $ cmake -S . -B build -DTFM_PLATFORM=nxp/lpcxpresso55s69 -DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake -DTFM_PROFILE=profile_medium -DBL2=OFF -G"Unix Makefiles"
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020020 $ cd build && make install
David Vinczeb56c5ad2020-10-08 15:50:46 +020021
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200221.2 Building TF-M demo with BL2
23===============================
24
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020025To build S and NS application along with a BL2 (bootloader) image for the
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020026LPCXpresso55S69 run the ``build_tfm_demo_bl2.py`` script in ``platform/ext/target/nxp/lpcxpresso55s69/scripts``
27
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020028Or do it manually using the following commands:
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020029
30.. code:: bash
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020031
Andrej Butokf4240162023-05-30 14:56:31 +020032 $ cmake -S . -B build -DTFM_PLATFORM=nxp/lpcxpresso55s69 -DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake -DTFM_PROFILE=profile_medium -DBL2=ON -G"Unix Makefiles"
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020033 $ cd build && make install
34
351.3 Building TF-M regression tests
36==================================
37
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020038To run the S and NS regression tests (``TEST_S=ON`` and ``TEST_NS=ON``), the
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020039secondary image areas must be set to 0 (firmware updates are not possible).
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020040Use the ``build_tfm_regression.py`` script in ``platform/ext/target/nxp/lpcxpresso55s69/scripts``
41or do it manually using following commands:
42
43.. code:: bash
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020044
Andrej Butokf4240162023-05-30 14:56:31 +020045 $ cmake -S . -B build -DTFM_PLATFORM=nxp/lpcxpresso55s69 -DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake -DTFM_PROFILE=profile_medium -DBL2=OFF -DTEST_S=ON -DTEST_NS=ON -G"Unix Makefiles"
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020046 $ cd build && make install
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020047
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020048****************
492. Flashing TF-M
50****************
David Vinczeb56c5ad2020-10-08 15:50:46 +020051
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020052After generating the binaries, there are three options to flash them using:
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020053 1) **External Segger J-Link flasher**
54 2) **On-board J-Link debugger** - with update of LPC-Link2 debugger to the Segger J-Link firmware
55 3) **PyOCD** - supports both DAPLink and J-Link interfaces. The LPCXpresso55S69 boards, by default, use DAPLink firmware.
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020056
572.1 Flashing with Segger J-Link
58===============================
59
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020060For command line flashing it is recommended to use external Segger J-Link flasher or to
61update the LPC-Link 2 debugger on the development board with the firmware provided by Segger,
62which makes the device behave as if there is an on-board J-Link debugger.
Kevin Townsenda26983f2020-04-06 13:26:21 +020063
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020064For onboard J-Link debugger option please follow this step:
Kevin Townsenda26983f2020-04-06 13:26:21 +020065
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200662.1.1 Update the LPC-Link 2 to Segger J-Link
67--------------------------------------------
Kevin Townsenda26983f2020-04-06 13:26:21 +020068
69- Install a recent version of the `J-Link Software and Documentation
70 Pack <https://www.segger.com/downloads/jlink#J-LinkSoftwareAndDocumentationPack>`__.
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020071 Version **6.98b** was used with this guide.
Kevin Townsenda26983f2020-04-06 13:26:21 +020072
73- Update the on-board LPC-Link 2 to use the latest J-Link firmware,
74 following the instructions from Segger: `Getting Started with
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +020075 LPC-Link2 <https://www.segger.com/products/debug-probes/j-link/models/other-j-links/lpc-link-2/>`__.
76- Link the DFU jumper (J4) and make power cycle
77- Flash the **NXP LPCXpresso On-Board** firmware image with ``lpcscrypt`` from the ``lpcscrypt_2.1.2_57/scripts`` folder as follows:
Kevin Townsenda26983f2020-04-06 13:26:21 +020078
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020079.. tabs::
Kevin Townsenda26983f2020-04-06 13:26:21 +020080
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020081 .. group-tab:: Linux
Kevin Townsenda26983f2020-04-06 13:26:21 +020082
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020083 .. code-block:: bash
84
85 $ ./program_JLINK ../probe_firmware/LPCXpressoV2/Firmware_JLink_LPCXpressoV2_20190404.bin
86
87 .. group-tab:: Windows
88
89 .. code-block:: bash
90
91 $ program_JLINK ../probe_firmware/LPCXpressoV2/Firmware_JLink_LPCXpressoV2_20190404.bin
Kevin Townsenda26983f2020-04-06 13:26:21 +020092
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020093Then remove the link on the DFU jumper and power cycle.
Kevin Townsenda26983f2020-04-06 13:26:21 +020094
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200952.1.2 Flash images with ``JLinkCommander``
96------------------------------------------
Kevin Townsenda26983f2020-04-06 13:26:21 +020097
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +020098To flash TF-M images use the flash scripts provided in ``platform/ext/target/nxp/lpcxpresso55s69/scripts`` folder:
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +020099 - ``flash_JLink.py`` - for uploading image without BL2
100 - ``flash_bl2_JLink.py`` - for uploading image with BL2
101
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200102Or you can do it manually according to paragraph ``2.1.2.1``.
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200103
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +02001042.1.2.1 Connect to the board using ``JLinkCommander``
105^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200106
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200107.. tabs::
Kevin Townsenda26983f2020-04-06 13:26:21 +0200108
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200109 .. group-tab:: Linux
Kevin Townsenda26983f2020-04-06 13:26:21 +0200110
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200111 .. code-block:: bash
Kevin Townsenda26983f2020-04-06 13:26:21 +0200112
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200113 $ JLinkExe -device lpc55s69 -if swd -speed 2000 -autoconnect 1
Kevin Townsenda26983f2020-04-06 13:26:21 +0200114
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200115 SEGGER J-Link Commander V6.98b (Compiled Mar 12 2021 15:03:29)
116 DLL version V6.98b, compiled Mar 12 2021 15:02:22
Kevin Townsenda26983f2020-04-06 13:26:21 +0200117
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200118 Connecting to J-Link via USB...O.K.
119 Firmware: J-Link LPCXpresso V2 compiled Apr 4 2019 16:54:03
120 Hardware version: V1.00
121 S/N: 729458359
122 VTref=3.300V
123 Device "LPC55S69_M33_0" selected.
124 ...
125 Cortex-M33 identified.
126
127 .. group-tab:: Windows
128
129 .. code-block:: bash
130
131 $ JLink -device lpc55s69 -if swd -speed 2000 -autoconnect 1
132
133 SEGGER J-Link Commander V6.98b (Compiled Mar 12 2021 15:03:29)
134 DLL version V6.98b, compiled Mar 12 2021 15:02:22
135
136 Connecting to J-Link via USB...O.K.
137 Firmware: J-Link LPCXpresso V2 compiled Apr 4 2019 16:54:03
138 Hardware version: V1.00
139 S/N: 729458359
140 VTref=3.300V
141 Device "LPC55S69_M33_0" selected.
142 ...
143 Cortex-M33 identified.
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200144
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +02001452.1.2.2 Flash the built images
146^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200147
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200148When BL2 is disabled, flash the generated hex secure and non-secure images:
Kevin Townsenda26983f2020-04-06 13:26:21 +0200149::
150
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200151 J-Link> loadfile ${BUILD_DIR}/bl2.hex
152 J-Link> loadfile ${BUILD_DIR}/tfm_s_signed.bin 0x00008000
153 J-Link> loadfile ${BUILD_DIR}/tfm_ns_signed.bin 0x00030000
David Vinczeb56c5ad2020-10-08 15:50:46 +0200154
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200155If you built TF-M with the BL2 secondary bootloader, use following commands:
David Vinczeb56c5ad2020-10-08 15:50:46 +0200156::
157
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200158 J-Link> loadfile ${BUILD_DIR}/tfm_s.hex
159 J-Link> loadfile ${BUILD_DIR}/tfm_ns.hex
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200160
1612.2 Flashing with PyOCD
162=======================
163PyOCD is an open source Python package for programming and debugging Arm Cortex-M microcontrollers using multiple supported types of USB debug probes.
164See: `PyOCD <https://pypi.org/project/pyocd/>`__
165
166To flash TF-M images with PyOCD you can use the flash scripts provided in ``platform/ext/target/nxp/lpcxpresso55s69/scripts`` folder:
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200167 - ``flash_PyOCD.py`` - for uploading image without BL2
168 - ``flash_bl2_PyOCD.py`` - for uploading image with BL2
169
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200170You should get the following output (flashing without BL2):
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200171::
Kevin Townsenda26983f2020-04-06 13:26:21 +0200172
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200173 $ python flash_PyOCD.py
174 0001749:INFO:eraser:Mass erasing device...
175 0001749:INFO:eraser:Erasing chip...
176 0001902:INFO:eraser:Done
177 0001902:INFO:eraser:Successfully erased.
178 [====================] 100%
179 0007694:INFO:loader:Erased 262144 bytes (8 sectors), programmed 203776 bytes (398 pages), skipped 0 bytes (0 pages) at 33.91 kB/s
180 [====================] 100%
181 0005187:INFO:loader:Erased 131072 bytes (4 sectors), programmed 121856 bytes (238 pages), skipped 0 bytes (0 pages) at 34.13 kB/s
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200182
183
184Or do it manually according the following steps:
185
186If you built TF-M with the BL2 secondary bootloader, use the following commands:
187::
188
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200189 $ pyocd erase --mass -t LPC55S69
Andrej Butokf4240162023-05-30 14:56:31 +0200190 $ pyocd flash ${BUILD_DIR}/tfm_s.hex ${BUILD_DIR}/tfm_ns.hex -t LPC55S69
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200191
192When BL2 is disabled, flash the generated hex secure and non-secure images:
193::
194
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200195 $ pyocd erase --mass -t LPC55S69
196 $ pyocd flash ${BUILD_DIR}/bl2.hex -t LPC55S69
Andrej Butokf4240162023-05-30 14:56:31 +0200197 $ pyocd flash ${BUILD_DIR}/tfm_s_ns_signed.bin --base-address 0x8000 -t LPC55S69
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200198
199.. Note::
200
201 At present, the reset target command does not seem to respond, so you can reset the device to start firmware execution via the physical RESET button (S4). There is sometimes also a stability issue with the flash erasing, so if the script freezes, it is needed to terminate the script, physically reset the target an rerun it again.
202
203.. Warning::
204
205 When using PyOCD on Windows, there might currently occur an issue with the ``libusb`` library. In that case, download the ``libusb`` library from `here <https://libusb.info/>`__ and copy .DLL file into the Python installation folder (next to python.exe)
Kevin Townsenda26983f2020-04-06 13:26:21 +0200206
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200207************
2083. Debugging
209************
Kevin Townsenda26983f2020-04-06 13:26:21 +0200210
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02002113.1 Debugging with Segger Ozone
212===============================
Kevin Townsenda26983f2020-04-06 13:26:21 +0200213
214If you have a commercially licensed Segger J-Link, or if you meet the
215license terms for it's use, `Segger's cross-platform Ozone
216tool <https://www.segger.com/products/development-tools/ozone-j-link-debugger/>`__
217can be used to debug TF-M firmware images.
218
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200219To debug, flash the BL2, S and NS firmware images using the ``flash.py``
Kevin Townsenda26983f2020-04-06 13:26:21 +0200220script or command-line options described earlier in this guide, and
221configure a new project on Ozone as follows:
222
223- Device: LPC55S69
224- Target Interface: SWD
225- Target Interface Speed: 2 MHz
226- Host Interface: USB
227- Program File: build/secure\_fw/tfm\_s.axf (etc.)
228
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200229Once the project has been set up, and the firmware has previously been
Kevin Townsenda26983f2020-04-06 13:26:21 +0200230flashed to the board, connect to the target via:
231
232- Debug > Start Debug Session > Attach to a Running Program
233
234At this point, you can set a breakpoint somewhere in the code, such as
235in ``startup_LPC55S69_cm33_core0.s`` at the start of the
236``Reset_Handler``, or near a line like ``bl SystemInit``, or at
237another appropriate location, and reset the device to debug.
238
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02002393.2 Debugging with GDB
240======================
Kevin Townsenda26983f2020-04-06 13:26:21 +0200241
242 **NOTE**: If you are debugging, make sure to set the
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200243 build type variable to ``-DCMAKE_BUILD_TYPE=Debug`` when
Kevin Townsenda26983f2020-04-06 13:26:21 +0200244 building TF-M so that debug information is available to GDB.
245
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200246 **NOTE**: When debugging with the mbed-crypto library, it is needed to add an
Anton Komlevb8e3af02020-08-28 10:23:57 +0100247 additional ``-DMBEDCRYPTO_BUILD_TYPE=DEBUG`` compile-time switch.
Kevin Townsenda26983f2020-04-06 13:26:21 +0200248
249
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02002503.2.1 Start the GDB server, pointing to the secure application image:
251---------------------------------------------------------------------
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200252You can use JLinkGDBServer or PyOCD server depending on the interface configured in the previous step.
253
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200254.. tabs::
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200255
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200256 .. group-tab:: J-Link GDB server
Kevin Townsenda26983f2020-04-06 13:26:21 +0200257
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200258 .. code-block:: bash
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200259
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200260 $ JLinkGDBServer -device lpc55s69 -if swd -speed 2000
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200261
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200262 .. group-tab:: PyOCD GDB server
263
264 .. code:: bash
265
266 $ pyocd gdbserver -f 2000k -t LPC55S69
Kevin Townsenda26983f2020-04-06 13:26:21 +0200267
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02002683.2.2 Connecting to the GDB server
269----------------------------------
Kevin Townsenda26983f2020-04-06 13:26:21 +0200270
271In a separate terminal, start the GDB client in ``tui`` (text UI) mode:
272
273.. code:: bash
274
275 $ arm-none-eabi-gdb --tui secure_fw/tfm_s.axf
276
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200277Then from the client connect to the remote GDB server that was started
Kevin Townsenda26983f2020-04-06 13:26:21 +0200278earlier:
279
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200280.. tabs::
Kevin Townsenda26983f2020-04-06 13:26:21 +0200281
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200282 .. group-tab:: J-Link GDB server
Kevin Townsenda26983f2020-04-06 13:26:21 +0200283
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200284 With ``JLinkGDBServer`` (default port 2331):
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200285
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200286 .. code:: bash
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200287
MartinaHanusovaNXP535aefd2021-07-20 14:45:01 +0200288 (gdb) target remote:2331
289 Remote debugging using :2331
290
291 .. group-tab:: PyOCD GDB server
292
293 With ``pyocd gdbserver`` (default port 3333):
294
295 .. code:: bash
296
297 (gdb) target remote:3333
298 Remote debugging using :3333
MartinaHanusovaNXP8dfc2882021-04-29 16:53:49 +0200299
Kevin Townsenda26983f2020-04-06 13:26:21 +0200300
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02003013.2.3 Reset and stop at ``main``
302--------------------------------
Kevin Townsenda26983f2020-04-06 13:26:21 +0200303
304Set a breakpoint at ``main()`` (found in ``tfm_core.c``), reset the
305device (``monitor reset``), and continue (``c``) execution.
306
307::
308
309 (gdb) break main
310 Breakpoint 1 at 0x10024220: file [path]/secure_fw/core/tfm_core.c, line 189.
311 (gdb) monitor reset
312 (gdb) c
313 Continuing.
314 Note: automatically using hardware breakpoints for read-only addresses.
315
316 Breakpoint 1, main ()
317 at [path]/secure_fw/core/tfm_core.c:189
Kevin Peng300c68d2021-08-12 17:40:17 +0800318 189 tfm_arch_init_secure_msp((uint32_t)&REGION_NAME(Image$$, ARM_LIB_STACK,
Kevin Townsenda26983f2020-04-06 13:26:21 +0200319
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +02003203.2.4 Commonly used GDB commands
321--------------------------------
Kevin Townsenda26983f2020-04-06 13:26:21 +0200322
323You can start, step through, and analyse the code using some of the
324following GDB commands:
325
326+-------------------+---------------------------------------------------------+
327| GDB Command | Description |
328+===================+=========================================================+
329| ``next`` | Execute the next statement in the program |
330+-------------------+---------------------------------------------------------+
331| ``step`` | Step until new source line, entering called functions |
332+-------------------+---------------------------------------------------------+
333| ``until <n>`` | Run until source line ``n`` in the current file |
334+-------------------+---------------------------------------------------------+
335| ``info locals`` | Display the local variables and their current values |
336+-------------------+---------------------------------------------------------+
337| ``bt`` | Display a stack backtrace up to the current function |
338+-------------------+---------------------------------------------------------+
339| ``print <x>`` | Print the expression (ex. ``print my_var``) |
340+-------------------+---------------------------------------------------------+
341| ``x`` | Examine memory (ex. ``x/s *my_string``) |
342+-------------------+---------------------------------------------------------+
343
344From here, you should consult a tutorial or book on GDB to know how to debug
345common problems.
346
347--------------
348
349*Copyright (c) 2020, Linaro. All rights reserved.*
Kevin Peng300c68d2021-08-12 17:40:17 +0800350*Copyright (c) 2020-2021, Arm Limited. All rights reserved.*
Andrej Butokf4240162023-05-30 14:56:31 +0200351*Copyright 2020-2023 NXP. All rights reserved.
MartinaHanusovaNXP11644b62021-04-22 10:16:47 +0200352*SPDX-License-Identifier: BSD-3-Clause*