I'm using the RTT log feature in NCS, and here is my prj.conf:I have two questions:
# # Copyright (c) 2019 Nordic Semiconductor ASA # # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause # CONFIG_NCS_SAMPLES_DEFAULTS=y CONFIG_ESB=y CONFIG_DK_LIBRARY=y CONFIG_CLOCK_CONTROL=y CONFIG_STDOUT_CONSOLE=y CONFIG_FLASH=y CONFIG_MPU_ALLOW_FLASH_WRITE=y CONFIG_SOC_FLASH_NRF_EMULATE_ONE_BYTE_WRITE_ACCESS=y CONFIG_FCB=y CONFIG_FLASH_MAP=y CONFIG_SETTINGS=y CONFIG_SETTINGS_FCB=y CONFIG_FLASH_LOAD_OFFSET=0x10000 CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y # CONFIG_ESB_FAST_SWITCHING=y # 启用日志系统 CONFIG_LOG=y CONFIG_LOG_MODE_DEFERRED=y # 启用 RTT 后端 CONFIG_USE_SEGGER_RTT=y CONFIG_LOG_BACKEND_RTT=y CONFIG_LOG_BACKEND_RTT_MODE_BLOCK=n # RTT输出方式,可选 # 禁用 UART 后端 CONFIG_LOG_BACKEND_UART=n CONFIG_UART_CONSOLE=n CONFIG_RTT_CONSOLE=y # 若还在使用 printk,也重定向到 RTT CONFIG_CONSOLE=y CONFIG_PRINTK=y CONFIG_STDOUT_CONSOLE=y
- After using
LOG_INFto output logs, I feel the logs are not output immediately. Since I have enabledCONFIG_LOG_MODE_DEFERRED=y, I can understand this phenomenon. However, some logs are even delayed by about one second before output, which doesn't look ideal. I want to ask: in the nRF5 SDK (52 series), I could callNRF_LOG_PROCESS()in the main function's while(1) loop to quickly flush logs. How can I achieve quick log flushing in NCS? - Even though I have enabled
CONFIG_LOG_MODE_DEFERRED=y, theLOG_INFoperation itself still takes quite some time. I tested it with GPIO and found it takes up to 20-30 us. This makes it inconvenient for me to useLOG_INFin interrupt service routines. I remember when using Segger debugging with nRF5 SDK (52833), even withLOG_DEFERREDenabled,NRF_LOG_INFOonly took about 1-2 us. So in NCS, are there any methods to optimize the log operation time? What additional steps should I take?
Thank you!