Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tfm: Add zephyr native ns_interface and logging function #33553

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion modules/trusted-firmware-m/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ function(trusted_firmware_build)
)

add_library(tfm_api
${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/tf-m-tests/app/os_wrapper_cmsis_rtos_v2.c
${ZEPHYR_BASE}/modules/trusted-firmware-m/src/zephyr_tfm_log.c
)

target_include_directories(tfm_api
Expand Down Expand Up @@ -256,6 +256,8 @@ if (CONFIG_BUILD_WITH_TFM)
)

zephyr_link_libraries(tfm_api)
zephyr_sources(
${ZEPHYR_BASE}/modules/trusted-firmware-m/src/zephyr_tfm_ns_interface.c)
Comment on lines +259 to +260
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this a zephyr_sources ?
Does it really belong in the zephyr lib.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is part of the nonsecure image, to help interfacing with tfm.


# Set default image versions if not defined elsewhere
if (NOT DEFINED TFM_IMAGE_VERSION_S)
Expand Down
18 changes: 18 additions & 0 deletions modules/trusted-firmware-m/src/zephyr_tfm_log.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright (c) 2021 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <sys/printk.h>

int tfm_log_printf(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
vprintk(fmt, ap);
va_end(ap);

return 0;
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
/*
* Copyright (c) 2019,2020 Linaro Limited
* Copyright (c) 2021 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <zephyr.h>
#include <tfm_ns_interface.h>

#include "tfm_api.h"
#include "tfm_ns_interface.h"

K_MUTEX_DEFINE(tfm_mutex);

int32_t tfm_ns_interface_dispatch(veneer_fn fn,
uint32_t arg0, uint32_t arg1,
uint32_t arg2, uint32_t arg3)
uint32_t arg0, uint32_t arg1,
uint32_t arg2, uint32_t arg3)
{
int32_t result;

Expand Down
1 change: 0 additions & 1 deletion samples/tfm_integration/psa_level_1/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ target_sources(app PRIVATE src/main.c)
target_sources(app PRIVATE src/psa_attestation.c)
target_sources(app PRIVATE src/psa_crypto.c)
target_sources(app PRIVATE src/shell.c)
target_sources(app PRIVATE src/tfm_ipc.c)
target_sources(app PRIVATE src/util_app_cfg.c)
target_sources(app PRIVATE src/util_app_log.c)
target_sources(app PRIVATE src/util_sformat.c)
27 changes: 0 additions & 27 deletions samples/tfm_integration/tfm_ipc/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,6 @@
#include "psa_manifest/sid.h"
#endif

K_MUTEX_DEFINE(tfm_mutex);

int32_t tfm_ns_interface_dispatch(veneer_fn fn,
uint32_t arg0, uint32_t arg1,
uint32_t arg2, uint32_t arg3)
{
int32_t result;

/* TFM request protected by NS lock */
if (k_mutex_lock(&tfm_mutex, K_FOREVER) != 0) {
return (int32_t)TFM_ERROR_GENERIC;
}

result = fn(arg0, arg1, arg2, arg3);

k_mutex_unlock(&tfm_mutex);

return result;
}

enum tfm_status_e tfm_ns_interface_init(void)
{
/* The static K_MUTEX_DEFINE handles mutex init, so just return. */

return TFM_SUCCESS;
}

/**
* \brief Retrieve the version of the PSA Framework API.
*
Expand Down