SEGGER RTT Integration
Overview
Use this skill to integrate SEGGER RTT as a low-intrusion debug channel. Prove the RTT control block, buffer configuration, J-Link connection, and blocking policy before relying on RTT logs in timing-sensitive firmware.
When To Use
Use this skill when:
- The user wants SEGGER RTT logs or terminal input on an MCU.
- RTT Viewer/J-Link cannot find the control block, logs are missing, output blocks, or input commands fail.
- The task involves RTT buffers, up/down channels, blocking modes, J-Link, SystemView, or debug builds.
Do not use this skill when the debug probe cannot connect. Use architecture or flashing debug skills first.
First Questions
Ask for:
- MCU/core, debug probe, J-Link software version, and IDE/toolchain.
- RTT source files/config and whether
SEGGER_RTT_Init()is called. - Output mode: blocking, no-block-skip, or no-block-trim.
- Buffer sizes and channels used.
- Whether caches, MPU, low power, or secure/non-secure memory are involved.
Integration Checklist
-
Include RTT sources once. Avoid duplicate control blocks from multiple copies of RTT source.
-
Place control block in accessible RAM. J-Link must be able to locate and read the RTT control block.
-
Configure buffer policy. Blocking output can disturb real-time behavior; choose mode intentionally.
-
Verify host tooling. RTT Viewer, J-Link console, IDE plugin, or SystemView must attach to the correct target.
-
Handle cache and low power. Cacheable memory and deep sleep can hide or disrupt RTT buffers.
Common Failures
- Control block optimized out or duplicated.
- RTT logs block because host is disconnected and blocking mode is used.
- Buffers too small for burst logs.
- J-Link scans wrong RAM region.
- Cache prevents host from seeing updated data on some cores.
Verification
Before claiming RTT works:
- State probe, RTT source/config, buffer sizes, and blocking mode.
- Confirm host tool sees the control block.
- Confirm one output channel and one input channel if input is needed.
- Confirm behavior with host disconnected if product timing matters.
Example
User:
SEGGER RTT Viewer 连上了但没有日志。
Agent:
- Asks for RTT config, init path, J-Link target, and map/control block placement.
- Checks duplicate RTT sources and buffer mode.
- Verifies a minimal early boot RTT print.