Hi,
I study on Thread resently.
I found it is not any output in the Debug Terminal Window when using NRF_LOG_XXX, but the J-link Control panel showed the logs.
Here is my configurations:
SDK: nRF5_SDK_for_Thread_and_Zigbee_v3.2.0_9fade31
Example: examples\thread\mqttsn_client_publisher
IDE: SEGGER Embedded Studio for ARM Release 4.30c Build 2019120200.40763 Windows x64
sdk_config.h :
// <h> nRF_Log //========================================================== // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend //========================================================== #ifndef NRF_LOG_BACKEND_RTT_ENABLED #define NRF_LOG_BACKEND_RTT_ENABLED 1 #endif // <o> NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. // <i> Size of the buffer is a trade-off between RAM usage and processing. // <i> if buffer is smaller then strings will often be fragmented. // <i> It is recommended to use size which will fit typical log and only the // <i> longer one will be fragmented. #ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE #define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 #endif // <o> NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT #ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS #define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 #endif // <o> NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. // <i> If RTT fails to accept any new data after retries // <i> module assumes that host is not active and on next // <i> request it will perform only one write attempt. // <i> On successful writing, module assumes that host is active // <i> and scheme with retry is applied again. #ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT #define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 #endif // </e> // <e> NRF_LOG_ENABLED - nrf_log - Logger //========================================================== #ifndef NRF_LOG_ENABLED #define NRF_LOG_ENABLED 1 #endif // <h> Log message pool - Configuration of log message pool //========================================================== // <o> NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. // <i> If a small value is set, then performance of logs processing // <i> is degraded because data is fragmented. Bigger value impacts // <i> RAM memory utilization. The size is set to fit a message with // <i> a timestamp and up to 2 arguments in a single memory object. #ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE #define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 #endif // <o> NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects // <i> If a small value is set, then it may lead to a deadlock // <i> in certain cases if backend has high latency and holds // <i> multiple messages for long time. Bigger value impacts // <i> RAM memory usage. #ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT #define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 #endif // </h> //========================================================== // <q> NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. // <i> If set then oldest logs are overwritten. Otherwise a // <i> marker is injected informing about overflow. #ifndef NRF_LOG_ALLOW_OVERFLOW #define NRF_LOG_ALLOW_OVERFLOW 1 #endif // <o> NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). // <i> Must be power of 2 and multiple of 4. // <i> If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. // <128=> 128 // <256=> 256 // <512=> 512 // <1024=> 1024 // <2048=> 2048 // <4096=> 4096 // <8192=> 8192 // <16384=> 16384 #ifndef NRF_LOG_BUFSIZE #define NRF_LOG_BUFSIZE 1024 #endif // <q> NRF_LOG_CLI_CMDS - Enable CLI commands for the module. #ifndef NRF_LOG_CLI_CMDS #define NRF_LOG_CLI_CMDS 0 #endif // <o> NRF_LOG_DEFAULT_LEVEL - Default Severity level // <0=> Off // <1=> Error // <2=> Warning // <3=> Info // <4=> Debug #ifndef NRF_LOG_DEFAULT_LEVEL #define NRF_LOG_DEFAULT_LEVEL 4 #endif // <q> NRF_LOG_DEFERRED - Enable deffered logger. // <i> Log data is buffered and can be processed in idle. #ifndef NRF_LOG_DEFERRED #define NRF_LOG_DEFERRED 1 #endif // <q> NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. #ifndef NRF_LOG_FILTERS_ENABLED #define NRF_LOG_FILTERS_ENABLED 0 #endif // <q> NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED - Enable use of critical region for non deffered mode when flushing logs. // <i> When enabled NRF_LOG_FLUSH is called from critical section when non deffered mode is used. // <i> Log output will never be corrupted as access to the log backend is exclusive // <i> but system will spend significant amount of time in critical section #ifndef NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED #define NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED 0 #endif // <o> NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. // <16=> 16 // <32=> 32 // <64=> 64 // <128=> 128 // <256=> 256 // <512=> 512 // <1024=> 1024 #ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE #define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 #endif // <o> NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. // <16=> 16 // <32=> 32 // <64=> 64 // <128=> 128 // <256=> 256 // <512=> 512 // <1024=> 1024 #ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE #define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 #endif // <e> NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string //========================================================== #ifndef NRF_LOG_USES_COLORS #define NRF_LOG_USES_COLORS 0 #endif // <o> NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRF_LOG_COLOR_DEFAULT #define NRF_LOG_COLOR_DEFAULT 0 #endif // <o> NRF_LOG_ERROR_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRF_LOG_ERROR_COLOR #define NRF_LOG_ERROR_COLOR 2 #endif // <o> NRF_LOG_WARNING_COLOR - ANSI escape code prefix. // <0=> Default // <1=> Black // <2=> Red // <3=> Green // <4=> Yellow // <5=> Blue // <6=> Magenta // <7=> Cyan // <8=> White #ifndef NRF_LOG_WARNING_COLOR #define NRF_LOG_WARNING_COLOR 4 #endif // </e> // <e> NRF_LOG_USES_TIMESTAMP - Enable timestamping // <i> Function for getting the timestamp is provided by the user //========================================================== #ifndef NRF_LOG_USES_TIMESTAMP #define NRF_LOG_USES_TIMESTAMP 0 #endif // <o> NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. #ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY #define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 #endif // </e> // <h> nrf_log module configuration
main.c:
/**@brief Function for initializing the nrf log module. */ static void log_init(void) { ret_code_t err_code = NRF_LOG_INIT(NULL); APP_ERROR_CHECK(err_code); NRF_LOG_DEFAULT_BACKENDS_INIT(); } .... /*************************************************************************************************** * @section Main **************************************************************************************************/ int main(int argc, char *argv[]) { log_init(); scheduler_init(); timer_init(); leds_init(); thread_instance_init(); thread_bsp_init(); mqttsn_init(); NRF_LOG_INFO("start..."); while (true) { thread_process(); app_sched_execute(); if (NRF_LOG_PROCESS() == false) { thread_sleep(); } } }
screenshots:
It something wrong with the debug terminal window?