| From 9545d9bb44f8fb5af438fb40cab7fefc95d5a9a4 Mon Sep 17 00:00:00 2001 |
| From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com> |
| Date: Thu, 22 Dec 2022 09:24:50 +0000 |
| Subject: [PATCH 6/10] Platform:corstone1000: Add common platform logger |
| |
| platform_log defines log messages macros to be used by the platform code |
| It allows defining the module name to be added at the beginning of the log |
| message. |
| Based on build type PLAT_LOG_LEVEL is defined. |
| In case of Debug/RelWithDebInfo PLAT_LOG_LEVEL is defined to Debug level |
| else it is defined to OFF. |
| |
| usage in source file: |
| ... |
| INFO("msg"); |
| ERROR("msg"); |
| WARN("msg"); |
| VERBOSE("msg"); |
| DBG("msg"); |
| ... |
| |
| Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com> |
| Upstream-Status: Pending [Not submitted to upstream yet] |
| --- |
| .../target/arm/corstone1000/CMakeLists.txt | 1 + |
| .../ext/target/arm/corstone1000/config.cmake | 4 +- |
| .../target/arm/corstone1000/platform_log.h | 60 +++++++++++++++++++ |
| 3 files changed, 64 insertions(+), 1 deletion(-) |
| create mode 100644 platform/ext/target/arm/corstone1000/platform_log.h |
| |
| diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt |
| index 9db2864033..a120f39ea4 100644 |
| --- a/platform/ext/target/arm/corstone1000/CMakeLists.txt |
| +++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt |
| @@ -152,6 +152,7 @@ target_compile_definitions(platform_bl2 |
| $<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP> |
| $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST> |
| $<$<BOOL:${ENABLE_FWU_AGENT_DEBUG_LOGS}>:ENABLE_FWU_AGENT_DEBUG_LOGS> |
| + PLAT_LOG_LEVEL=${PLAT_LOG_LEVEL} |
| ) |
| |
| # boot_hal_bl2.c is compiled as part of 'bl2' target and not inside |
| diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake |
| index b71ca672f3..de0b4b64c1 100644 |
| --- a/platform/ext/target/arm/corstone1000/config.cmake |
| +++ b/platform/ext/target/arm/corstone1000/config.cmake |
| @@ -63,6 +63,8 @@ set(TFM_PARTITION_INTERNAL_TRUSTED_STORAGE ON CACHE BOOL "Enable Inte |
| |
| if (${CMAKE_BUILD_TYPE} STREQUAL Debug OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo) |
| set(ENABLE_FWU_AGENT_DEBUG_LOGS TRUE CACHE BOOL "Enable Firmware update agent debug logs.") |
| -else() |
| + set(PLAT_LOG_LEVEL 4 CACHE STRING "Set platform log level.") |
| + else() |
| set(ENABLE_FWU_AGENT_DEBUG_LOGS FALSE CACHE BOOL "Enable Firmware update agent debug logs.") |
| + set(PLAT_LOG_LEVEL 0 CACHE STRING "Set platform log level.") |
| endif() |
| diff --git a/platform/ext/target/arm/corstone1000/platform_log.h b/platform/ext/target/arm/corstone1000/platform_log.h |
| new file mode 100644 |
| index 0000000000..b3a6e98026 |
| --- /dev/null |
| +++ b/platform/ext/target/arm/corstone1000/platform_log.h |
| @@ -0,0 +1,60 @@ |
| +/* |
| + * Copyright (c) 2023, Arm Limited. All rights reserved. |
| + * |
| + * SPDX-License-Identifier: BSD-3-Clause |
| + * |
| + */ |
| + |
| +#ifndef __PLATFORM_LOG_H__ |
| +#define __PLATFORM_LOG_H__ |
| + |
| +#define PLAT_LOG_LEVEL_OFF (0) |
| +#define PLAT_LOG_LEVEL_ERROR (1) |
| +#define PLAT_LOG_LEVEL_WARN (2) |
| +#define PLAT_LOG_LEVEL_INFO (3) |
| +#define PLAT_LOG_LEVEL_DEBUG (4) |
| + |
| +#ifndef PLAT_LOG_MODULE_NAME |
| +#define MODULE_NAME_STR " " |
| +#else |
| +#define MODULE_NAME_STR "["PLAT_LOG_MODULE_NAME"]: " |
| +#endif |
| + |
| +#ifndef PLAT_LOG_LEVEL |
| +#warning "Logging level is not defined, default is PLAT_LOG_LEVEL_ERROR." |
| +#define PLAT_LOG_LEVEL PLAT_LOG_LEVEL_ERROR |
| +#endif |
| + |
| + |
| +/* System can override PRINTF with other rich format function*/ |
| +#ifndef PRINTF |
| +#if PLAT_LOG_LEVEL > PLAT_LOG_LEVEL_OFF |
| +#include <stdio.h> |
| +#define PRINTF printf |
| +#endif |
| +#endif |
| + |
| +#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_ERROR |
| + #define ERROR(f_, ...) do { PRINTF("\033[31;4m[ERR]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) |
| +#else |
| + #define ERROR(f_, ...) do { } while(0) |
| +#endif |
| +#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_WARN |
| + #define WARN(f_, ...) do { PRINTF("\033[33;4m[WRN]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) |
| +#else |
| + #define WARN(f_, ...) do { } while(0) |
| +#endif |
| +#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_INFO |
| + #define INFO(f_, ...) do { PRINTF("[INF]:%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) |
| +#else |
| + #define INFO(f_, ...) do { } while(0) |
| +#endif |
| +#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_DEBUG |
| + #define VERBOSE(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__); } while (0) |
| + #define DEBUG(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__); } while (0) |
| +#else |
| + #define VERBOSE(f_, ...) do { } while(0) |
| + #define DEBUG(f_, ...) do { } while(0) |
| +#endif |
| + |
| +#endif /* __PLATFORM_LOG_H__ */ |
| -- |
| 2.25.1 |
| |