How to use xSCOPE in real-time mode

  • version

    1.1.1

  • scope

    Example.

    This code is provided as example code for a user to base their code on.

  • description

    How to use xSCOPE in real-time mode

  • boards

    Unless otherwise specified, this example runs on the SliceKIT Core Board, but can easily be run on any XMOS device by using a different XN file.

xSCOPE is fully supported on hardware platforms which provide an XMOS link between the target device and the XSYS development connector, it is also supported via xSIM.

View the document (xSCOPE overview) for further information on tracing data from XMOS applications.

This example provides a simple demonstration of using the xSCOPE continuous event type for data logging from within an XMOS application. The continuous event type can be used to capture and log the value of specific variables within an application to allow debugging. xSCOPE can operate in both a post mortem and a real-time mode where data is streamed back to the host machine and displayed as the application is running. In this example we look at using this mode.

The probe configuration is handled by the user providing a config.xscope file which is picked up as part of the application build.

This example assumes you are familiar with creating a run configuration and enabling the associated xSCOPE options in that run configuration in xTIMEcomposer Studio or using the command line tools. For this example the user needs to select the real-time option in the xSCOPE configuration.

In order to used xSCOPE the correct header file must be included in the application

#include <xscope.h>

The xscope_int() function is used to send the contents of user variable values to the xSCOPE probe for real time display. In this example the program loops and continuously outputs events to the xSCOPE system for display in real time

while (1) {
  for (i = 0; i < 63; i++) {
    wait(wait_time);
    xscope_int(SIN_VALUE, sin_values[i]);
    xscope_int(COS_VALUE, cos_values[i]);
    xscope_int(TAN_VALUE, tan_values[i]);
  }
}