blob: 3746ce7723d3209f1251a2656a558b308d56cd90 [file] [log] [blame]
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001Trusted Firmware-A Tests - User Guide
2=====================================
3
4.. section-numbering::
5 :suffix: .
6
7.. contents::
8
9This document describes how to build the Trusted Firmware-A Tests (TF-A Tests)
10and run them on a set of platforms. It assumes that the reader has previous
11experience building and running the `Trusted Firmware-A (TF-A)`_.
12
13Host machine requirements
14-------------------------
15
16The minimum recommended machine specification for building the software and
17running the `FVP models`_ is a dual-core processor running at 2GHz with 12GB of
18RAM. For best performance, use a machine with a quad-core processor running at
192.6GHz with 16GB of RAM.
20
21The software has been tested on Ubuntu 16.04 LTS (64-bit). Packages used for
22building the software were installed from that distribution unless otherwise
23specified.
24
25Tools
26-----
27
28Install the required packages to build TF-A Tests with the following command:
29
30::
31
Antonio Nino Diaz0c697f92018-11-30 10:51:26 +000032 sudo apt-get install device-tree-compiler build-essential make git perl libxml-libxml-perl
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020033
34Download and install the GNU cross-toolchain from Linaro. The TF-A Tests have
35been tested with version 6.2-2016.11 (gcc 6.2):
36
37- `AArch32 GNU cross-toolchain`_
38- `AArch64 GNU cross-toolchain`_
39
40In addition, the following optional packages and tools may be needed:
41
42- For debugging, Arm `Development Studio 5 (DS-5)`_.
43
44Getting the TF-A Tests source code
45----------------------------------
46
47Download the TF-A Tests source code using the following command:
48
49::
50
Sandrine Bailleux2d0136e2018-11-05 14:21:27 +010051 git clone https://git.trustedfirmware.org/TF-A/tf-a-tests.git
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020052
53Building TF-A Tests
54-------------------
55
56- Before building TF-A Tests, the environment variable ``CROSS_COMPILE`` must
57 point to the Linaro cross compiler.
58
59 For AArch64:
60
61 ::
62
63 export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-linux-gnu-
64
65 For AArch32:
66
67 ::
68
69 export CROSS_COMPILE=<path-to-aarch32-gcc>/bin/arm-linux-gnueabihf-
70
71- Change to the root directory of the TF-A Tests source tree and build.
72
73 For AArch64:
74
75 ::
76
77 make PLAT=<platform>
78
79 For AArch32:
80
81 ::
82
83 make PLAT=<platform> ARCH=aarch32
84
85 Notes:
86
87 - If ``PLAT`` is not specified, ``fvp`` is assumed by default. See the
88 `Summary of build options`_ for more information on available build
89 options.
90
91 - By default this produces a release version of the build. To produce a
92 debug version instead, build the code with ``DEBUG=1``.
93
94 - The build process creates products in a ``build/`` directory tree,
95 building the objects and binaries for each test image in separate
96 sub-directories. The following binary files are created from the
97 corresponding ELF files:
98
99 - ``build/<platform>/<build-type>/tftf.bin``
100 - ``build/<platform>/<build-type>/ns_bl1u.bin``
101 - ``build/<platform>/<build-type>/ns_bl2u.bin``
102 - ``build/<platform>/<build-type>/el3_payload.bin``
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000103 - ``build/<platform>/<build-type>/cactus_mm.bin``
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200104 - ``build/<platform>/<build-type>/cactus.bin``
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000105 - ``build/<platform>/<build-type>/ivy.bin``
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200106
107 where ``<platform>`` is the name of the chosen platform and ``<build-type>``
108 is either ``debug`` or ``release``. The actual number of images might differ
109 depending on the platform.
110
111 Refer to the sections below for more information about each image.
112
113- Build products for a specific build variant can be removed using:
114
115 ::
116
117 make DEBUG=<D> PLAT=<platform> clean
118
119 ... where ``<D>`` is ``0`` or ``1``, as specified when building.
120
121 The build tree can be removed completely using:
122
123 ::
124
125 make realclean
126
127- Use the following command to list all supported build commands:
128
129 ::
130
131 make help
132
133TFTF test image
134```````````````
135
136``tftf.bin`` is the main test image to exercise the TF-A features. The other
137test images provided in this repository are optional dependencies that TFTF
138needs to test some specific features.
139
140``tftf.bin`` may be built independently of the other test images using the
141following command:
142
143::
144
145 make PLAT=<platform> tftf
146
147In TF-A boot flow, ``tftf.bin`` replaces the ``BL33`` image and should be
148injected in the FIP image. This might be achieved by running the following
149command from the TF-A root directory:
150
151::
152
153 BL33=tftf.bin make PLAT=<platform> fip
154
155Please refer to the `TF-A User guide`_ for further details.
156
157NS_BL1U and NS_BL2U test images
158```````````````````````````````
159
160``ns_bl1u.bin`` and ``ns_bl2u.bin`` are test images that exercise the `Firmware
161Update`_ (FWU) feature of TF-A [#]_. Throughout this document, they will be
162referred as the `FWU test images`.
163
164In addition to updating the firmware, the FWU test images also embed some tests
165that exercise the `FWU state machine`_ implemented in the TF-A. They send valid
166and invalid SMC requests to the TF-A BL1 image in order to test its robustness.
167
168NS_BL1U test image
169''''''''''''''''''
170
171The ``NS_BL1U`` image acts as the `Application Processor (AP) Firmware Update
172Boot ROM`. This typically is the first software agent executing on the AP in the
173Normal World during a firmware update operation. Its primary purpose is to load
174subsequent firmware update images from an external interface, such as NOR Flash,
175and communicate with ``BL1`` to authenticate those images.
176
177The ``NS_BL1U`` test image provided in this repository performs the following
178tasks:
179
180- Load FWU images from external non-volatile storage (typically flash memory)
181 to Non-Secure RAM.
182
183- Request TF-A BL1 to copy these images in Secure RAM and authenticate them.
184
185- Jump to ``NS_BL2U`` which carries out the next steps in the firmware update
186 process.
187
188This image may be built independently of the other test images using the
189following command:
190
191::
192
193 make PLAT=<platform> ns_bl1u
194
195NS_BL2U test image
196''''''''''''''''''
197
198The ``NS_BL2U`` image acts as the `AP Firmware Updater`. Its primary
199responsibility is to load a new set of firmware images from an external
200interface and write them into non-volatile storage.
201
202The ``NS_BL2U`` test image provided in this repository overrides the original
203FIP image stored in flash with the backup FIP image (see below).
204
205This image may be built independently of the other test images using the
206following command:
207
208::
209
210 make PLAT=<platform> ns_bl2u
211
212Putting it all together
213'''''''''''''''''''''''
214
215The FWU test images should be used in conjunction with the TFTF image, as the
216latter initiates the FWU process by corrupting the FIP image and resetting the
217target. Once the FWU process is complete, TFTF takes over again and checks that
218the firmware was successfully updated.
219
220To sum up, 3 images must be built out of the TF-A Tests repository in order to
221test the TF-A Firmware Update feature:
222
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100223- ``ns_bl1u.bin``
224- ``ns_bl2u.bin``
225- ``tftf.bin``
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200226
227Once that's done, they must be combined in the right way.
228
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100229- ``ns_bl1u.bin`` is a standalone image and does not require any further
230 processing.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200231
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100232- ``ns_bl2u.bin`` must be injected into the ``FWU_FIP`` image. This might be
233 achieved by setting ``NS_BL2U=ns_bl2u.bin`` when building the ``FWU_FIP``
234 image out of the TF-A repository. Please refer to the section `Building FIP
235 images with support for Trusted Board Boot`_ in the TF-A User Guide.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200236
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100237- ``tftf.bin`` must be injected in the standard FIP image, as explained
238 in section `TFTF test image`_.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200239
240Additionally, on Juno platform, the FWU FIP must contain a ``SCP_BL2U`` image.
241This image can simply be a copy of the standard ``SCP_BL2`` image if no specific
242firmware update operations need to be carried on the SCP side.
243
244Finally, the backup FIP image must be created. This can simply be a copy of the
245standard FIP image, which means that the Firmware Update process will restore
246the original, uncorrupted FIP image.
247
248EL3 test payload
249````````````````
250
251``el3_payload.bin`` is a test image exercising the alternative `EL3 payload boot
252flow`_ in TF-A. Refer to the `EL3 test payload README file`_ for more details
253about its behaviour and how to build and run it.
254
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000255SPM test images
256```````````````
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200257
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000258This repository contains 3 Secure Partitions that exercise the `Secure Partition
259Manager`_ (SPM) in TF-A [#]_. Cactus-MM is designed to test the SPM
260implementation based on the `ARM Management Mode Interface`_ (MM), while Cactus
261and Ivy can test the SPM implementation based on the SPCI and SPRT draft
262specifications. Note that it isn't possible to use both communication mechanisms
263at once: If Cactus-MM is used Cactus and Ivy can't be used.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200264
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000265They run in Secure-EL0 and perform the following tasks:
266
267- Test that TF-A has correctly setup the secure partition environment: They
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200268 should be allowed to perform cache maintenance operations, access floating
269 point registers, etc.
270
271- Test that TF-A accepts to change data access permissions and instruction
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000272 permissions on behalf of the Secure Partitions for memory regions the latter
273 owns.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200274
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000275- Test communication with SPM through either MM, or both SPCI and SPRT.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200276
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000277They are only supported on AArch64 FVP. They can be built independently of the
278other test images using the following command:
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200279
280::
281
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000282 make PLAT=fvp cactus ivy cactus_mm
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200283
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000284In the TF-A boot flow, the partitions replace the ``BL32`` image and should be
285injected in the FIP image. To test SPM-MM with Cactus-MM, it is enough to use
286``cactus_mm.bin`` as BL32 image. To test the SPM based on SPCI and SPRT, it is
287needed to use ``sp_tool`` to build a Secure Partition package that can be used
288as BL32 image.
289
290To run the full set of tests in the Secure Partitions, they should be used in
291conjunction with the TFTF image.
292
293For SPM-MM, the following commands can be used to build the tests:
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200294
295::
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000296 # TF-A-Tests repository:
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200297
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000298 make PLAT=fvp TESTS=spm-mm tftf cactus_mm
299
300 # TF-A repository:
301
302 make BL33=path/to/tftf.bin BL32=path/to/cactus_mm.bin \
303 PLAT=fvp EL3_EXCEPTION_HANDLING=1 ENABLE_SPM=1 all fip
304
305For SPM based on SPCI and SPRT:
306
307::
308 # TF-A-Tests repository:
309
310 make PLAT=fvp TESTS=spm tftf cactus ivy
311
312 # TF-A repository:
313
314 make sptool
315
316 tools/sptool/sptool -o sp_package.bin \
317 -i path/to/cactus.bin:path/to/cactus.dtb \
318 -i path/to/ivy.bin:path/to/ivy.dtb
319
320 make BL33=path/to/tftf.bin BL32=path/to/sp_package.bin \
321 PLAT=fvp ENABLE_SPM=1 SPM_MM=0 ARM_BL31_IN_DRAM=1 all fip
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200322
323Please refer to the `TF-A User guide`_ for further details.
324
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200325Summary of build options
326````````````````````````
327
328As much as possible, TF-A Tests dynamically detect the platform hardware
329components and available features. There are a few build options to select
330specific features where the dynamic detection falls short. This section lists
331them.
332
333Unless mentioned otherwise, these options are expected to be specified at the
334build command line and are not to be modified in any component makefiles.
335
336Note that the build system doesn't track dependencies for build options.
337Therefore, if any of the build options are changed from a previous build, a
338clean build must be performed.
339
340Build options shared across test images
341'''''''''''''''''''''''''''''''''''''''
342
343Most of the build options listed in this section apply to TFTF, the FWU test
344images and Cactus, unless otherwise specified. These do not influence the EL3
345payload, whose simplistic build system is mostly independent.
346
347- ``ARCH``: Choose the target build architecture for TF-A Tests. It can take
348 either ``aarch64`` or ``aarch32`` as values. By default, it is defined to
349 ``aarch64``. Not all test images support this build option.
350
351- ``ARM_ARCH_MAJOR``: The major version of Arm Architecture to target when
352 compiling TF-A Tests. Its value must be numeric, and defaults to 8.
353
354- ``ARM_ARCH_MINOR``: The minor version of Arm Architecture to target when
355 compiling TF-A Tests. Its value must be a numeric, and defaults to 0.
356
357- ``DEBUG``: Chooses between a debug and a release build. A debug build
358 typically embeds assertions checking the validity of some assumptions and its
359 output is more verbose. The option can take either 0 (release) or 1 (debug)
360 as values. 0 is the default.
361
362- ``ENABLE_ASSERTIONS``: This option controls whether calls to ``assert()`` are
363 compiled out.
364
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100365 - For debug builds, this option defaults to 1, and calls to ``assert()`` are
366 compiled in.
367 - For release builds, this option defaults to 0 and calls to ``assert()``
368 are compiled out.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200369
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100370 This option can be set independently of ``DEBUG``. It can also be used to
371 hide any auxiliary code that is only required for the assertion and does not
372 fit in the assertion itself.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200373
374- ``LOG_LEVEL``: Chooses the log level, which controls the amount of console log
375 output compiled into the build. This should be one of the following:
376
377 ::
378
379 0 (LOG_LEVEL_NONE)
380 10 (LOG_LEVEL_ERROR)
381 20 (LOG_LEVEL_NOTICE)
382 30 (LOG_LEVEL_WARNING)
383 40 (LOG_LEVEL_INFO)
384 50 (LOG_LEVEL_VERBOSE)
385
386 All log output up to and including the selected log level is compiled into
387 the build. The default value is 40 in debug builds and 20 in release builds.
388
389- ``PLAT``: Choose a platform to build TF-A Tests for. The chosen platform name
390 must be a subdirectory of any depth under ``plat/``, and must contain a
391 platform makefile named ``platform.mk``. For example, to build TF-A Tests for
392 the Arm Juno board, select ``PLAT=juno``.
393
394- ``V``: Verbose build. If assigned anything other than 0, the build commands
395 are printed. Default is 0.
396
397TFTF build options
398''''''''''''''''''
399
Antonio Nino Diaz2f13f422019-03-13 13:57:39 +0000400- ``ENABLE_PAUTH``: Boolean option to enable ARMv8.3 Pointer Authentication
401 (``ARMv8.3-PAuth``) support in the Trusted Firmware-A Test Framework itself.
402 If enabled, it is needed to use a compiler that supports the option
403 ``-msign-return-address``. It defaults to 0.
404
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200405- ``NEW_TEST_SESSION``: Choose whether a new test session should be started
406 every time or whether the framework should determine whether a previous
407 session was interrupted and resume it. It can take either 1 (always
408 start new session) or 0 (resume session as appropriate). 1 is the default.
409
Sandrine Bailleux43ded0f2018-10-03 17:15:05 +0200410- ``TESTS``: Set of tests to run. Use the following command to list all
411 possible sets of tests:
412
413 ::
414
415 make help_tests
416
417 If no set of tests is specified, the standard tests will be selected (see
418 ``tftf/tests/tests-standard.xml``).
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200419
420- ``USE_NVM``: Used to select the location of test results. It can take either 0
421 (RAM) or 1 (non-volatile memory like flash) as test results storage. Default
422 value is 0, as writing to the flash significantly slows tests down.
423
424FWU test images build options
425'''''''''''''''''''''''''''''
426
427- ``FIRMWARE_UPDATE``: Whether the Firmware Update test images (i.e.
428 ``NS_BL1U`` and ``NS_BL2U``) should be built. The default value is 0. The
429 platform makefile is free to override this value if Firmware Update is
430 supported on this platform.
431
432Checking source code style
433--------------------------
434
435When making changes to the source for submission to the project, the source must
436be in compliance with the Linux style guide. To assist with this, the project
437Makefile provides two targets, which both utilise the ``checkpatch.pl`` script
438that ships with the Linux source tree.
439
440To check the entire source tree, you must first download copies of
441``checkpatch.pl``, ``spelling.txt`` and ``const_structs.checkpatch`` available
442in the `Linux master tree`_ scripts directory, then set the ``CHECKPATCH``
443environment variable to point to ``checkpatch.pl`` (with the other 2 files in
444the same directory).
445
446Then use the following command:
447
448::
449
450 make CHECKPATCH=<path-to-linux>/linux/scripts/checkpatch.pl checkcodebase
451
452To limit the coding style checks to your local changes, use:
453
454::
455
456 make CHECKPATCH=<path-to-linux>/linux/scripts/checkpatch.pl checkpatch
457
458By default, this will check all patches between ``origin/master`` and your local
459branch. If you wish to use a different reference commit, this can be specified
460using the ``BASE_COMMIT`` variable.
461
462Running the TF-A Tests
463----------------------
464
465Refer to the sections `Running the software on FVP`_ and `Running the software
466on Juno`_ in `TF-A User Guide`_. The same instructions mostly apply to run the
467TF-A Tests on those 2 platforms. The difference is that the following images are
468not needed here:
469
470- Normal World bootloader. The TFTF replaces it in the boot flow;
471
472- Linux Kernel;
473
474- Device tree;
475
476- Filesystem.
477
478In other words, only the following software images are needed:
479
480- ``BL1`` firmware image;
481
482- ``FIP`` image containing the following images:
John Tsichritzis4586e0d2018-10-18 10:00:28 +0100483
484 - ``BL2``;
485 - ``SCP_BL2`` if required by the platform (e.g. Juno);
486 - ``BL31``;
487 - ``BL32`` (optional);
488 - ``tftf.bin`` (standing as the BL33 image).
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200489
Joel Huttond18c45f2019-02-08 14:33:52 +0000490Running the manual tests on FVP
491```````````````````````````````
492The manual tests rely on storing state in non-volatile memory (NVM) across
493reboot. On FVP the NVM is not persistent across reboots, so the following
494flag must be used to write the NVM to a file when the model exits.
495
496::
Joel Huttond18c45f2019-02-08 14:33:52 +0000497 -C bp.flashloader0.fnameWrite=[filename]
498
Joel Hutton941bec52019-03-22 16:40:33 +0000499To ensure the model exits on shutdown the following flag must be used:
500
501::
502 -C bp.ve_sysregs.exit_on_shutdown=1
503
Joel Huttond18c45f2019-02-08 14:33:52 +0000504After the model has been shutdown, this file must be fed back in to continue
505the test. Note this flash file includes the FIP image, so the original fip.bin
506does not need to be passed in. The following flag is used:
507
508::
509
510 -C bp.flashloader0.fname=[filename]
511
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200512Running the FWU tests
513`````````````````````
514
515As previously mentioned in section `Putting it all together`_, there are a
516couple of extra images involved when running the FWU tests. They need to be
517loaded at the right addresses, which depend on the platform.
518
519FVP
520'''
521
522In addition to the usual BL1 and FIP images, the following extra images must be
523loaded:
524
525- ``NS_BL1U`` image at address ``0x0BEB8000`` (i.e. NS_BL1U_BASE macro in TF-A)
526- ``FWU_FIP`` image at address ``0x08400000`` (i.e. NS_BL2U_BASE macro in TF-A)
527- ``Backup FIP`` image at address ``0x09000000`` (i.e. FIP_BKP_ADDRESS macro in
528 TF-A tests).
529
530An example script is provided in `scripts/run_fwu_fvp.sh`_.
531
532Juno
533''''
534
535The same set of extra images and load addresses apply for Juno as for FVP.
536
537The new images must be programmed in flash memory by adding some entries in the
538``SITE1/HBI0262x/images.txt`` configuration file on the Juno SD card (where
539``x`` depends on the revision of the Juno board). Refer to the `Juno Getting
540Started Guide`_, section 2.3 "Flash memory programming" for more
541information. Users should ensure these do not overlap with any other entries in
542the file.
543
544Addresses in this file are expressed as an offset from the base address of the
545flash (that is, ``0x08000000``).
546
547::
548
549 NOR10UPDATE: AUTO ; Image Update:NONE/AUTO/FORCE
550 NOR10ADDRESS: 0x00400000 ; Image Flash Address
551 NOR10FILE: \SOFTWARE\fwu_fip.bin ; Image File Name
552 NOR10LOAD: 00000000 ; Image Load Address
553 NOR10ENTRY: 00000000 ; Image Entry Point
554
555 NOR11UPDATE: AUTO ; Image Update:NONE/AUTO/FORCE
556 NOR11ADDRESS: 0x03EB8000 ; Image Flash Address
557 NOR11FILE: \SOFTWARE\ns_bl1u.bin ; Image File Name
558 NOR11LOAD: 00000000 ; Image Load Address
559 NOR11ENTRY: 00000000 ; Image Load Address
560
561 NOR12UPDATE: AUTO ; Image Update:NONE/AUTO/FORCE
562 NOR12ADDRESS: 0x01000000 ; Image Flash Address
563 NOR12FILE: \SOFTWARE\backup_fip.bin ; Image File Name
564 NOR12LOAD: 00000000 ; Image Load Address
565 NOR12ENTRY: 00000000 ; Image Entry Point
566
567--------------
568
569.. [#] Therefore, the Trusted Board Boot feature must be enabled in TF-A for
570 the FWU test images to work. Please refer the `TF-A User guide`_ for
571 further details.
572
573.. [#] Therefore, the Secure Partition Manager must be enabled in TF-A for
Antonio Nino Diazabb570e2019-03-25 13:13:57 +0000574 any of the test Secure Partitions to work. Please refer to the `TF-A User
575 guide`_ for further details.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200576
577--------------
578
Joel Huttond18c45f2019-02-08 14:33:52 +0000579*Copyright (c) 2018-2019, Arm Limited. All rights reserved.*
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +0200580
581.. _Development Studio 5 (DS-5): https://developer.arm.com/products/software-development-tools/ds-5-development-studio
582
583.. _FVP models: https://developer.arm.com/products/system-design/fixed-virtual-platforms
584
585.. _AArch32 GNU cross-toolchain: http://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz
586.. _AArch64 GNU cross-toolchain: http://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar.xz
587
588.. _Linux master tree: https://github.com/torvalds/linux/tree/master/
589
590.. _TF-A: https://www.github.com/ARM-software/arm-trusted-firmware
591.. _Trusted Firmware-A (TF-A): TF-A_
592.. _EL3 payload boot flow: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#el3-payloads-alternative-boot-flow
593.. _TF-A User Guide: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst
594.. _Firmware Update: FWU_
595.. _FWU: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-update.rst
596.. _FWU state machine: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-update.rst#fwu-state-machine
597.. _Running the software on FVP: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#running-the-software-on-fvp
598.. _Running the software on Juno: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#running-the-software-on-juno
599.. _Building FIP images with support for Trusted Board Boot: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/user-guide.rst#building-fip-images-with-support-for-trusted-board-boot
600.. _Secure partition Manager: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/secure-partition-manager-design.rst
601
602.. _EL3 test payload README file: ../el3_payload/README
603.. _scripts/run_fwu_fvp.sh: ../scripts/run_fwu_fvp.sh
604
605.. _ARM Management Mode Interface: http://infocenter.arm.com/help/topic/com.arm.doc.den0060a/DEN0060A_ARM_MM_Interface_Specification.pdf
606.. _Juno Getting Started Guide: http://infocenter.arm.com/help/topic/com.arm.doc.dui0928e/DUI0928E_juno_arm_development_platform_gsg.pdf