mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
66 lines
2.3 KiB
Plaintext
66 lines
2.3 KiB
Plaintext
/*
|
|
* Copyright (C) 2016 Michael Andersen <m.andersen@cs.berkeley.edu>
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @defgroup sys_stdio_rtt STDIO over SEGGER RTT
|
|
* @ingroup sys_stdio
|
|
*
|
|
* @brief STDIO mapping for running the STDIO over SEGGER's RTT interface
|
|
*
|
|
*
|
|
* ## RTT STDIO
|
|
*
|
|
* This module will allow communication using SEGGER's Real Time Terminal protocol.
|
|
* Briefly, it replaces UART stdio with a set of ringbuffers that are manipulated
|
|
* over JTAG. There are several advantages to this system. The biggest is that
|
|
* writing to stdout is extremely fast (as you are just copying to memory). This
|
|
* is useful if you are adding print statements in timing-sensitive code as part
|
|
* of debugging. The other advantage is that it frees your UART for other use
|
|
* and enables stdio on platforms that do not have a UART.
|
|
*
|
|
* To use this module, add
|
|
*
|
|
* ```
|
|
* USEMODULE += stdio_rtt
|
|
* ```
|
|
*
|
|
* to your makefile. By default the module will drop bytes written to stdout if the
|
|
* buffer is full. If you know for certain that the debugger is attached, you
|
|
* can obtain lossless stdout by adding
|
|
*
|
|
* ```
|
|
* CFLAGS += -DSTDIO_RTT_ENABLE_BLOCKING_STDOUT
|
|
* ```
|
|
*
|
|
* to your makefile. Note well that if you do NOT plug in the debugger and run
|
|
* the SEGGER RTT software (or compatible software) this will then lock up the
|
|
* system as it waits forever. Typically you would only define this during
|
|
* development on the lab bench.
|
|
*
|
|
* If you are printing significant data out (pages a second), you can increase
|
|
* your stdout bandwidth by lowering the poll interval. The default is 50ms.
|
|
* A choice of 5ms is good during printf-heavy debugging:
|
|
*
|
|
* ```
|
|
* CFLAGS += -DSTDIO_POLL_INTERVAL_MS=5U
|
|
* ```
|
|
*
|
|
* SEGGER RTT supports stdin as well, and this is enabled by default. It requires
|
|
* polling the stdin ringbuffer, however, which on low duty cycle systems
|
|
* can increase the number of unnecessary wakeups from sleep. To disable stdin,
|
|
* add this to your makefile:
|
|
*
|
|
* ```
|
|
* CFLAGS += -DSTDIO_RTT_DISABLE_STDIN
|
|
* ```
|
|
*
|
|
* @note Currently, `stdio_rtt` is only supported when OpenOCD or J-Link is
|
|
* used as programmer.
|
|
*
|
|
*/
|