zephyr/subsys/logging/frontends/Kconfig
Krzysztof Chruściński c2454f2a9f logging: frontend: stmesp: Do not append strings when not needed
Currently we can assume that flpr and ppr cores are always owned by
cpuapp. In that case, cpuapp (which processes ETR buffer content) has
access to the memory where logging strings from ppr and flpr are
located. Those strings do not need to be appended to the message
which is written to the STM (in case of standalone configuration).
This approach reduced logging time, e.g. logging a message with
one argument takes 1.8us on cpuapp and 6.3us on cpurad.

This setting applies only to the case when cpuapp is the owner
of those co-oprocessors and shall be updated if that becomes
configurable but currently there are no means to detect core
owner.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-09-27 14:30:57 +01:00

119 lines
3.2 KiB
Plaintext

# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
menu "Frontends"
config LOG_FRONTEND_DICT_UART
bool "UART dictionary frontend"
select LOG_DICTIONARY_SUPPORT
select MPSC_PBUF
depends on UART_ASYNC_API || UART_INTERRUPT_DRIVEN
imply LOG_FMT_SECTION
imply LOG_FMT_SECTION_STRIP if !LOG_ALWAYS_RUNTIME
help
Frontend sends data in binary dictionary mode.
if LOG_FRONTEND_DICT_UART
config LOG_FRONTEND_DICT_UART_BUFFER_SIZE
int "Buffer size"
default 1024
help
Number of bytes dedicated for buffering data
config LOG_FRONTEND_DICT_UART_DROPPED_NOTIFY_PERIOD
int "Dropped notification period"
default 500
help
Determines how often a report about dropped messages is printed. Given
in milliseconds.
endif
config LOG_FRONTEND_STMESP
bool "Coresight STM frontend"
imply ARM_ON_ENTER_CPU_IDLE_HOOK if LOG_FRONTEND_STMESP_FLUSH_COUNT > 0
if LOG_FRONTEND_STMESP
config LOG_FRONTEND_STMESP_DICT
bool
default y if !LOG_FRONTEND_STMESP_FSC
select LOG_FRONTEND_OPT_API
select LOG_DICTIONARY_DB
imply LOG_FMT_SECTION
imply LOG_FMT_SECTION_STRIP
config LOG_FRONTEND_STMESP_FSC
bool "Send fully self-contained messages"
select LOG_MSG_APPEND_RO_STRING_LOC if (!NRF_ETR && !SOC_NRF54H20_CPUPPR && \
!SOC_NRF54H20_CPUFLPR)
config LOG_FRONTEND_STMESP_FLUSH_COUNT
int "Number of flushing words"
default 4
help
Before going to sleep CPU shall write to STM some dummy data to ensure
that any buffered data goes to TPIU/ETR.
config LOG_FRONTEND_STMESP_EARLY_BUF_SIZE
int "Buffer size to store early messages"
default 0
help
Frontend cannot write to STM if it is used with ETR buffer unless ETR is
initialized and memory is properly configured (privileges). Data is stored
in the buffer and flushed to the STMESP once the pipeline is ready.
config LOG_FRONTEND_STMESP_DICT_VER
def_int 0
config LOG_FRONTEND_STMESP_GUARANTEED_ACCESS
bool "Use STMESP guaranteed access"
help
When enabled, accessing STMESP registers will stall if write cannot be
performed (e.g. ETR buffer is full).
endif # LOG_FRONTEND_STMESP
config LOG_FRONTEND_STMESP_DEMUX
bool "Demultiplexer of logging packets from STM stream"
select MPSC_PBUF
help
Module demultiplexes messages encoded in STPv2 stream. Messages may
be interleaved because they may come from multiple cores (majors).
There are 3 types of messages: logging, tracepoints and HW events.
if LOG_FRONTEND_STMESP_DEMUX
config LOG_FRONTEND_STMESP_DEMUX_ACTIVE_PACKETS
int "Active packets"
default 12
config LOG_FRONTEND_STMESP_DEMUX_BUFFER_SIZE
int "Buffer size"
default 1024
config LOG_FRONTEND_STMESP_DEMUX_MAX_UTILIZATION
bool "Track maximum utilization"
config LOG_FRONTEND_STMESP_DEMUX_GC_TIMEOUT
int "Message timeout (in milliseconds)"
default 100
help
If log message is not completed within that time frame it is discarded.
endif # LOG_FRONTEND_STMESP_DEMUX
config LOG_FRONTEND_STMESP_FLUSH_PORT_ID
def_int 0
depends on LOG_FRONTEND_STMESP_DEMUX || LOG_FRONTEND_STMESP
config LOG_FRONTEND_STMESP_TP_CHAN_BASE
def_int 255
depends on LOG_FRONTEND_STMESP_DEMUX || LOG_FRONTEND_STMESP
help
Do not change this value as it is aligned with host decoder (nrfutil trace).
endmenu