blob: d834785da7387c214f8b8723048af3090b12e4c9 [file] [log] [blame]
Galanakis, Minos41f85972019-09-30 15:56:40 +01001##########
2User guide
3##########
Gyorgy Szingdb9783c2019-04-17 21:08:48 +02004How to compile and run TF-M and example test application for CoreLink
5SSE-200 subsystem on the MPS2 board and on the Fast Model(FVP).
6
7Follow :doc:`build instruction <tfm_build_instruction>` to build the binaries.
8Follow :doc:`secure boot <tfm_secure_boot>` to build the binaries with or
9without BL2 bootloader.
10
11****************************************************************
12Execute TF-M example and regression tests on MPS2 boards and FVP
13****************************************************************
Minos Galanakis3b740a12020-10-15 11:10:26 +010014The BL2 bootloader and TF-M example application and tests have been verified
15using the reference model for MPS2 (AN521), in `Keil MDK`_ ,
16`Fixed Virtual Platforms`_ and `Arm Development Studio`_ .
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020017
18.. Note::
Minos Galanakis3b740a12020-10-15 11:10:26 +010019 The name of the reference model's executable can vary depending on toolchain.
20
21 - SMM-SSE-200 for `Keil MDK`_
22
23 - FVP_MPS2_AEMv8M for `Fixed Virtual Platforms`_ and `Arm Development Studio`_
24
25 For more information please refer to the appropriate toolchain's
26 documentation: `Keil MDK Documentation`_ ,
27 `Fixed Virtual Platforms Documentation`_ ,
28 `Arm Development Studio Documentation`_
29
30To run the example code on an SSE-200 Fast-Model
31================================================
32Using FVP_MPS2_AEMv8M provided by `Arm Development Studio`_ 2019.1.
33
34
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020035
36Example application and regression tests without BL2 bootloader
37---------------------------------------------------------------
38Add ``tfm_s.axf`` and ``tfm_ns.axf`` to symbol files in Debug Configuration
39menu.
40
41.. code-block:: bash
42
Minos Galanakis3b740a12020-10-15 11:10:26 +010043 <DS_PATH>/sw/models/bin/FVP_MPS2_AEMv8M \
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020044 --parameter fvp_mps2.platform_type=2 \
45 --parameter cpu0.baseline=0 \
46 --parameter cpu0.INITVTOR_S=0x10000000 \
47 --parameter cpu0.semihosting-enable=0 \
48 --parameter fvp_mps2.DISABLE_GATING=0 \
49 --parameter fvp_mps2.telnetterminal0.start_telnet=1 \
50 --parameter fvp_mps2.telnetterminal1.start_telnet=0 \
51 --parameter fvp_mps2.telnetterminal2.start_telnet=0 \
52 --parameter fvp_mps2.telnetterminal0.quiet=0 \
53 --parameter fvp_mps2.telnetterminal1.quiet=1 \
54 --parameter fvp_mps2.telnetterminal2.quiet=1 \
Raef Coles1ecb8132020-10-02 15:11:24 +010055 --application cpu0=<build_dir>/bin/tfm_s.axf \
56 --data cpu0=<build_dir>/bin/tfm_ns.bin@0x00100000
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020057
58Example application and regression tests with BL2 bootloader
59------------------------------------------------------------
60To test TF-M with bootloader, one must apply the following changes:
61
Summer Qin57096f92020-09-25 14:33:36 +080062- Add ``bl2.axf`` to symbol files in DS-5 in Debug Configuration
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020063 menu.
64- Replace the last two lines of the previous command with this:
65
66.. code-block:: bash
67
Raef Coles1ecb8132020-10-02 15:11:24 +010068 --application cpu0=<build_dir>/bin/bl2.axf \
69 --data cpu0=<build_dir>/bin/tfm_s_ns_signed.bin@0x10080000
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020070
71Test software upgrade with BL2 bootloader
72^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
73BL2 bootloader is mandatory to test software update. Furthermore two TF-M blob
74must be built. Outputs of example application and regression test can be used to
David Vincze8bdfc2d2019-03-18 15:49:23 +010075test it. Load output of example application to the primary slot (0x10080000) and
76output of regression test to the secondary slot (0x10180000). Add the following
77line to the end of the previous chapter:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020078
79.. code-block:: bash
80
Raef Coles1ecb8132020-10-02 15:11:24 +010081 --data cpu0=<build_dir>/bin/tfm_s_ns_signed.bin@0x10180000
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020082
83To run the example code on SSE 200 FPGA on MPS2 board
84=====================================================
85FPGA image is available to download
86`here <https://developer.arm.com/products/system-design/development-boards/cortex-m-prototyping-systems/mps2>`__
87
88To run BL2 bootloader and TF-M example application and tests in the MPS2 board,
89it is required to have SMM-SSE-200 for MPS2 (AN521) image in the MPS2 board SD
90card. The image should be located in
91``<MPS2 device name>/MB/HBI0263<board revision letter>/AN521``
92
93The MPS2 board tested is HBI0263C referred also as MPS2+.
94
95.. Warning::
96
97 If you change the exe names, MPS2 expects file names in 8.3 format.
98
99Example application
100-------------------
Raef Coles1ecb8132020-10-02 15:11:24 +0100101#. Copy ``bl2.bin`` and ``tfm_s_ns_signed.bin`` files from
102 ``<build_dir>/bin`` to
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200103 ``<MPS2 device name>/SOFTWARE/``
104#. Open ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
105#. Update the ``AN521/images.txt`` file as follows::
106
107 TITLE: Versatile Express Images Configuration File
108 [IMAGES]
109 TOTALIMAGES: 2 ;Number of Images (Max: 32)
110 IMAGE0ADDRESS: 0x10000000
Raef Coles1ecb8132020-10-02 15:11:24 +0100111 IMAGE0FILE: \Software\bl2.bin ; BL2 bootloader
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200112 IMAGE1ADDRESS: 0x10080000
Raef Coles1ecb8132020-10-02 15:11:24 +0100113 IMAGE1FILE: \Software\tfm_s_ns_signed.bin ; TF-M example application binary blob
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200114
115#. Close ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
116#. Unmount/eject the ``<MPS2 device name>`` unit
117#. Reset the board to execute the TF-M example application
118#. After completing the procedure you should be able to visualize on the serial
119 port (baud 115200 8n1) the following messages::
120
121 [INF] Starting bootloader
122 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
123 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xcf
David Vincze8bdfc2d2019-03-18 15:49:23 +0100124 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200125 [INF] Swap type: none
126 [INF] Bootloader chainload address offset: 0x80000
127 [INF] Jumping to the first image slot
128 [Sec Thread] Secure image initializing!
129
130Regression tests
131----------------
132After completing the procedure you should be able to visualize on the serial
133port (baud 115200 8n1) the following messages::
134
135 [INF] Starting bootloader
136 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
137 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xcf
David Vincze8bdfc2d2019-03-18 15:49:23 +0100138 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200139 [INF] Swap type: none
140 [INF] Bootloader chainload address offset: 0x80000
141 [INF] Jumping to the first image slot
142 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100143
Kevin Pengc6d74502020-03-04 16:55:37 +0800144 #### Execute test suites for the protected storage service ####
145 Running Test Suite PS secure interface tests (TFM_PS_TEST_2XXX)...
Jamie Foxb8a92702019-06-05 17:19:31 +0100146
Kevin Pengc6d74502020-03-04 16:55:37 +0800147 > Executing 'TFM_PS_TEST_2001'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200148 Description: 'Create interface'
149 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800150 > Executing 'TFM_PS_TEST_2002'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200151 Description: 'Get handle interface (DEPRECATED)'
152 This test is DEPRECATED and the test execution was SKIPPED
153 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800154 > Executing 'TFM_PS_TEST_2003'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200155 Description: 'Get handle with null handle pointer (DEPRECATED)'
156 This test is DEPRECATED and the test execution was SKIPPED
157 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800158 > Executing 'TFM_PS_TEST_2004'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200159 Description: 'Write interface'
160 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800161 > Executing 'TFM_PS_TEST_2005'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200162 Description: 'Read interface'
163 ....
164
165.. Note::
166
Kevin Pengc6d74502020-03-04 16:55:37 +0800167 PS reliability tests take a few minutes to run on the MPS2.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200168
169Example application without BL2 bootloader
170------------------------------------------
171#. Copy ``tfm_s.bin`` and ``tfm_ns.bin`` files from
Raef Coles1ecb8132020-10-02 15:11:24 +0100172 ``<build_dir>/bin`` to
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200173 ``<MPS2 device name>/SOFTWARE/``
174#. Open ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
175#. Update the ``AN521/images.txt`` file as follows::
176
177 TITLE: Versatile Express Images Configuration File
178 [IMAGES]
179 TOTALIMAGES: 2 ;Number of Images (Max: 32)
180 IMAGE0ADDRESS: 0x10000000
181 IMAGE0FILE: \Software\tfm_s.bin ; Secure code
182 IMAGE1ADDRESS: 0x00100000
183 IMAGE1FILE: \Software\tfm_ns.bin ; Non-secure code
184
185#. Close ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
186#. Unmount/eject the ``<MPS2 device name>`` unit
187#. Reset the board to execute the TF-M example application
188#. After completing the procedure you should be able to visualize on the serial
189 port (baud 115200 8n1) the following messages::
190
191 [Sec Thread] Secure image initializing!
192
193Regression tests without BL2 bootloader
194---------------------------------------
195After completing the procedure you should be able to visualize on the serial
196port (baud 115200 8n1) the following messages::
197
198 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100199
Kevin Pengc6d74502020-03-04 16:55:37 +0800200 #### Execute test suites for the protected storage service ####
201 Running Test Suite PS secure interface tests (TFM_PS_TEST_2XXX)...
Jamie Foxb8a92702019-06-05 17:19:31 +0100202
Kevin Pengc6d74502020-03-04 16:55:37 +0800203 > Executing 'TFM_PS_TEST_2001'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200204 Description: 'Create interface'
205 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800206 > Executing 'TFM_PS_TEST_2002'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200207 Description: 'Get handle interface (DEPRECATED)'
208 This test is DEPRECATED and the test execution was SKIPPED
209 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800210 > Executing 'TFM_PS_TEST_2003'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200211 Description: 'Get handle with null handle pointer (DEPRECATED)'
212 This test is DEPRECATED and the test execution was SKIPPED
213 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800214 > Executing 'TFM_PS_TEST_2004'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200215 Description: 'Write interface'
216 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800217 > Executing 'TFM_PS_TEST_2005'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200218 Description: 'Read interface'
219 ....
220
221*******************************************************************
222Execute TF-M example and regression tests on Musca test chip boards
223*******************************************************************
224.. Note::
225
226 Before executing any images on Musca-B1 board, please check the
227 :doc:`target platform readme </platform/ext/target/musca_b1/readme>`
228 to have the correct setup.
229
230Example application with BL2 bootloader
231=======================================
232
Raef Coles1ecb8132020-10-02 15:11:24 +0100233#. Create a unified hex file comprising of both ``bl2.bin`` and
234 ``tfm_s_ns_signed.bin``.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200235
Jamie Foxb5215c32019-06-05 17:39:39 +0100236 - For Musca-A
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200237
Jamie Foxb5215c32019-06-05 17:39:39 +0100238 - Windows::
Jamie Foxb8a92702019-06-05 17:19:31 +0100239
Raef Coles1ecb8132020-10-02 15:11:24 +0100240 srec_cat.exe bin\bl2.bin -Binary -offset 0x200000 bin\tfm_s_ns_signed.bin -Binary -offset 0x220000 -o tfm.hex -Intel
Jamie Foxb8a92702019-06-05 17:19:31 +0100241
Jamie Foxb5215c32019-06-05 17:39:39 +0100242 - Linux::
Jamie Foxb8a92702019-06-05 17:19:31 +0100243
Raef Coles1ecb8132020-10-02 15:11:24 +0100244 srec_cat bin/bl2.bin -Binary -offset 0x200000 bin/tfm_s_ns_signed.bin -Binary -offset 0x220000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200245
Jamie Foxb5215c32019-06-05 17:39:39 +0100246 - For Musca-B1
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200247
Jamie Foxb5215c32019-06-05 17:39:39 +0100248 - Windows::
Jamie Foxb8a92702019-06-05 17:19:31 +0100249
Raef Coles1ecb8132020-10-02 15:11:24 +0100250 srec_cat.exe bin\bl2.bin -Binary -offset 0xA000000 bin\tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
Jamie Foxb8a92702019-06-05 17:19:31 +0100251
Jamie Foxb5215c32019-06-05 17:39:39 +0100252 - Linux::
Jamie Foxb8a92702019-06-05 17:19:31 +0100253
Raef Coles1ecb8132020-10-02 15:11:24 +0100254 srec_cat bin/bl2.bin -Binary -offset 0xA000000 bin/tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200255
Marton Berke8aae06f2019-11-25 16:46:12 +0100256 - For Musca-S1
257
258 - Windows::
259
Raef Coles1ecb8132020-10-02 15:11:24 +0100260 srec_cat.exe bin\bl2.bin -Binary -offset 0xA000000 bin\tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
Marton Berke8aae06f2019-11-25 16:46:12 +0100261
262 - Linux::
263
Raef Coles1ecb8132020-10-02 15:11:24 +0100264 srec_cat bin/bl2.bin -Binary -offset 0xA000000 bin/tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
Marton Berke8aae06f2019-11-25 16:46:12 +0100265
Jamie Foxb5215c32019-06-05 17:39:39 +0100266#. Power up the Musca board by connecting it to a computer with a USB lead.
267 Press the ``PBON`` button if the green ``ON`` LED does not immediately turn
268 on. The board should appear as a USB drive.
269#. Copy ``tfm.hex`` to the USB drive. The orange ``PWR`` LED should start
270 blinking.
271#. Once the ``PWR`` LED stops blinking, power cycle or reset the board to boot
272 from the new image.
273#. After completing the procedure you should see the following messages on the
274 DAPLink UART (baud 115200 8n1)::
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200275
276 [INF] Starting bootloader
277 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
278 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xd9
David Vincze8bdfc2d2019-03-18 15:49:23 +0100279 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200280 [INF] Swap type: none
281 [INF] Bootloader chainload address offset: 0x20000
282 [INF] Jumping to the first image slot
283 [Sec Thread] Secure image initializing!
284
285Regression tests with BL2 bootloader
286====================================
Jamie Fox14d75292020-07-03 12:52:29 +0100287.. note::
288
289 As the Internal Trusted Storage and Protected Storage tests use persistent
290 storage, it is recommended to erase the storage area before running the
291 tests. Existing data may prevent the tests from running to completion if,
292 for example, there is not enough free space for the test data or the UIDs
293 used by the tests have already been created with the write-once flag set.
294 Repeated test runs can be done without erasing between runs.
295
296 To erase the storage when flashing an image, ``-fill 0xFF <start_addr>
297 <end_addr>`` can be added to the ``srec_cat`` command used to create the
298 combined hex file. The ``<start_addr>`` and ``<end_addr>`` are the start and
299 end addresses of the storage area, found in the board's ``flash_layout.h``
300 file. The board's flash can also be erased via a debugger; see your IDE's
301 documentation for instructions.
302
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200303After completing the procedure you should see the following messages on the
Jamie Foxb5215c32019-06-05 17:39:39 +0100304DAPLink UART (baud 115200 8n1)::
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200305
306 [INF] Starting bootloader
307 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
308 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0x9
David Vincze8bdfc2d2019-03-18 15:49:23 +0100309 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200310 [INF] Swap type: none
311 [INF] Bootloader chainload address offset: 0x20000
312 [INF] Jumping to the first image slot
313 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100314
Kevin Pengc6d74502020-03-04 16:55:37 +0800315 #### Execute test suites for the protected storage service ####
316 Running Test Suite PS secure interface tests (TFM_PS_TEST_2XXX)...
317 > Executing 'TFM_PS_TEST_2001'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200318 Description: 'Create interface'
319 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800320 > Executing 'TFM_PS_TEST_2002'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200321 Description: 'Get handle interface (DEPRECATED)'
322 This test is DEPRECATED and the test execution was SKIPPED
323 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800324 > Executing 'TFM_PS_TEST_2003'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200325 Description: 'Get handle with null handle pointer (DEPRECATED)'
326 This test is DEPRECATED and the test execution was SKIPPED
327 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800328 > Executing 'TFM_PS_TEST_2004'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200329 Description: 'Get attributes interface'
330 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800331 > Executing 'TFM_PS_TEST_2005'
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200332 Description: 'Get attributes with null attributes struct pointer'
333 ....
334
Jamie Fox19c91c22019-02-10 18:04:58 +0000335PSA API tests
336=============
337Follow the build instructions for the PSA API tests and then follow the above
338procedures for flashing the image to the board. The PSA API tests are linked
339into the TF-M binaries and will automatically run. A log similar to the
340following should be visible on the UART; it is normal for some tests to be
341skipped but there should be no failed tests::
342
343 [Sec Thread] Secure image initializing!
344 Booting TFM v1.1
345 Non-Secure system starting...
346
347 ***** PSA Architecture Test Suite - Version 1.0 *****
348
349 Running.. Storage Suite
350 ******************************************
351
352 TEST: 401 | DESCRIPTION: UID not found check
353 [Info] Executing tests from non-secure
354
355 [Info] Executing ITS tests
356 [Check 1] Call get API for UID 6 which is not set
357 [Check 2] Call get_info API for UID 6 which is not set
358 [Check 3] Call remove API for UID 6 which is not set
359 [Check 4] Call get API for UID 6 which is removed
360 [Check 5] Call get_info API for UID 6 which is removed
361 [Check 6] Call remove API for UID 6 which is removed
362 [Check 7] Call get API for different UID 5
363 [Check 8] Call get_info API for different UID 5
364 [Check 9] Call remove API for different UID 5
365
366 [Info] Executing PS tests
367 [Check 1] Call get API for UID 6 which is not set
368 [Check 2] Call get_info API for UID 6 which is not set
369 [Check 3] Call remove API for UID 6 which is not set
370 [Check 4] Call get API for UID 6 which is removed
371 [Check 5] Call get_info API for UID 6 which is removed
372 [Check 6] Call remove API for UID 6 which is removed
373 [Check 7] Call get API for different UID 5
374 [Check 8] Call get_info API for different UID 5
375 [Check 9] Call remove API for different UID 5
376
377 TEST RESULT: PASSED
378
379 ******************************************
380
381 <further tests removed from log for brevity>
382
383 ************ Storage Suite Report **********
384 TOTAL TESTS : 17
385 TOTAL PASSED : 11
386 TOTAL SIM ERROR : 0
387 TOTAL FAILED : 0
388 TOTAL SKIPPED : 6
389 ******************************************
390
391.. note::
392 The Internal Trusted Storage and Protected Storage flash areas must be wiped
393 before running the Storage test suites.
394
395 Many IDEs for embedded development (such as Keil µVision) offer a function
396 to erase a device's flash. Refer to your IDE's documentation for
397 instructions.
398
399 Another way this can be achieved is by using ``srec_cat`` with the ``-fill``
400 parameter to fill the corresponding area in the binary with the erase value
401 of the flash (``0xFF``). For example, for Musca-A the command for
402 concatenating the ``bl2`` and ``tfm_s_ns_signed`` binaries would become::
403
404 srec_cat bin/bl2.bin -Binary -offset 0x200000 \
405 bin/tfm_s_ns_signed.bin -Binary -offset 0x220000 \
406 -fill 0xFF 0x420000 0x425000 -o tfm.hex -Intel
407
408 Refer to the platform flash layout for appropriate addresses to erase on
409 other platforms.
410
411 This step is not required on targets that emulate flash storage in RAM, as
412 it will be erased each time the device is reset. Note, however, that a warm
413 reset may not clear SRAM contents, so it may be necessary to power the
414 device off and on again between test runs.
415
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200416Example application or regression tests on Musca-B1 without BL2 bootloader
417==========================================================================
418
419Follow the above procedures, but create a unified hex file out of ``tfm_s.bin``
420and ``tfm_ns.bin``:
421
422- Windows::
423
Raef Coles1ecb8132020-10-02 15:11:24 +0100424 srec_cat.exe bin\tfm_s.bin -Binary -offset 0xA000000 bin\tfm_ns.bin -Binary -offset 0xA080000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200425
426- Linux::
427
Raef Coles1ecb8132020-10-02 15:11:24 +0100428 srec_cat bin/tfm_s.bin -Binary -offset 0xA000000 bin/tfm_ns.bin -Binary -offset 0xA080000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200429
Kevin Peng0a142112018-09-21 10:42:22 +0800430********************************************************
431Execute TF-M example and regression tests on MPS3 boards
432********************************************************
433
434To run the example code on CoreLink SSE-200 Subsystem for MPS3 (AN524)
435======================================================================
436FPGA image is available to download `here <https://www.arm.com/products/development-tools/development-boards/mps3>`__
437
438To run BL2 bootloader and TF-M example application and tests in the MPS3 board,
439it is required to have SMM-SSE-200 for MPS3 (AN524) image in the MPS3 board
440SD card. The image should be located in
441``<MPS3 device name>/MB/HBI<BoardNumberBoardrevision>/AN524``
442
443And the current boot memory for AN524 is QSPI flash, so you need to set the
444correct REMAP option in
445``<MPS3 device name>/MB/HBI<BoardNumberBoardrevision>/AN524/an524_v1.txt``
446
447::
448
449 REMAP: QSPI ;REMAP boot device BRAM/QSPI. Must match REMAPVAL below.
450 REMAPVAL: 1 ;REMAP register value e.g. 0-BRAM. 1-QSPI
451
452The MPS3 board tested is HBI0309B.
453
454.. Note::
455 If you change the exe names, MPS3 expects file names in 8.3 format.
456
457Example application
458-------------------
Raef Coles1ecb8132020-10-02 15:11:24 +0100459#. Copy ``bl2.bin`` and ``tfm_s_ns_signed.bin`` files from
Kevin Peng0a142112018-09-21 10:42:22 +0800460 build dir to ``<MPS3 device name>/SOFTWARE/``
461#. Open ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
462#. Update the ``images.txt`` file as follows::
463
464 TITLE: Arm MPS3 FPGA prototyping board Images Configuration File
465
466 [IMAGES]
467 TOTALIMAGES: 2 ;Number of Images (Max: 32)
468
469 IMAGE0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
470 IMAGE0ADDRESS: 0x00000000 ;Please select the required executable program
Raef Coles1ecb8132020-10-02 15:11:24 +0100471 IMAGE0FILE: \SOFTWARE\bl2.bin
Kevin Peng0a142112018-09-21 10:42:22 +0800472 IMAGE1UPDATE: AUTO
473 IMAGE1ADDRESS: 0x00040000
Raef Coles1ecb8132020-10-02 15:11:24 +0100474 IMAGE1FILE: \SOFTWARE\tfm_s_ns_signed.bin
Kevin Peng0a142112018-09-21 10:42:22 +0800475
476#. Close ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
477#. Unmount/eject the ``<MPS3 device name>`` unit
478#. Reset the board to execute the TF-M example application
479#. After completing the procedure you should be able to visualize on the serial
480 port (baud 115200 8n1) the following messages::
481
482 [INF] Starting bootloader
483 [INF] Image 0: magic= good, copy_done=0xff, image_ok=0xff
484 [INF] Scratch: magic=unset, copy_done=0x43, image_ok=0xff
485 [INF] Boot source: slot 0
486 [INF] Swap type: none
487 [INF] Bootloader chainload address offset: 0x40000
488 [INF] Jumping to the first image slot
489 [Sec Thread] Secure image initializing!
490
491Regression tests
492----------------
493After completing the procedure you should be able to visualize on the serial
494port (baud 115200 8n1) the following messages::
495
496 [INF] Starting bootloader
497 [INF] Image 0: magic= good, copy_done=0xff, image_ok=0xff
498 [INF] Scratch: magic=unset, copy_done=0x9, image_ok=0xff
499 [INF] Boot source: slot 0
500 [INF] Swap type: none
501 [INF] Bootloader chainload address offset: 0x40000
502 [INF] Jumping to the first image slot
503 [Sec Thread] Secure image initializing!
504
505 #### Execute test suites for the Secure area ####
Kevin Pengc6d74502020-03-04 16:55:37 +0800506 Running Test Suite PSA protected storage S interface tests (TFM_PS_TEST_2XXX)...
507 > Executing 'TFM_PS_TEST_2001'
Kevin Peng0a142112018-09-21 10:42:22 +0800508 Description: 'Set interface'
509 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800510 > Executing 'TFM_PS_TEST_2002'
Kevin Peng0a142112018-09-21 10:42:22 +0800511 Description: 'Set interface with create flags'
512 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800513 > Executing 'TFM_PS_TEST_2003'
Kevin Peng0a142112018-09-21 10:42:22 +0800514 Description: 'Set interface with NULL data pointer'
515 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800516 > Executing 'TFM_PS_TEST_2004'
Kevin Peng0a142112018-09-21 10:42:22 +0800517 Description: 'Set interface with invalid data length'
518 TEST PASSED!
519 ....
520
521.. Note::
522 Some of the attestation tests take a few minutes to run on the MPS3.
523
524Example application without BL2 bootloader
525------------------------------------------
526#. Copy ``tfm_s.bin`` and ``tfm_ns.bin`` files from
527 build dir to ``<MPS3 device name>/SOFTWARE/``
528#. Open ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
529#. Update the ``images.txt`` file as follows::
530
531 TITLE: Arm MPS3 FPGA prototyping board Images Configuration File
532
533 [IMAGES]
534 TOTALIMAGES: 2 ;Number of Images (Max: 32)
535
536 IMAGE0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
537 IMAGE0ADDRESS: 0x00000000 ;Please select the required executable program
538 IMAGE0FILE: \SOFTWARE\tfm_s.bin
539 IMAGE1UPDATE: AUTO
Mingyang Sund3db85d2020-03-20 16:23:53 +0800540 IMAGE1ADDRESS: 0x000C0000
Kevin Peng0a142112018-09-21 10:42:22 +0800541 IMAGE1FILE: \SOFTWARE\tfm_ns.bin
542
543#. Close ``<MPS3 device name>/MB/HBI0309B/AN521/images.txt``
544#. Unmount/eject the ``<MPS3 device name>`` unit
545#. Reset the board to execute the TF-M example application
546#. After completing the procedure you should be able to visualize on the serial
547 port (baud 115200 8n1) the following messages::
548
549 [Sec Thread] Secure image initializing!
550
551Regression tests without BL2 bootloader
552---------------------------------------
553After completing the procedure you should be able to visualize on the serial
554port (baud 115200 8n1) the following messages::
555
556 [Sec Thread] Secure image initializing!
557
558 #### Execute test suites for the Secure area ####
Kevin Pengc6d74502020-03-04 16:55:37 +0800559 Running Test Suite PSA protected storage S interface tests (TFM_PS_TEST_2XXX)...
560 > Executing 'TFM_PS_TEST_2001'
Kevin Peng0a142112018-09-21 10:42:22 +0800561 Description: 'Set interface'
562 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800563 > Executing 'TFM_PS_TEST_2002'
Kevin Peng0a142112018-09-21 10:42:22 +0800564 Description: 'Set interface with create flags'
565 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800566 > Executing 'TFM_PS_TEST_2003'
Kevin Peng0a142112018-09-21 10:42:22 +0800567 Description: 'Set interface with NULL data pointer'
568 TEST PASSED!
Kevin Pengc6d74502020-03-04 16:55:37 +0800569 > Executing 'TFM_PS_TEST_2004'
Kevin Peng0a142112018-09-21 10:42:22 +0800570 Description: 'Set interface with invalid data length'
571 TEST PASSED!
572 ....
573
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200574Firmware upgrade and image validation with BL2 bootloader
575=========================================================
576High level operation of BL2 bootloader and instructions for testing firmware
577upgrade is described in :doc:`secure boot <tfm_secure_boot>`.
578
579--------------
580
Minos Galanakis3b740a12020-10-15 11:10:26 +0100581.. _Arm Development Studio: https://developer.arm.com/tools-and-software/embedded/arm-development-studio
582.. _Arm Development Studio Documentation: https://developer.arm.com/tools-and-software/embedded/arm-development-studio/learn/docs
583.. _Fixed Virtual Platforms: https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms
584.. _Fixed Virtual Platforms Documentation: https://developer.arm.com/documentation/100966/latest
585.. _Keil MDK: http://www2.keil.com/mdk5
586.. _Keil MDK Documentation: https://www2.keil.com/mdk5/docs
587
Mingyang Sund3db85d2020-03-20 16:23:53 +0800588*Copyright (c) 2017-2020, Arm Limited. All rights reserved.*