blob: f653e833e3438449be8d53a3e8b75aade27d8907 [file] [log] [blame]
Gyorgy Szingdb9783c2019-04-17 21:08:48 +02001#############################
2Trusted Firmware M user guide
3#############################
4How 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****************************************************************
14The BL2 bootloader and TF-M example application and tests run correctly on
15SMM-SSE-200 for MPS2 (AN521) and on the Fixed Virtual Platform model
16FVP_MPS2_AEMv8M version 11.2.23.
17
18To run the example code on FVP_MPS2_AEMv8M
19==========================================
20Using FVP_MPS2_AEMv8M provided by DS-5 v5.27.1.
21
22.. Note::
23 FVP reference guide can be found
24 `here <https://developer.arm.com/docs/100966/latest>`__
25
26Example application and regression tests without BL2 bootloader
27---------------------------------------------------------------
28Add ``tfm_s.axf`` and ``tfm_ns.axf`` to symbol files in Debug Configuration
29menu.
30
31.. code-block:: bash
32
33 <DS5_PATH>/sw/models/bin/FVP_MPS2_AEMv8M \
34 --parameter fvp_mps2.platform_type=2 \
35 --parameter cpu0.baseline=0 \
36 --parameter cpu0.INITVTOR_S=0x10000000 \
37 --parameter cpu0.semihosting-enable=0 \
38 --parameter fvp_mps2.DISABLE_GATING=0 \
39 --parameter fvp_mps2.telnetterminal0.start_telnet=1 \
40 --parameter fvp_mps2.telnetterminal1.start_telnet=0 \
41 --parameter fvp_mps2.telnetterminal2.start_telnet=0 \
42 --parameter fvp_mps2.telnetterminal0.quiet=0 \
43 --parameter fvp_mps2.telnetterminal1.quiet=1 \
44 --parameter fvp_mps2.telnetterminal2.quiet=1 \
45 --application cpu0=<build_dir>/install/outputs/fvp/tfm_s.axf \
46 --data cpu0=<build_dir>/install/outputs/fvp/tfm_ns.bin@0x00100000
47
48Example application and regression tests with BL2 bootloader
49------------------------------------------------------------
50To test TF-M with bootloader, one must apply the following changes:
51
52- Add ``mcuboot.axf`` to symbol files in DS-5 in Debug Configuration
53 menu.
54- Replace the last two lines of the previous command with this:
55
56.. code-block:: bash
57
58 --application cpu0=<build_dir>/install/outputs/fvp/mcuboot.axf \
59 --data cpu0=<build_dir>/install/outputs/fvp/tfm_s_ns_signed.bin@0x10080000
60
61Test software upgrade with BL2 bootloader
62^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
63BL2 bootloader is mandatory to test software update. Furthermore two TF-M blob
64must be built. Outputs of example application and regression test can be used to
David Vincze8bdfc2d2019-03-18 15:49:23 +010065test it. Load output of example application to the primary slot (0x10080000) and
66output of regression test to the secondary slot (0x10180000). Add the following
67line to the end of the previous chapter:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020068
69.. code-block:: bash
70
71 --data cpu0=<build_dir>/install/outputs/fvp/tfm_s_ns_signed.bin@0x10180000
72
73To run the example code on SSE 200 FPGA on MPS2 board
74=====================================================
75FPGA image is available to download
76`here <https://developer.arm.com/products/system-design/development-boards/cortex-m-prototyping-systems/mps2>`__
77
78To run BL2 bootloader and TF-M example application and tests in the MPS2 board,
79it is required to have SMM-SSE-200 for MPS2 (AN521) image in the MPS2 board SD
80card. The image should be located in
81``<MPS2 device name>/MB/HBI0263<board revision letter>/AN521``
82
83The MPS2 board tested is HBI0263C referred also as MPS2+.
84
85.. Warning::
86
87 If you change the exe names, MPS2 expects file names in 8.3 format.
88
89Example application
90-------------------
91#. Copy ``mcuboot.bin`` and ``tfm_sign.bin`` files from
92 ``<build_dir>/install/outputs/AN521/`` to
93 ``<MPS2 device name>/SOFTWARE/``
94#. Open ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
95#. Update the ``AN521/images.txt`` file as follows::
96
97 TITLE: Versatile Express Images Configuration File
98 [IMAGES]
99 TOTALIMAGES: 2 ;Number of Images (Max: 32)
100 IMAGE0ADDRESS: 0x10000000
101 IMAGE0FILE: \Software\mcuboot.bin ; BL2 bootloader
102 IMAGE1ADDRESS: 0x10080000
103 IMAGE1FILE: \Software\tfm_sign.bin ; TF-M example application binary blob
104
105#. Close ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
106#. Unmount/eject the ``<MPS2 device name>`` unit
107#. Reset the board to execute the TF-M example application
108#. After completing the procedure you should be able to visualize on the serial
109 port (baud 115200 8n1) the following messages::
110
111 [INF] Starting bootloader
112 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
113 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xcf
David Vincze8bdfc2d2019-03-18 15:49:23 +0100114 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200115 [INF] Swap type: none
116 [INF] Bootloader chainload address offset: 0x80000
117 [INF] Jumping to the first image slot
118 [Sec Thread] Secure image initializing!
119
120Regression tests
121----------------
122After completing the procedure you should be able to visualize on the serial
123port (baud 115200 8n1) the following messages::
124
125 [INF] Starting bootloader
126 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
127 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xcf
David Vincze8bdfc2d2019-03-18 15:49:23 +0100128 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200129 [INF] Swap type: none
130 [INF] Bootloader chainload address offset: 0x80000
131 [INF] Jumping to the first image slot
132 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100133
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200134 #### Execute test suites for the secure storage service ####
135 Running Test Suite SST secure interface tests (TFM_SST_TEST_2XXX)...
Jamie Foxb8a92702019-06-05 17:19:31 +0100136
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200137 > Executing 'TFM_SST_TEST_2001'
138 Description: 'Create interface'
139 TEST PASSED!
140 > Executing 'TFM_SST_TEST_2002'
141 Description: 'Get handle interface (DEPRECATED)'
142 This test is DEPRECATED and the test execution was SKIPPED
143 TEST PASSED!
144 > Executing 'TFM_SST_TEST_2003'
145 Description: 'Get handle with null handle pointer (DEPRECATED)'
146 This test is DEPRECATED and the test execution was SKIPPED
147 TEST PASSED!
148 > Executing 'TFM_SST_TEST_2004'
149 Description: 'Write interface'
150 TEST PASSED!
151 > Executing 'TFM_SST_TEST_2005'
152 Description: 'Read interface'
153 ....
154
155.. Note::
156
157 SST reliability tests take a few minutes to run on the MPS2.
158
159Example application without BL2 bootloader
160------------------------------------------
161#. Copy ``tfm_s.bin`` and ``tfm_ns.bin`` files from
162 ``<build_dir>/install/outputs/AN521/`` to
163 ``<MPS2 device name>/SOFTWARE/``
164#. Open ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
165#. Update the ``AN521/images.txt`` file as follows::
166
167 TITLE: Versatile Express Images Configuration File
168 [IMAGES]
169 TOTALIMAGES: 2 ;Number of Images (Max: 32)
170 IMAGE0ADDRESS: 0x10000000
171 IMAGE0FILE: \Software\tfm_s.bin ; Secure code
172 IMAGE1ADDRESS: 0x00100000
173 IMAGE1FILE: \Software\tfm_ns.bin ; Non-secure code
174
175#. Close ``<MPS2 device name>/MB/HBI0263C/AN521/images.txt``
176#. Unmount/eject the ``<MPS2 device name>`` unit
177#. Reset the board to execute the TF-M example application
178#. After completing the procedure you should be able to visualize on the serial
179 port (baud 115200 8n1) the following messages::
180
181 [Sec Thread] Secure image initializing!
182
183Regression tests without BL2 bootloader
184---------------------------------------
185After completing the procedure you should be able to visualize on the serial
186port (baud 115200 8n1) the following messages::
187
188 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100189
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200190 #### Execute test suites for the secure storage service ####
191 Running Test Suite SST secure interface tests (TFM_SST_TEST_2XXX)...
Jamie Foxb8a92702019-06-05 17:19:31 +0100192
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200193 > Executing 'TFM_SST_TEST_2001'
194 Description: 'Create interface'
195 TEST PASSED!
196 > Executing 'TFM_SST_TEST_2002'
197 Description: 'Get handle interface (DEPRECATED)'
198 This test is DEPRECATED and the test execution was SKIPPED
199 TEST PASSED!
200 > Executing 'TFM_SST_TEST_2003'
201 Description: 'Get handle with null handle pointer (DEPRECATED)'
202 This test is DEPRECATED and the test execution was SKIPPED
203 TEST PASSED!
204 > Executing 'TFM_SST_TEST_2004'
205 Description: 'Write interface'
206 TEST PASSED!
207 > Executing 'TFM_SST_TEST_2005'
208 Description: 'Read interface'
209 ....
210
211*******************************************************************
212Execute TF-M example and regression tests on Musca test chip boards
213*******************************************************************
214.. Note::
215
216 Before executing any images on Musca-B1 board, please check the
217 :doc:`target platform readme </platform/ext/target/musca_b1/readme>`
218 to have the correct setup.
219
220Example application with BL2 bootloader
221=======================================
222
Jamie Foxb5215c32019-06-05 17:39:39 +0100223#. Create a unified hex file comprising of both ``mcuboot.bin`` and
224 ``tfm_sign.bin``.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200225
Jamie Foxb5215c32019-06-05 17:39:39 +0100226 - For Musca-A
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200227
Jamie Foxb5215c32019-06-05 17:39:39 +0100228 - Windows::
Jamie Foxb8a92702019-06-05 17:19:31 +0100229
Jamie Foxb5215c32019-06-05 17:39:39 +0100230 srec_cat.exe bl2\ext\mcuboot\mcuboot.bin -Binary -offset 0x200000 tfm_sign.bin -Binary -offset 0x220000 -o tfm.hex -Intel
Jamie Foxb8a92702019-06-05 17:19:31 +0100231
Jamie Foxb5215c32019-06-05 17:39:39 +0100232 - Linux::
Jamie Foxb8a92702019-06-05 17:19:31 +0100233
Jamie Foxb5215c32019-06-05 17:39:39 +0100234 srec_cat bl2/ext/mcuboot/mcuboot.bin -Binary -offset 0x200000 tfm_sign.bin -Binary -offset 0x220000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200235
Jamie Foxb5215c32019-06-05 17:39:39 +0100236 - For Musca-B1
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
Jamie Foxb5215c32019-06-05 17:39:39 +0100240 srec_cat.exe bl2\ext\mcuboot\mcuboot.bin -Binary -offset 0xA000000 tfm_sign.bin -Binary -offset 0xA020000 -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
Jamie Foxb5215c32019-06-05 17:39:39 +0100244 srec_cat bl2/ext/mcuboot/mcuboot.bin -Binary -offset 0xA000000 tfm_sign.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200245
Jamie Foxb5215c32019-06-05 17:39:39 +0100246#. Power up the Musca board by connecting it to a computer with a USB lead.
247 Press the ``PBON`` button if the green ``ON`` LED does not immediately turn
248 on. The board should appear as a USB drive.
249#. Copy ``tfm.hex`` to the USB drive. The orange ``PWR`` LED should start
250 blinking.
251#. Once the ``PWR`` LED stops blinking, power cycle or reset the board to boot
252 from the new image.
253#. After completing the procedure you should see the following messages on the
254 DAPLink UART (baud 115200 8n1)::
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200255
256 [INF] Starting bootloader
257 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
258 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0xd9
David Vincze8bdfc2d2019-03-18 15:49:23 +0100259 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200260 [INF] Swap type: none
261 [INF] Bootloader chainload address offset: 0x20000
262 [INF] Jumping to the first image slot
263 [Sec Thread] Secure image initializing!
264
265Regression tests with BL2 bootloader
266====================================
267After completing the procedure you should see the following messages on the
Jamie Foxb5215c32019-06-05 17:39:39 +0100268DAPLink UART (baud 115200 8n1)::
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200269
270 [INF] Starting bootloader
271 [INF] Image 0: magic=good, copy_done=0xff, image_ok=0xff
272 [INF] Scratch: magic=bad, copy_done=0x5, image_ok=0x9
David Vincze8bdfc2d2019-03-18 15:49:23 +0100273 [INF] Boot source: primary slot
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200274 [INF] Swap type: none
275 [INF] Bootloader chainload address offset: 0x20000
276 [INF] Jumping to the first image slot
277 [Sec Thread] Secure image initializing!
Jamie Foxb8a92702019-06-05 17:19:31 +0100278
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200279 #### Execute test suites for the secure storage service ####
280 Running Test Suite SST secure interface tests (TFM_SST_TEST_2XXX)...
281 > Executing 'TFM_SST_TEST_2001'
282 Description: 'Create interface'
283 TEST PASSED!
284 > Executing 'TFM_SST_TEST_2002'
285 Description: 'Get handle interface (DEPRECATED)'
286 This test is DEPRECATED and the test execution was SKIPPED
287 TEST PASSED!
288 > Executing 'TFM_SST_TEST_2003'
289 Description: 'Get handle with null handle pointer (DEPRECATED)'
290 This test is DEPRECATED and the test execution was SKIPPED
291 TEST PASSED!
292 > Executing 'TFM_SST_TEST_2004'
293 Description: 'Get attributes interface'
294 TEST PASSED!
295 > Executing 'TFM_SST_TEST_2005'
296 Description: 'Get attributes with null attributes struct pointer'
297 ....
298
299Example application or regression tests on Musca-B1 without BL2 bootloader
300==========================================================================
301
302Follow the above procedures, but create a unified hex file out of ``tfm_s.bin``
303and ``tfm_ns.bin``:
304
305- Windows::
306
307 srec_cat.exe app\secure_fw\tfm_s.bin -Binary -offset 0xA000000 app\tfm_ns.bin -Binary -offset 0xA060000 -o tfm.hex -Intel
308
309- Linux::
310
311 srec_cat app/secure_fw/tfm_s.bin -Binary -offset 0xA000000 app/tfm_ns.bin -Binary -offset 0xA060000 -o tfm.hex -Intel
312
Kevin Peng0a142112018-09-21 10:42:22 +0800313********************************************************
314Execute TF-M example and regression tests on MPS3 boards
315********************************************************
316
317To run the example code on CoreLink SSE-200 Subsystem for MPS3 (AN524)
318======================================================================
319FPGA image is available to download `here <https://www.arm.com/products/development-tools/development-boards/mps3>`__
320
321To run BL2 bootloader and TF-M example application and tests in the MPS3 board,
322it is required to have SMM-SSE-200 for MPS3 (AN524) image in the MPS3 board
323SD card. The image should be located in
324``<MPS3 device name>/MB/HBI<BoardNumberBoardrevision>/AN524``
325
326And the current boot memory for AN524 is QSPI flash, so you need to set the
327correct REMAP option in
328``<MPS3 device name>/MB/HBI<BoardNumberBoardrevision>/AN524/an524_v1.txt``
329
330::
331
332 REMAP: QSPI ;REMAP boot device BRAM/QSPI. Must match REMAPVAL below.
333 REMAPVAL: 1 ;REMAP register value e.g. 0-BRAM. 1-QSPI
334
335The MPS3 board tested is HBI0309B.
336
337.. Note::
338 If you change the exe names, MPS3 expects file names in 8.3 format.
339
340Example application
341-------------------
342#. Copy ``mcuboot.bin`` and ``tfm_sign.bin`` files from
343 build dir to ``<MPS3 device name>/SOFTWARE/``
344#. Open ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
345#. Update the ``images.txt`` file as follows::
346
347 TITLE: Arm MPS3 FPGA prototyping board Images Configuration File
348
349 [IMAGES]
350 TOTALIMAGES: 2 ;Number of Images (Max: 32)
351
352 IMAGE0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
353 IMAGE0ADDRESS: 0x00000000 ;Please select the required executable program
354 IMAGE0FILE: \SOFTWARE\mcuboot.bin
355 IMAGE1UPDATE: AUTO
356 IMAGE1ADDRESS: 0x00040000
357 IMAGE1FILE: \SOFTWARE\tfm_sign.bin
358
359#. Close ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
360#. Unmount/eject the ``<MPS3 device name>`` unit
361#. Reset the board to execute the TF-M example application
362#. After completing the procedure you should be able to visualize on the serial
363 port (baud 115200 8n1) the following messages::
364
365 [INF] Starting bootloader
366 [INF] Image 0: magic= good, copy_done=0xff, image_ok=0xff
367 [INF] Scratch: magic=unset, copy_done=0x43, image_ok=0xff
368 [INF] Boot source: slot 0
369 [INF] Swap type: none
370 [INF] Bootloader chainload address offset: 0x40000
371 [INF] Jumping to the first image slot
372 [Sec Thread] Secure image initializing!
373
374Regression tests
375----------------
376After completing the procedure you should be able to visualize on the serial
377port (baud 115200 8n1) the following messages::
378
379 [INF] Starting bootloader
380 [INF] Image 0: magic= good, copy_done=0xff, image_ok=0xff
381 [INF] Scratch: magic=unset, copy_done=0x9, image_ok=0xff
382 [INF] Boot source: slot 0
383 [INF] Swap type: none
384 [INF] Bootloader chainload address offset: 0x40000
385 [INF] Jumping to the first image slot
386 [Sec Thread] Secure image initializing!
387
388 #### Execute test suites for the Secure area ####
389 Running Test Suite PSA protected storage S interface tests (TFM_SST_TEST_2XXX)...
390 > Executing 'TFM_SST_TEST_2001'
391 Description: 'Set interface'
392 TEST PASSED!
393 > Executing 'TFM_SST_TEST_2002'
394 Description: 'Set interface with create flags'
395 TEST PASSED!
396 > Executing 'TFM_SST_TEST_2003'
397 Description: 'Set interface with NULL data pointer'
398 TEST PASSED!
399 > Executing 'TFM_SST_TEST_2004'
400 Description: 'Set interface with invalid data length'
401 TEST PASSED!
402 ....
403
404.. Note::
405 Some of the attestation tests take a few minutes to run on the MPS3.
406
407Example application without BL2 bootloader
408------------------------------------------
409#. Copy ``tfm_s.bin`` and ``tfm_ns.bin`` files from
410 build dir to ``<MPS3 device name>/SOFTWARE/``
411#. Open ``<MPS3 device name>/MB/HBI0309B/AN524/images.txt``
412#. Update the ``images.txt`` file as follows::
413
414 TITLE: Arm MPS3 FPGA prototyping board Images Configuration File
415
416 [IMAGES]
417 TOTALIMAGES: 2 ;Number of Images (Max: 32)
418
419 IMAGE0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
420 IMAGE0ADDRESS: 0x00000000 ;Please select the required executable program
421 IMAGE0FILE: \SOFTWARE\tfm_s.bin
422 IMAGE1UPDATE: AUTO
423 IMAGE1ADDRESS: 0x00080000
424 IMAGE1FILE: \SOFTWARE\tfm_ns.bin
425
426#. Close ``<MPS3 device name>/MB/HBI0309B/AN521/images.txt``
427#. Unmount/eject the ``<MPS3 device name>`` unit
428#. Reset the board to execute the TF-M example application
429#. After completing the procedure you should be able to visualize on the serial
430 port (baud 115200 8n1) the following messages::
431
432 [Sec Thread] Secure image initializing!
433
434Regression tests without BL2 bootloader
435---------------------------------------
436After completing the procedure you should be able to visualize on the serial
437port (baud 115200 8n1) the following messages::
438
439 [Sec Thread] Secure image initializing!
440
441 #### Execute test suites for the Secure area ####
442 Running Test Suite PSA protected storage S interface tests (TFM_SST_TEST_2XXX)...
443 > Executing 'TFM_SST_TEST_2001'
444 Description: 'Set interface'
445 TEST PASSED!
446 > Executing 'TFM_SST_TEST_2002'
447 Description: 'Set interface with create flags'
448 TEST PASSED!
449 > Executing 'TFM_SST_TEST_2003'
450 Description: 'Set interface with NULL data pointer'
451 TEST PASSED!
452 > Executing 'TFM_SST_TEST_2004'
453 Description: 'Set interface with invalid data length'
454 TEST PASSED!
455 ....
456
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200457Firmware upgrade and image validation with BL2 bootloader
458=========================================================
459High level operation of BL2 bootloader and instructions for testing firmware
460upgrade is described in :doc:`secure boot <tfm_secure_boot>`.
461
462--------------
463
464*Copyright (c) 2017-2019, Arm Limited. All rights reserved.*