SEGGER SystemView is a real-time recording and visualization tool. It is freely available from SEGGER’s website.

This article describes how to setup SEGGER SystemView for a non-OS project and shows how to modify a simple Flex / RAIL example to call SEGGER SystemView routines.

Since Simplicity Studio contains the SystemView, it is only necessary to download the "SystemView Target Sources" package from https://www.segger.com/downloads/free-utilities/#SystemView

 

The steps below described how to add SystemView capability to an example project and how to run it:

  • Extract SystemView source files from the downloaded archive (.zip) file to an arbitrary directory
  • Open the RAIL: Simple TRX example project and click on "Generate" to let Studio to generate the necessary files
  • From the previously extracted SystemView source files / directories copy "Config" and "SEGGER" directories and "Sample\NoOS\Config\Cortex-M\ SEGGER_SYSVIEW_Config_NoOS.c" file to the project’s root directory
  • Add the copied directories to the include path of the project:

 

  • Open and edit "main.c" and add the following lines to the code:

#include "SEGGER_SYSVIEW.h"

SEGGER_SYSVIEW_Conf();

SEGGER_SYSVIEW_Start();

#include "rail_config.h"
#include "hal_common.h"
#include "SEGGER_SYSVIEW.h" // include SystemView header file


// Memory manager configuration
#define MAX_BUFFER_SIZE  256
  // Initialize Radio
  radioInit();

  SEGGER_SYSVIEW_Conf(); // initialize SystemView
  SEGGER_SYSVIEW_Start(); // start SystemView

  // Configure RAIL callbacks
  RAIL_ConfigEvents(railHandle,
                    RAIL_EVENTS_ALL,
  • Open and edit "emdrv\gpiointerrupt.c" and add the following lines to the code:

#include "SEGGER_SYSVIEW.h"

SEGGER_SYSVIEW_RecordEnterISR();

SEGGER_SYSVIEW_RecordExitISR();

Note, "gpiointerrupt.c" is a shared SDK file, when you start to edit a popup will appear:

It is recommended to choose "Make a Copy" to keep the original file intact.


void GPIO_EVEN_IRQHandler(void)
{
  SEGGER_SYSVIEW_RecordEnterISR(); //emit Enter ISR signal

  uint32_t iflags;

  /* Get all even interrupts. */
  iflags = GPIO_IntGetEnabled() & 0x00005555;

  /* Clean only even interrupts. */
  GPIO_IntClear(iflags);

  GPIOINT_IRQDispatcher(iflags);

  SEGGER_SYSVIEW_RecordExitISR(); //emit Exit ISR signal
}
  • Compile and run the project as usual. SystemView does not require to project to debug, it will work if the code is just running.
  • Click on the SystemView icon in Studio to start SEGGER SystemView application:

  • When SystemView started, click on the green ‘Play’ icon.

  • A configuration window pops up. Leave all setting as their default and click "OK".

  • The SystemView application starts running. Pressing PB0 pushbutton on the WSTK board will result in events recorded:

 

  • Proprietary
  • Knowledge Base Articles