samples: tfm_psa_test: Adapt to TF-M split build
The sample now builds the psa-arch-tests itself and doesn't rely anymore on the TF-M module CMakeFile. Additionally it will not run the zephyr main.c anymore but therefore only uses the tf-m non-secure application. Signed-off-by: Markus Swarowsky <markus.swarowsky@nordicsemi.no>
This commit is contained in:
parent
cac7f4058f
commit
ad9cdf06c4
6 changed files with 114 additions and 12 deletions
|
|
@ -16,3 +16,8 @@ install(FILES ${CMAKE_CURRENT_LIST_DIR}/ns/cpuarch_ns.cmake
|
||||||
|
|
||||||
install(FILES config.cmake
|
install(FILES config.cmake
|
||||||
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
||||||
|
|
||||||
|
install(DIRECTORY ${Trusted\ Firmware\ M_SOURCE_DIR}/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/tests
|
||||||
|
|
||||||
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR}
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -19,3 +19,7 @@ install(FILES ${Trusted\ Firmware\ M_SOURCE_DIR}/platform/ext/target/nordi
|
||||||
|
|
||||||
install(FILES config.cmake
|
install(FILES config.cmake
|
||||||
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
||||||
|
|
||||||
|
install(DIRECTORY ${Trusted\ Firmware\ M_SOURCE_DIR}/platform/ext/target/nordic_nrf/nrf9161dk_nrf9161/tests
|
||||||
|
|
||||||
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
||||||
|
|
|
||||||
|
|
@ -19,3 +19,7 @@ install(FILES ${Trusted\ Firmware\ M_SOURCE_DIR}/platform/ext/target/nordi
|
||||||
|
|
||||||
install(FILES config.cmake
|
install(FILES config.cmake
|
||||||
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
||||||
|
|
||||||
|
install(DIRECTORY ${Trusted\ Firmware\ M_SOURCE_DIR}/platform/ext/target/nordic_nrf/nrf9160dk_nrf9160/tests
|
||||||
|
|
||||||
|
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,103 @@ cmake_minimum_required(VERSION 3.20.0)
|
||||||
|
|
||||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||||
|
|
||||||
project(tfm_psa_storage_test)
|
project(tfm_psa_arch_test)
|
||||||
|
|
||||||
target_sources(app PRIVATE src/main.c)
|
target_sources(app PRIVATE src/main.c)
|
||||||
|
|
||||||
target_include_directories(app PRIVATE
|
get_target_property(TFM_BINARY_DIR tfm TFM_BINARY_DIR)
|
||||||
$<TARGET_PROPERTY:tfm,TFM_BINARY_DIR>/api_ns/interface/include
|
get_target_property(TFM_NS_BIN_FILE tfm TFM_NS_BIN_FILE)
|
||||||
|
get_target_property(TFM_NS_HEX_FILE tfm TFM_NS_HEX_FILE)
|
||||||
|
get_target_property(TFM_NS_SIGNED_BIN_FILE tfm TFM_NS_SIGNED_BIN_FILE)
|
||||||
|
|
||||||
|
get_target_property(TFM_TOOLCHAIN_PATH tfm TFM_TOOLCHAIN_PATH)
|
||||||
|
get_target_property(TFM_TOOLCHAIN_PREFIX tfm TFM_TOOLCHAIN_PREFIX)
|
||||||
|
get_target_property(TFM_TOOLCHAIN_NS_FILE tfm TFM_TOOLCHAIN_NS_FILE)
|
||||||
|
|
||||||
|
set(TFM_TEST_REPO_PATH ${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/../tf-m-tests)
|
||||||
|
set(TFM_PSA_ARCHTEST_REPO_PATH ${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/../psa-arch-tests)
|
||||||
|
|
||||||
|
if (CONFIG_TFM_PSA_TEST_INITIAL_ATTESTATION AND CONFIG_TFM_QCBOR_PATH STREQUAL "")
|
||||||
|
# TODO: Remove this when QCBOR licensing issues w/t_cose have been resolved,
|
||||||
|
# or only allow it when 'QCBOR_PATH' is set to a local path where QCBOR has
|
||||||
|
# been manually downloaded by the user before starting the build.
|
||||||
|
message(FATAL_ERROR "CONFIG_TFM_PSA_TEST_INITIAL_ATTESTATION is not available "
|
||||||
|
"with TF-M 2.0.0 due to licensing issues with a dependent library. This "
|
||||||
|
"restriction will be removed once licensing issues have been resolved."
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
set(TFM_TEST_DIR "${TFM_TEST_REPO_PATH}/tests_psa_arch/spe/partitions")
|
||||||
|
set(PSA_ARCH_TESTS_CONFIG_FILE "${TFM_TEST_REPO_PATH}/tests_psa_arch/spe/config/config_test_psa_api.cmake")
|
||||||
|
if (CONFIG_TFM_PSA_TEST_CRYPTO)
|
||||||
|
set(TFM_PSA_TEST_SUITE CRYPTO)
|
||||||
|
elseif (CONFIG_TFM_PSA_TEST_PROTECTED_STORAGE)
|
||||||
|
set(TFM_PSA_TEST_SUITE PROTECTED_STORAGE)
|
||||||
|
elseif (CONFIG_TFM_PSA_TEST_INTERNAL_TRUSTED_STORAGE)
|
||||||
|
set(TFM_PSA_TEST_SUITE INTERNAL_TRUSTED_STORAGE)
|
||||||
|
elseif (CONFIG_TFM_PSA_TEST_STORAGE)
|
||||||
|
set(TFM_PSA_TEST_SUITE STORAGE)
|
||||||
|
elseif (CONFIG_TFM_PSA_TEST_INITIAL_ATTESTATION)
|
||||||
|
set(TFM_PSA_TEST_SUITE INITIAL_ATTESTATION)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED TFM_PSA_TEST_SUITE)
|
||||||
|
message(FATAL_ERROR "Please define witch test suite to run:
|
||||||
|
CONFIG_TFM_PSA_TEST_CRYPTO
|
||||||
|
CONFIG_TFM_PSA_TEST_PROTECTED_STORAGE
|
||||||
|
CONFIG_TFM_PSA_TEST_STORAGE
|
||||||
|
CONFIG_TFM_PSA_TEST_INITIAL_ATTESTATION")
|
||||||
|
endif()
|
||||||
|
set(TEST_PSA_API "${TFM_PSA_TEST_SUITE}")
|
||||||
|
|
||||||
|
set_property(TARGET zephyr_property_target
|
||||||
|
APPEND PROPERTY TFM_CMAKE_OPTIONS
|
||||||
|
-DPSA_ARCH_TESTS_PATH=${TFM_PSA_ARCHTEST_REPO_PATH}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET zephyr_property_target
|
||||||
|
APPEND PROPERTY TFM_CMAKE_OPTIONS
|
||||||
|
-DCONFIG_TFM_TEST_DIR=${TFM_TEST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET zephyr_property_target
|
||||||
|
APPEND PROPERTY TFM_CMAKE_OPTIONS
|
||||||
|
-DCONFIG_PSA_ARCH_TESTS_CONFIG_FILE=${PSA_ARCH_TESTS_CONFIG_FILE}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET zephyr_property_target
|
||||||
|
APPEND PROPERTY TFM_CMAKE_OPTIONS
|
||||||
|
-DTEST_PSA_API=${TEST_PSA_API}
|
||||||
|
)
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(tfm_psa_arch_test_app
|
||||||
|
SOURCE_DIR ${TFM_TEST_REPO_PATH}/tests_psa_arch
|
||||||
|
BINARY_DIR ${PROJECT_BINARY_DIR}/tfm_ns
|
||||||
|
CONFIGURE_COMMAND
|
||||||
|
${CMAKE_COMMAND}
|
||||||
|
-G ${CMAKE_GENERATOR}
|
||||||
|
-S ${TFM_TEST_REPO_PATH}/tests_psa_arch
|
||||||
|
-B ${PROJECT_BINARY_DIR}/tfm_ns
|
||||||
|
-DCROSS_COMPILE=${TFM_TOOLCHAIN_PATH}/${TFM_TOOLCHAIN_PREFIX}
|
||||||
|
-DPSA_TOOLCHAIN_FILE=${TFM_BINARY_DIR}/api_ns/cmake/${TFM_TOOLCHAIN_NS_FILE}
|
||||||
|
-DCONFIG_SPE_PATH=${TFM_BINARY_DIR}/api_ns
|
||||||
|
-DTFM_TOOLCHAIN_FILE=cmake/${TFM_TOOLCHAIN_NS_FILE}
|
||||||
|
-DQCBOR_PATH${QCBOR_PATH_TYPE}=${CONFIG_TFM_QCBOR_PATH}
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||||
|
-DTEST_PSA_API=${TEST_PSA_API}
|
||||||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
BUILD_ALWAYS True
|
||||||
|
USES_TERMINAL_BUILD True
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/tfm_ns
|
||||||
|
DEPENDS tfm
|
||||||
|
BUILD_BYPRODUCTS
|
||||||
|
${TFM_NS_HEX_FILE}
|
||||||
|
${TFM_NS_BIN_FILE}
|
||||||
|
${TFM_NS_SIGNED_BIN_FILE}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(app tfm_psa_arch_test_app)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@
|
||||||
|
|
||||||
CONFIG_BUILD_WITH_TFM=y
|
CONFIG_BUILD_WITH_TFM=y
|
||||||
CONFIG_TFM_PROFILE_TYPE_NOT_SET=y
|
CONFIG_TFM_PROFILE_TYPE_NOT_SET=y
|
||||||
|
CONFIG_TFM_USE_NS_APP=y
|
||||||
CONFIG_QEMU_ICOUNT_SHIFT=1
|
CONFIG_QEMU_ICOUNT_SHIFT=1
|
||||||
|
|
||||||
|
|
||||||
# Needed for CRYPTO and INITIAL_ATTESTATION
|
# Needed for CRYPTO and INITIAL_ATTESTATION
|
||||||
CONFIG_MAIN_STACK_SIZE=4096
|
CONFIG_MAIN_STACK_SIZE=4096
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021 Nordic Semiconductor ASA.
|
* Copyright (c) 2023 Nordic Semiconductor ASA.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <zephyr/kernel.h>
|
#include <zephyr/kernel.h>
|
||||||
|
|
||||||
/* Run the PSA test suite */
|
|
||||||
void psa_test(void);
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_TFM_PSA_TEST_NONE
|
printk("Should not be printed, expected TF-M's NS application to be run instead.\n");
|
||||||
#error "No PSA test suite set. Use Kconfig to enable a test suite.\n"
|
k_panic();
|
||||||
#else
|
|
||||||
psa_test();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue