Debug - Geek went Freak!

Debug

ARM SWD: SWO vs SWV

The pin and the protocol

SWD (Serial Wire Debug) is a minimal pin debug and trace port. At a very minimal configuration, SWD consists of a debug port matching JTAG’s functionality but with just 2 wires.

These two wires are:

  1. SWCLK
  2. SWDIO

SWCLK is the clock for the synchronous bi-directional half-duplex communication channel SWDIO that runs between the host and the target. The host can access the DAP (Debug Access Port) as per ADI (ARM Debug Interface specification) through SWDIO pin.

ARM cores have advanced tracing functionality enabled by ITM, ETM, DWT, etc. These are asynchronous trace messages needed to be sent from the processor to the host.

In addition to SWCLK and SWDIO, another wire can optionally be added to obtain trace functionality. This wire is called SWO (Serial Wire Output).

SWO is a unidirectional asynchronous pin with trace data flowing from the target to the host. SWV data can be sent over SWO pin using either UART or Manchester encoded.

SWD+SWO
SWD+SWO

When the trace data is sent through SWO pin, it is called Serial Wire View.

Trace data can also be sent through parallel data bus called TPIU.

Conclusion

SWO is a pin/wire in SWD port whereas SWV is a tracing protocol and technology that is sent through the SWO pin.

References

  1. CoreSight Technology

Qt Creator error: Cannot retrieve debugging output

Qt Creator allows you to open and run multiple instances of Qt Creator at the same time. But there is a small glitch. If you are running multiple instances of Qt Creator, only the first instance displays the console output in the Application output console. The second instance would complain with the following error message:

Cannot retrieve debugging output

Fix for this is to close the second instance or open the project you want to edit and debug in the first instance.