SEGGER's Real Time Transfer (RTT) is the new technology for interactive user I/O in embedded applications. It combines the advantages of SWO and semihosting at very high performance.
SEGGER already provides J-Link RTT Viewer tool for viewing the RTT output, however despite being practical the tool has limited scrollback, its Scroll to the end cannot be paused and it misses some output when a lot of debug is printed using the highest interface speeds. Therefore if one wish to look back at some output line, the first problem is that this line may already be out of the 100-lines scrollback limit, and even it is not, every new received message will make the terminal jump to the end.
This script outputs the data to the standard console output, which can have any scrollback set and can be (un)paused with right-clicking.
In addition, write functionality can be used to interact with the backend when supported by the platform (e.g. with Nordic Command Line Interface (CLI) RTT transfer) (thanks to vilvo).
Note: J-Link driver/server must be running for this script to work. This can be done by:
- using J-Link Commander (preferred, more lightweight) with command
JLink -Device <DEVICE> -If <IF> -AutoConnect 1 -Speed <kHz>
(e.g.JLink.exe -Device NRF52840_xxAA -AutoConnect 1 -If SWD -Speed 50000
) - running the above mentioned J-Link RTT Viewer (output will not be visible in RTT Viewer as it is automatically redirected when any telnet client connects)
One can then use tool such as RBTray to "minimize" the J-Link Commander/RTT Viewer window to the system tray.
Branch pylink removes this requirement with the cost of lower performance.
Contributions and pull requests are welcome! Due to lack of free time, the development of this project is not as active as I originally intended/wished (my TODO: colored output, filtering (by debug levels, colors, RegEx) using PyQT, ...).