From 84809dbccfda37b233e374b01d2852b3bbf4738f Mon Sep 17 00:00:00 2001 From: Wentong Wu Date: Tue, 29 Oct 2019 05:56:10 +0800 Subject: [PATCH] logging: add SWO syst backend support add SWO syst backend support. Fixes: #19841. Signed-off-by: Wentong Wu --- subsys/logging/Kconfig | 6 ++++++ subsys/logging/log_backend_swo.c | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/subsys/logging/Kconfig b/subsys/logging/Kconfig index 363942abb4d..50406f2b27e 100644 --- a/subsys/logging/Kconfig +++ b/subsys/logging/Kconfig @@ -312,6 +312,12 @@ config LOG_BACKEND_SWO_FREQ_HZ reset. To ensure flawless operation the frequency configured here and by the SWO viewer program has to match. +config LOG_BACKEND_SWO_SYST_ENABLE + bool "Enable SWO syst backend" + depends on LOG_MIPI_SYST_ENABLE + help + When enabled backend is using SWO to output syst format logs. + endif # LOG_BACKEND_SWO config LOG_BACKEND_RTT diff --git a/subsys/logging/log_backend_swo.c b/subsys/logging/log_backend_swo.c index acb1af61375..65d96604d2c 100644 --- a/subsys/logging/log_backend_swo.c +++ b/subsys/logging/log_backend_swo.c @@ -63,7 +63,10 @@ LOG_OUTPUT_DEFINE(log_output, char_out, buf, sizeof(buf)); static void log_backend_swo_put(const struct log_backend *const backend, struct log_msg *msg) { - log_backend_std_put(&log_output, 0, msg); + u32_t flag = IS_ENABLED(CONFIG_LOG_BACKEND_SWO_SYST_ENABLE) ? + LOG_OUTPUT_FLAG_FORMAT_SYST : 0; + + log_backend_std_put(&log_output, flag, msg); } static void log_backend_swo_init(void) @@ -107,7 +110,10 @@ static void log_backend_swo_sync_string(const struct log_backend *const backend, struct log_msg_ids src_level, u32_t timestamp, const char *fmt, va_list ap) { - log_backend_std_sync_string(&log_output, 0, src_level, + u32_t flag = IS_ENABLED(CONFIG_LOG_BACKEND_SWO_SYST_ENABLE) ? + LOG_OUTPUT_FLAG_FORMAT_SYST : 0; + + log_backend_std_sync_string(&log_output, flag, src_level, timestamp, fmt, ap); } @@ -116,7 +122,10 @@ static void log_backend_swo_sync_hexdump( struct log_msg_ids src_level, u32_t timestamp, const char *metadata, const u8_t *data, u32_t length) { - log_backend_std_sync_hexdump(&log_output, 0, src_level, + u32_t flag = IS_ENABLED(CONFIG_LOG_BACKEND_SWO_SYST_ENABLE) ? + LOG_OUTPUT_FLAG_FORMAT_SYST : 0; + + log_backend_std_sync_hexdump(&log_output, flag, src_level, timestamp, metadata, data, length); }