The list and simple introduction of the examples in this folder.

###################
corstone310_fvp_dma
###################

***********
Description
***********
* DMA-350 Secure tests
* Non-secure DMA-350 examples for the Corstone-310 FVP platform

***********
Maintainers
***********
- Bence Balogh `<bence.balogh@arm.com> <bence.balogh@arm.com>`_
- Mark Horvath `<mark.horvath@arm.com> <mark.horvath@arm.com>`_

#########################
extra_test_suites_example
#########################

***********
Description
***********
An example and template of out-of-tree build of extra regression test suites.

***********
Maintainers
***********
Jianliang Shen `<jianliang.shen@arm.com> <jianliang.shen@arm.com>`_

#################
example_partition
#################

***********
Description
***********
A simple secure partition implementation.

***********
Maintainers
***********
Jianliang Shen `<jianliang.shen@arm.com> <jianliang.shen@arm.com>`_

#########
vad_an552
#########

***********
Description
***********
Example application for the AN552 FPGA image, details can be found
`here </examples/vad_an552/readme.rst>`.

***********
Maintainers
***********
- Gabor Toth `<gabor.toth@arm.com> <gabor.toth@arm.com>`_
- Mark Horvath `<mark.horvath@arm.com> <mark.horvath@arm.com>`_

---------------------------

*Copyright (c) 2021-2022, Arm Limited. All rights reserved.*
