Debug and trace over functional I/O
CoreSight™ SoC-600 introduces access standards to the debug memory space that enable access using existing functional interfaces such as USB, ethernet, or PCIe, as an alternative to using the traditional JTAG and Serial Wire Debug interfaces, to debug your target. It also introduces an enhanced Embedded Trace Router (ETR) that supports high bandwidth streaming trace mode, which you can use to offload trace data over the functional interfaces.
For an end-to-end debug and trace over functional interfaces solution with Arm® Development Studio, you require the following software components:
- An on-target debug agent that provides an OS specific, or bare metal mechanism, to allow the on-target agent access to the CoreSight SoC-600 components.
- Functional interface drivers, such as USB or PCIe, for both the host and target.
- A transport layer protocol.
- A standard debug and trace API to the debugger.
The on-target debug agent, the functional interface drivers, and the
probes.xml file, are provided by the SoC vendor.
Arm provides a standardized transport protocol that is agnostic of the physical link, called the CoreSight Wire Protocol (CSWP), and APIs to the debugger; RDDI MEM-AP for debug, and RDDI Streaming Trace for trace.
Although some of the software components are the responsibility of the SoC vendor, Arm provides an end-to-end open-source package that contains reference implementations of the CSWP protocol handlers, for both the host and target, and debug and trace API sets. For completeness, Arm also provides an example implementation of a Linux-based on-target debug agent, and its associated drivers.
You can find the open-source package here: https://github.com/ARM-software/coresight-wire-protocol
NoteYou can optionally replace the Arm-provided CSWP transport protocol with a protocol from the SoC vendor. You are responsible for the host and target protocol handlers when using a protocol not provided by Arm.
A complete end-to-end solution results in an RDDI MEM-AP implementation for debug, and an RDDI Streaming Trace implementation, both in the form of a shared library that is loaded by Arm Debugger. These libraries are provided by the SoC or tool vendors. To associate the shared libraries with your new connection type, you need a probe definition file, called
probes.xml. All dependencies of the APIs, including the transport protocol, drivers, and third-party libraries, must either be included in the shared libraries or provided alongside them.
When you have configured and associated all of these software components, the result is a new virtual probe. See Add a debug connection over functional I/O for details on how to implement a virtual probe.