Skip to content

Commit 0b07d33

Browse files
committed
Add TF-M regression tests on AN524
TF-M regression tests config option `TFM_REGRESSION` is documented in `Arm/MPS3_AN524/app/config.cmake` and is disabled by default. To run TF-M NS regression tests set the config option to `ON` and rebuild the application. Then run it either on QEMU or hardware. Signed-off-by: Devaraj Ranganna <[email protected]>
1 parent 576a71f commit 0b07d33

File tree

5 files changed

+86
-10
lines changed

5 files changed

+86
-10
lines changed

Arm/MPS3_AN524/app/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ set(SOURCES
1818

1919
add_executable(${PROJECT_NAME} ${SOURCES})
2020

21+
target_compile_definitions(${PROJECT_NAME}
22+
PRIVATE
23+
$<$<BOOL:${TFM_REGRESSION}>:TFM_REGRESSION>
24+
)
25+
2126
target_link_libraries(${PROJECT_NAME}
2227
PUBLIC
2328
azrtos::threadx

Arm/MPS3_AN524/app/config.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ cmake_dependent_option(TFM_IPC
138138
cmake_dependent_option(TFM_REGRESSION
139139
"When enabled, this option signifies that the TF-M build includes
140140
the Secure and the Non-Secure regression tests."
141-
ON
141+
OFF
142142
BUILD_WITH_TFM OFF
143143
)
144144

Arm/MPS3_AN524/app/main.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,18 @@
1313
#include "psa_manifest/sid.h"
1414
#endif
1515

16+
#ifdef TFM_REGRESSION
17+
#include "test_framework_integ_test.h"
18+
#endif
19+
1620
#define AZURE_THREAD_STACK_SIZE 4096
1721
#define AZURE_THREAD_PRIORITY 4
1822

23+
int tfm_log_printf(const char *fmt, ...)
24+
{
25+
printf(fmt);
26+
}
27+
1928
static __inline void systick_interval_set(uint32_t ticks)
2029
{
2130
// 1. Disable the counter
@@ -62,6 +71,8 @@ void azure_thread_entry(ULONG parameter)
6271
printf("The version of the PSA Framework API is not valid!\n");
6372
return;
6473
}
74+
75+
#ifdef TFM_REGRESSION
6576
psa_handle_t handle;
6677

6778
handle = psa_connect(IPC_SERVICE_TEST_BASIC_SID,
@@ -73,6 +84,10 @@ void azure_thread_entry(ULONG parameter)
7384
return;
7485
}
7586
psa_close(handle);
87+
88+
/* Start TF-M NS regression tests */
89+
tfm_non_secure_client_run_tests();
90+
#endif
7691
}
7792

7893
void tx_application_define(void* first_unused_memory)

Arm/MPS3_AN524/lib/tf-m/CMakeLists.txt

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ function(trusted_firmware_build)
8686
set(MCUBOOT_IMAGE_NUM_ARG -DMCUBOOT_IMAGE_NUMBER=${TFM_MCUBOOT_IMAGE_NUMBER})
8787
endif()
8888

89-
set(VENEERS_FILE ${TFM_BINARY_DIR}/install/interface/lib/s_veneers.o)
90-
set(PSA_API_NS_PATH ${TFM_BINARY_DIR}/app/libtfm_api_ns.a)
9189
set(TFM_GENERATED_INCLUDES ${TFM_BINARY_DIR}/generated/interface/include)
9290

9391
if(TFM_BL2)
@@ -102,9 +100,45 @@ function(trusted_firmware_build)
102100
set(TFM_NS_SIGNED_BIN_FILE ${TFM_BINARY_DIR}/bin/tfm_ns_signed.bin)
103101
set(TFM_S_NS_SIGNED_BIN_FILE ${TFM_BINARY_DIR}/bin/tfm_s_ns_signed.bin)
104102

103+
set(VENEERS_FILE ${TFM_BINARY_DIR}/install/interface/lib/s_veneers.o)
104+
105+
set(PSA_API_NS_PATH ${TFM_BINARY_DIR}/app/libtfm_api_ns.a)
106+
if (TFM_REGRESSION)
107+
set(PSA_QCBOR_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/qcbor/libtfm_test_suite_qcbor_ns.a)
108+
set(PSA_NS_CORE_TEST_PATH ${TFM_BINARY_DIR}/test/suites/core/libtfm_test_suite_core_ns.a)
109+
set(PSA_NS_IPC_TEST_PATH ${TFM_BINARY_DIR}/test/suites/ipc/libtfm_test_suite_ipc_ns.a)
110+
set(PSA_ATTESTATION_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/attestation/libtfm_test_suite_attestation_ns.a)
111+
set(PSA_CRYPTO_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/crypto/libtfm_test_suite_crypto_ns.a)
112+
set(PSA_PLATFORM_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/platform/libtfm_test_suite_platform_ns.a)
113+
set(PSA_PS_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/ps/libtfm_test_suite_ps_ns.a)
114+
set(PSA_ITS_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/its/libtfm_test_suite_its_ns.a)
115+
set(PSA_T_COSE_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/test/suites/t_cose/libtfm_test_suite_t_cose_ns.a)
116+
set(PSA_NS_REGRESSION_TEST_PATH ${TFM_BINARY_DIR}/app/libtfm_ns_integration_test.a)
117+
set(PSA_QCBOR_TEST_PATH ${TFM_BINARY_DIR}/lib/ext/qcbor/libtfm_qcbor_test.a)
118+
set(PSA_T_COSE_TEST_PATH ${TFM_BINARY_DIR}/lib/ext/t_cose/libtfm_t_cose_test.a)
119+
set(PSA_PLATFORM_NS_PATH ${TFM_BINARY_DIR}/platform/libplatform_ns.a)
120+
set(PSA_QCBOR_PATH ${TFM_BINARY_DIR}/lib/ext/qcbor/libtfm_qcbor.a)
121+
set(PSA_T_COSE_PATH ${TFM_BINARY_DIR}/lib/ext/t_cose/libtfm_t_cose.a)
122+
endif()
123+
105124
set(BUILD_BYPRODUCTS
106125
${VENEERS_FILE}
107126
${PSA_API_NS_PATH}
127+
${PSA_QCBOR_NS_REGRESSION_TEST_PATH}
128+
${PSA_NS_CORE_TEST_PATH}
129+
${PSA_NS_IPC_TEST_PATH}
130+
${PSA_ATTESTATION_NS_REGRESSION_TEST_PATH}
131+
${PSA_CRYPTO_NS_REGRESSION_TEST_PATH}
132+
${PSA_PLATFORM_NS_REGRESSION_TEST_PATH}
133+
${PSA_PS_NS_REGRESSION_TEST_PATH}
134+
${PSA_ITS_NS_REGRESSION_TEST_PATH}
135+
${PSA_T_COSE_NS_REGRESSION_TEST_PATH}
136+
${PSA_NS_REGRESSION_TEST_PATH}
137+
${PSA_QCBOR_TEST_PATH}
138+
${PSA_T_COSE_TEST_PATH}
139+
${PSA_PLATFORM_NS_PATH}
140+
${PSA_QCBOR_PATH}
141+
${PSA_T_COSE_PATH}
108142
${TFM_GENERATED_INCLUDES}/psa_manifest/sid.h
109143
${BL2_BIN_FILE}
110144
${BL2_HEX_FILE}
@@ -170,24 +204,40 @@ function(trusted_firmware_build)
170204
TFM_S_NS_SIGNED_BIN_FILE ${TFM_S_NS_SIGNED_BIN_FILE} # Merged TFM Secure/Nonsecure FW (signed)
171205
)
172206

173-
add_library(tfm_api
174-
${TX_TFM_TESTS_DIR}/app/os_wrapper_cmsis_rtos_v2.c
207+
add_library(tfm_api INTERFACE
208+
# ${TX_TFM_TESTS_DIR}/app/os_wrapper_cmsis_rtos_v2.c
175209
)
176210

177211
target_include_directories(tfm_api
178-
PRIVATE
179-
${TX_TFM_TESTS_DIR}/CMSIS/RTOS2/Include
180-
PUBLIC
181-
${TX_TFM_BASE_DIR}/interface/include
212+
# PRIVATE
213+
# ${TX_TFM_TESTS_DIR}/CMSIS/RTOS2/Include
182214
INTERFACE
215+
${TX_TFM_BASE_DIR}/interface/include
216+
${TX_TFM_BASE_DIR}/../tf-m-tests/test/framework
217+
# INTERFACE
183218
${TFM_GENERATED_INCLUDES}
184219
)
185220

186221
target_link_libraries(tfm_api
187222
INTERFACE
223+
${PSA_NS_CORE_TEST_PATH}
224+
${PSA_ATTESTATION_NS_REGRESSION_TEST_PATH}
225+
${PSA_CRYPTO_NS_REGRESSION_TEST_PATH}
226+
${PSA_NS_IPC_TEST_PATH}
227+
${PSA_ITS_NS_REGRESSION_TEST_PATH}
228+
${PSA_PLATFORM_NS_REGRESSION_TEST_PATH}
229+
${PSA_PS_NS_REGRESSION_TEST_PATH}
230+
${PSA_QCBOR_NS_REGRESSION_TEST_PATH}
231+
${PSA_T_COSE_NS_REGRESSION_TEST_PATH}
232+
${PSA_QCBOR_TEST_PATH}
233+
${PSA_T_COSE_TEST_PATH}
234+
${PSA_PLATFORM_NS_PATH}
188235
${PSA_API_NS_PATH}
236+
${PSA_NS_REGRESSION_TEST_PATH}
237+
${PSA_QCBOR_PATH}
238+
${PSA_T_COSE_PATH}
189239
${VENEERS_FILE}
190-
$<TARGET_FILE:tfm_api>
240+
# $<TARGET_FILE:tfm_api>
191241
)
192242

193243
add_dependencies(tfm_api tfm)

Arm/MPS3_AN524/readme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ and semaphores. The size of these allocations may also be configured.
101101
Configuration options for these are defined and documented in
102102
`Arm/MPS3_AN524/lib/threadx/CMmakeLists.txt`.
103103

104+
### Running TF-M NS regression tests
105+
TF-M NS regression tests config option `TFM_REGRESSION` is documented in
106+
`Arm/MPS3_AN524/app/config.cmake` and is disabled by default. To run TF-M NS
107+
regression tests set the config option to `ON` and rebuild the application.
108+
Then run it either on [QEMU](#using-qemu) or [hardware](#updating-application-image)
109+
104110
## Updating application image
105111
> This has only been tested on OS X, some modifications might be needed to make
106112
`Arm/MPS3_AN524/tools/flash.py` to work in Windows/Linux environments.

0 commit comments

Comments
 (0)