Test: Add integration of the eRPC system

 - PSA Client API IDL file
 - Client and server init and API wrappers
 - Example client application

Signed-off-by: Kevin Peng <kevin.peng@arm.com>
Signed-off-by: Jamie Fox <jamie.fox@arm.com>
Signed-off-by: Summer Qin <summer.qin@arm.com>
Change-Id: If6180fd3e596c9daabd31262fb10ae0a1583bc9b
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 19ccca7..449cbc5 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
 # Copyright (c) 2022-2023 Cypress Semiconductor Corporation (an Infineon company)
 # or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
 #
@@ -250,16 +250,27 @@
 
 ############################# Test integration #################################
 
+if (CONFIG_TFM_ERPC_TEST_FRAMEWORK)
+    set(CONFIG_ENABLE_NS_UART_TX_RX_CONTROL      ON         CACHE BOOL      "Whether to enable UART TX RX")
+    set(ERPC_DIR     ${CMAKE_CURRENT_SOURCE_DIR}/../erpc)
+    add_subdirectory(${ERPC_DIR}/server ${CMAKE_CURRENT_BINARY_DIR}/erpc/server)
+endif()
+
 add_library(tfm_test_app STATIC EXCLUDE_FROM_ALL)
 
 target_sources(tfm_test_app
     PRIVATE
-        test_app.c
+        $<$<NOT:$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>>:test_app.c>
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:erpc_app.c>
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:${ERPC_REPO_PATH}/erpc_c/setup/erpc_setup_uart_cmsis.cpp>
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:${ERPC_REPO_PATH}/erpc_c/transports/erpc_uart_cmsis_transport.cpp>
 )
 
 target_include_directories(tfm_test_app
     PUBLIC
         .
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:${ERPC_DIR}/server>
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:${ERPC_REPO_PATH}/erpc_c/transports>
 )
 
 target_link_libraries(tfm_test_app
@@ -268,6 +279,7 @@
         $<$<BOOL:${TEST_PSA_API}>:val_nspe>
         $<$<BOOL:${TEST_PSA_API}>:pal_nspe>
         $<$<BOOL:${TEST_PSA_API}>:test_combine>
+        $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:erpc_server>
         tfm_api_ns
         tfm_log
 )
diff --git a/app/erpc_app.c b/app/erpc_app.c
new file mode 100644
index 0000000..af87f94
--- /dev/null
+++ b/app/erpc_app.c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017-2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include "test_app.h"
+#include "tfm_log.h"
+#include "erpc_server_start.h"
+#include "target_cfg.h"
+
+#include "Driver_USART.h"
+#ifdef ERPC_UART
+extern ARM_DRIVER_USART ERPC_UART;
+#else
+#error "ERPC_UART is not provided!"
+#endif
+
+__attribute__((noreturn))
+void test_app(void *argument)
+{
+    UNUSED_VARIABLE(argument);
+
+    erpc_transport_t transport;
+
+    transport = erpc_transport_cmsis_uart_init((void *)&ERPC_UART);
+    if (!transport) {
+        LOG_MSG("eRPC transport init failed!\r\n");
+    }
+
+    erpc_server_start(transport);
+
+    for (;;) {
+    }
+}