1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/stdio_rtt/doc.txt

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.
*
*/