Remove mutex locking in favour of the standard IRQ locking mechanism. The primary problem with the mutex implementation is that mutex locking is forbidden in ISR's. This means that any logging from an interrupt context (e.g. LOG_PANIC in an exception handler), will itself trigger another assertion due its attempt to use a mutex. Furthermore, mutexes are a relatively heavyweight locking scheme, which doesn't necessarily make sense in the context of extremely short locking periods that would be expected from RTT. This change aligns Zephyr with the default RTT locking scheme, which uses interrupt masking to perform access control. Resolves #79403. Signed-off-by: Jordan Yates <jordan@embeint.com>
126 lines
3.2 KiB
Plaintext
126 lines
3.2 KiB
Plaintext
# Copyright (c) 2016 Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config ZEPHYR_SEGGER_MODULE
|
|
bool
|
|
|
|
config HAS_SEGGER_RTT
|
|
bool
|
|
help
|
|
Indicates that the platform supports SEGGER J-Link RTT.
|
|
|
|
config USE_SEGGER_RTT
|
|
bool "SEGGER RTT libraries."
|
|
depends on HAS_SEGGER_RTT
|
|
select STM32_ENABLE_DEBUG_SLEEP_STOP if SOC_FAMILY_STM32
|
|
help
|
|
Enable Segger J-Link RTT libraries for platforms that support it.
|
|
Selection of this option enables use of RTT for various subsystems.
|
|
Note that by enabling this option, RTT buffers consume more RAM.
|
|
|
|
if USE_SEGGER_RTT
|
|
|
|
config SEGGER_RTT_CUSTOM_LOCKING
|
|
bool "Custom locking"
|
|
help
|
|
Enable custom locking using Zephyr APIs.
|
|
|
|
config SEGGER_RTT_MAX_NUM_UP_BUFFERS
|
|
int "Maximum number of up-buffers"
|
|
default 3
|
|
|
|
config SEGGER_RTT_MAX_NUM_DOWN_BUFFERS
|
|
int "Maximum number of down-buffers"
|
|
default 3
|
|
|
|
config SEGGER_RTT_BUFFER_SIZE_UP
|
|
int "Size of the buffer for terminal output of target, up to host"
|
|
default 1024
|
|
|
|
config SEGGER_RTT_BUFFER_SIZE_DOWN
|
|
int "Size of the buffer for terminal input of target, from host"
|
|
default 32 if SHELL_BACKEND_RTT
|
|
default 16
|
|
|
|
config SEGGER_RTT_PRINTF_BUFFER_SIZE
|
|
int "Size of buffer for RTT printf to bulk-send chars via RTT"
|
|
default 64
|
|
|
|
choice SEGGER_RTT_MODE
|
|
prompt "Mode for pre-initialized terminal channel (buffer 0)"
|
|
default SEGGER_RTT_MODE_NO_BLOCK_SKIP
|
|
|
|
config SEGGER_RTT_MODE_NO_BLOCK_SKIP
|
|
bool "Skip. Do not block, output nothing."
|
|
|
|
config SEGGER_RTT_MODE_NO_BLOCK_TRIM
|
|
bool "Trim: Do not block, output as much as fits."
|
|
|
|
config SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
|
|
bool "Block: Wait until there is space in the buffer."
|
|
|
|
endchoice
|
|
|
|
config SEGGER_RTT_MODE
|
|
int
|
|
default 2 if SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
|
|
default 1 if SEGGER_RTT_MODE_NO_BLOCK_TRIM
|
|
default 0
|
|
|
|
config SEGGER_RTT_MEMCPY_USE_BYTELOOP
|
|
bool "Use a simple byte-loop instead of standard memcpy"
|
|
|
|
choice SEGGER_RTT_SECTION
|
|
prompt "Choose RTT data linker section"
|
|
default SEGGER_RTT_SECTION_CUSTOM
|
|
|
|
config SEGGER_RTT_SECTION_NONE
|
|
bool "Place RTT data in the default linker section"
|
|
|
|
config SEGGER_RTT_SECTION_DTCM
|
|
bool "Place RTT data in the DTCM linker section"
|
|
|
|
config SEGGER_RTT_SECTION_CCM
|
|
bool "Place RTT data in the CCM linker section"
|
|
|
|
if CPU_CORTEX_M
|
|
|
|
config SEGGER_RTT_SECTION_CUSTOM
|
|
bool "Place RTT data in custom linker section at RAM start"
|
|
|
|
config SEGGER_RTT_SECTION_CUSTOM_DTS_REGION
|
|
bool "Place RTT data in custom linker section defined by a memory region in DTS"
|
|
|
|
endif
|
|
|
|
endchoice
|
|
|
|
if SEGGER_RTT_SECTION_CUSTOM || SEGGER_RTT_SECTION_CUSTOM_DTS_REGION
|
|
|
|
config SEGGER_RTT_SECTION_CUSTOM_NAME
|
|
string "Name of RTT data custom linker section"
|
|
default ".rtt_buff_data"
|
|
|
|
endif
|
|
|
|
choice SEGGER_RTT_INIT_MODE
|
|
prompt "RTT Initialization mode"
|
|
help
|
|
RTT inizialization function can avoid re-init of Cntrol Block
|
|
if another program (e.g. bootloader) has already initialized it.
|
|
default SEGGER_RTT_INIT_MODE_STRONG_CHECK if SEGGER_RTT_SECTION_CUSTOM
|
|
default SEGGER_RTT_INIT_MODE_STRONG_CHECK
|
|
|
|
config SEGGER_RTT_INIT_MODE_ALWAYS
|
|
bool "RTT Initialization done without conditions"
|
|
|
|
config SEGGER_RTT_INIT_MODE_STRONG_CHECK
|
|
bool "RTT Initialization done if full check on Control Block ID fails"
|
|
|
|
config SEGGER_RTT_INIT_MODE_WEAK_CHECK
|
|
bool "RTT Initialization done if partial check on Control Block ID fails"
|
|
|
|
endchoice
|
|
|
|
endif
|