Compare the capture types
RTT and ITM sessions contain decoded events. ETM sessions contain instructions. Event query and summary tools do not interpret an ETM session as an event log.
Record RTT events
Select a J-Link target in the serial view before you start. Without an explicit transport, Embedder chooses:- A discovered RTT up channel marked
ctforbinary - A discovered RTT down channel for control
- Data channel 2 and control channel 1 as fallbacks
ETRC control request on the down channel and waits for the firmware’s trace descriptor.
Plain RTT log text is not a trace event stream. Use the serial transport workflow for ordinary logs.
Stop the session when you have reproduced the behavior:
Record ITM events
ITM event recording uses one stimulus port as a binary packet stream:ITM_SendChar text, on the selected port.
Use the ITM serial monitor when you want human-readable stimulus output. Use trace recording only when the firmware implements the packet format and descriptor expected by the decoder.
Capture an ETM instruction window
instruction_trace requires:
- A SEGGER J-Trace, not a plain J-Link
- SEGGER J-Link host software
- A fine-pitch CoreSight-20 trace cable
- A target that exposes and drives its ETM trace pins
- The matching ELF and SEGGER device name
The window is usually the tail of a longer run. ETM gives instruction order,
not elapsed time. A CPU frequency can produce an estimate, but it does not add
real timestamps to the trace.
Stream ETM from a known start
Usetrace_start with transport.kind="etm" when the capture must begin at a known point and continue until you stop it. Pass firmware.elfPath at start; addresses are symbolized as they arrive and cannot be resolved from an ELF attached later.
Run source coverage
coverage_run uses J-Trace instruction statistics for the whole bounded run:
- Covered and total functions
- Covered and total source lines
- Covered and total instructions
- Function entry run counts
- Per-line rows when you request
funcs+lines
Inspect and export sessions
Trace sessions persist under.embedder/traces/<session-id>/.
Use:
trace_statusto find the active or latest sessiontrace_list_sessionsto compare RTT, ITM, and ETM sessions- Event query and summary tools for RTT or ITM sessions
- The Trace tab or
instruction_traceoutput for ETM instructions trace_exportwithrawto copy a complete session
instructions.json; export the raw session directory so you do not drop them.
Interpret capture quality
Every trace result reports provenance:- Firmware match state and ELF hash when available
- Resolved and unresolved symbols
- Dropped records, resynchronizations, and transport errors
- Trace format and confidence
Fix trace problems
RTT trace receives no descriptor
RTT trace receives no descriptor
Confirm the data and control channel indexes and the firmware’s compact trace integration. Plain RTT logging does not answer the trace-start control request.
ITM trace is empty
ITM trace is empty
Verify OpenOCD, SWO clocks, the stimulus port, and firmware packet output. Test human-readable ITM separately in the serial view.
ETM trace is empty
ETM trace is empty
Confirm that the probe is J-Trace, the target drives TRACECLK, and the fine-pitch CoreSight-20 cable carries the trace signals.
Coverage cannot take the probe
Coverage cannot take the probe
Stop active hardware scripts and trace sessions. The coverage tool already stops managed GDB and RTT connections during its handoff.
ETM analysis shows impossible calls
ETM analysis shows impossible calls
Check continuity, window truncation, and the matching ELF. Do not reconstruct across reported gaps.
J-Trace setup
Check the probe, cable, target, and scripted SDK path.
Serial transports
Configure RTT and ITM before recording events.

