mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-03 11:51:56 +00:00
If burst of log messages was passed to the shell log backend, it was likely that messages were lost because shell had no means to control arrivals of log messages. Added log message enqueueing timeout to the shell instance to allow blocking logger thread if short-term arrival rate exceeded shell capabilities. Added kconfig option for setting log message queue size and timeout in RTT and UART instances. Added section in shell documentation which explains interaction between the logger and shell instance acting as a logger backend. Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
178 lines
4.2 KiB
Plaintext
178 lines
4.2 KiB
Plaintext
# Kconfig.backends - Shell badckends configuration options
|
|
|
|
#
|
|
# Copyright (c) 2018 Nordic Semiconductor ASA
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
menuconfig SHELL_BACKENDS
|
|
bool "Enable shell backends"
|
|
default y
|
|
help
|
|
Enable shell backends.
|
|
|
|
if SHELL_BACKENDS
|
|
|
|
config SHELL_BACKEND_SERIAL
|
|
bool "Enable serial backends."
|
|
default y
|
|
select SERIAL
|
|
select RING_BUFFER
|
|
help
|
|
Enable serial backends.
|
|
|
|
if SHELL_BACKEND_SERIAL
|
|
|
|
if !HAS_DTS
|
|
config UART_SHELL_ON_DEV_NAME
|
|
string "Device Name of UART Device for SHELL_BACKEND_SERIAL"
|
|
default "UART_0"
|
|
help
|
|
This option specifies the name of UART device to be used for the
|
|
SHELL UART backend.
|
|
endif
|
|
|
|
# Internal config to enable UART interrupts if supported.
|
|
config SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN
|
|
bool "Interrupt driven"
|
|
default y
|
|
depends on SERIAL_SUPPORT_INTERRUPT
|
|
select UART_INTERRUPT_DRIVEN
|
|
|
|
config SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE
|
|
int "Set TX ring buffer size"
|
|
default 8
|
|
depends on SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN
|
|
help
|
|
If UART is utilizing DMA transfers then increasing ring buffer size
|
|
increases transfers length and reduces number of interrupts.
|
|
|
|
config SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE
|
|
int "Set RX ring buffer size"
|
|
default 64
|
|
help
|
|
RX ring buffer size impacts accepted latency of handling incoming
|
|
bytes by shell. If shell input is coming from the keyboard then it is
|
|
usually enough if ring buffer is few bytes (more than one due to
|
|
escape sequences). However, if bulk data is transferred it may be
|
|
required to increase it.
|
|
|
|
config SHELL_BACKEND_SERIAL_RX_POLL_PERIOD
|
|
int "RX polling period (in milliseconds)"
|
|
default 10
|
|
depends on !SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN
|
|
help
|
|
Determines how often UART is polled for RX byte.
|
|
|
|
module = SHELL_BACKEND_SERIAL
|
|
default-timeout = 100
|
|
source "subsys/shell/Kconfig.template.shell_log_queue_timeout"
|
|
|
|
default-size = 10
|
|
source "subsys/shell/Kconfig.template.shell_log_queue_size"
|
|
|
|
choice
|
|
prompt "Initial log level limit"
|
|
default SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT
|
|
bool "System limit (LOG_MAX_LEVEL)"
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_DBG
|
|
bool "Debug"
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_INF
|
|
bool "Info"
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_WRN
|
|
bool "Warning"
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_ERR
|
|
bool "Error"
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL_NONE
|
|
bool "None"
|
|
|
|
endchoice
|
|
|
|
config SHELL_BACKEND_SERIAL_LOG_LEVEL
|
|
int
|
|
default 0 if SHELL_BACKEND_SERIAL_LOG_LEVEL_NONE
|
|
default 1 if SHELL_BACKEND_SERIAL_LOG_LEVEL_ERR
|
|
default 2 if SHELL_BACKEND_SERIAL_LOG_LEVEL_WRN
|
|
default 3 if SHELL_BACKEND_SERIAL_LOG_LEVEL_INF
|
|
default 4 if SHELL_BACKEND_SERIAL_LOG_LEVEL_DBG
|
|
default 5 if SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT
|
|
|
|
endif #SHELL_BACKEND_SERIAL
|
|
|
|
config SHELL_BACKEND_RTT
|
|
bool "Enable RTT backend."
|
|
select USE_SEGGER_RTT
|
|
select RTT_CONSOLE
|
|
help
|
|
Enable RTT backend.
|
|
|
|
if SHELL_BACKEND_RTT
|
|
|
|
config SHELL_RTT_RX_POLL_PERIOD
|
|
int "RX polling period (in milliseconds)"
|
|
default 10
|
|
help
|
|
Determines how often RTT is polled for RX byte.
|
|
|
|
module = SHELL_BACKEND_RTT
|
|
default-timeout = 100
|
|
source "subsys/shell/Kconfig.template.shell_log_queue_timeout"
|
|
|
|
default-size = 10
|
|
source "subsys/shell/Kconfig.template.shell_log_queue_size"
|
|
|
|
choice
|
|
prompt "Initial log level limit"
|
|
default SHELL_RTT_INIT_LOG_LEVEL_DEFAULT
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_DEFAULT
|
|
bool "System limit (LOG_MAX_LEVEL)"
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_DBG
|
|
bool "Debug"
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_INF
|
|
bool "Info"
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_WRN
|
|
bool "Warning"
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_ERR
|
|
bool "Error"
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL_NONE
|
|
bool "None"
|
|
|
|
endchoice
|
|
|
|
config SHELL_RTT_INIT_LOG_LEVEL
|
|
int
|
|
default 0 if SHELL_RTT_INIT_LOG_LEVEL_NONE
|
|
default 1 if SHELL_RTT_INIT_LOG_LEVEL_ERR
|
|
default 2 if SHELL_RTT_INIT_LOG_LEVEL_WRN
|
|
default 3 if SHELL_RTT_INIT_LOG_LEVEL_INF
|
|
default 4 if SHELL_RTT_INIT_LOG_LEVEL_DBG
|
|
default 5 if SHELL_RTT_INIT_LOG_LEVEL_DEFAULT
|
|
|
|
module = SHELL_RTT
|
|
module-str = RTT shell backend
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
endif #SHELL_BACKEND_RTT
|
|
|
|
config SHELL_BACKEND_DUMMY
|
|
bool "Enable dummy backend."
|
|
help
|
|
Enable dummy backend which can be used to execute commands with no
|
|
need for physical transport interface.
|
|
|
|
endif # SHELL_BACKENDS
|