Difference between revisions of "How to configure Embedded Studio to use SWO"

From SEGGER Wiki
Jump to: navigation, search
Line 1: Line 1:
SEGGER's Embedded Studio offers advanced SWO code profiling like execution trace and execution profiling.
+
SEGGER Embedded Studio can use SWO for printf Output to the Debug Terminal and for code profiling and execution trace. This article describes the configuration of a project in Embedded Studio to enable SWO.
This article will cover a basic setup for Embedded Studio that can be transferred to any supported target device with a connected SWO pin.
 
   
 
__TOC__
 
__TOC__
Line 14: Line 13:
   
 
== Setup Guide==
 
== Setup Guide==
  +
# Open your project in Embedded Studio
* Open up or create a new ES project and make sure the correct target device is selected (in case of the emPower board it is the NXP MK66FN2M0xxx18) and J-Link is selected as the Target Connection device by opening the project options.
 
  +
# In the Project Explorer select the project and go to Project-> Edit Options...
  +
# Go to Debug -> Target Trace
  +
# Select SWO as Trace Interface Type
  +
# Enter the Trace Clock Speed: The trace clock speed is usually the target CPU speed while the application is running.
  +
# Enter the SWO Baud Rate: The SWO baud rate (or SWO speed) needs to match the trace clock speed and the used J-Link.
  +
# Click OK
  +
# Start a debug session
  +
# Open the Execution Profile Window (View -> More Debug Windows -> Execution Profile)
  +
# Open the Execution Trace Window (View -> More Debug Windows -> Execution Trace)
 
[[File:1_Check_Target_Device.PNG|thumb|Check if correct device and debugger is selected|none]]
 
[[File:1_Check_Target_Device.PNG|thumb|Check if correct device and debugger is selected|none]]
* Download the application once into the target by starting the debug session to make sure all PLL settings are applied before the next step.
 
* Detect actual SWO clock speed by using SEGGER's J-Link SWO Viewer for example, make sure that at this point your target application has been downloaded once so all PLL settings have been applied. To measure the SWO clock speed first close all open connections to J-Link, open SWO viewer, select your device and press measure.
 
[[File:4Measure_SWO_Clock.PNG|thumb|Measure SWO clock|none]]
 
* Take the measured value and enable SWO in the ES project settings, make sure the trace clock speed is set to a correct value and the
 
SWO baud rate is set to a supported value. In this case the J-Link OB is limited to a baud rate of 250 kHz but any external J-Link device is capable of handling 2 MHz and higher.
 
 
[[File:2_SWO_Settings.PNG|thumb|Set SWO speed and baud rate|none]]
 
[[File:2_SWO_Settings.PNG|thumb|Set SWO speed and baud rate|none]]
* Confirm the selection and start a debug session. To make the advanced code profiling features visible open the corresponding windows under View>More Debug Windows>Execution Profile and View>More Debug Windows>Execution Trace.
 
 
[[File:3_Execution_Profile.PNG|thumb|Execution Profile|none]]
 
[[File:3_Execution_Profile.PNG|thumb|Execution Profile|none]]
 
[[File:4_Execution_Trace.PNG|thumb|Execution Trace|none]]
 
[[File:4_Execution_Trace.PNG|thumb|Execution Trace|none]]
   
 
A basic ES project for the emPower board with all settings applied can be found here: [[Media: EmPower_ES_SWO.zip | emPower_ES_SWO.zip]]
 
A basic ES project for the emPower board with all settings applied can be found here: [[Media: EmPower_ES_SWO.zip | emPower_ES_SWO.zip]]
  +
  +
== Measuring CPU speed ==
  +
If the target CPU speed is not known it can be measured with J-Link Commander or J-Link SWO Viewer.
  +
  +
=== Measuring with J-Link Commander ===
  +
* Open J-Link Commander
  +
* Connect to your device
  +
* Execute "testcspeed <RamAddress>"
  +
[[File:Test_CPU_Speed.PNG|thumb|Measure CPU clock in J-Link Commander|none]]
  +
  +
=== Measuring with J-Link SWO Viewer ===
  +
* Open J-Link SWO Viewer
  +
* Select target device
  +
* Click measure
  +
[[File:4Measure_SWO_Clock.PNG|thumb|Measure SWO clock|none]]
  +
  +
== Calculating the SWO speed ==
  +
The supported SWO speeds depend on the connected emulator. They can be retrieved from
  +
the emulator. To get the supported SWO speeds for your emulator, use J-Link Commander, connect to your target and execute the command "SWOSpeed" without quotations marks.
  +
The listed speeds can be set as SWO baud rate.
   
 
== Troubleshooting ==
 
== Troubleshooting ==

Revision as of 15:15, 31 August 2017

SEGGER Embedded Studio can use SWO for printf Output to the Debug Terminal and for code profiling and execution trace. This article describes the configuration of a project in Embedded Studio to enable SWO.


Example Setup

The setup guide will be based on the following hardware and software components:

  • J-Link Software Package V6.18c or later
  • Embedded Studio V3.26a or later
  • SEGGER emPower evaluation board
  • Any J-Link/J-Trace hardware
  • Physically connected SWO pin to debug interface

Setup Guide

  1. Open your project in Embedded Studio
  2. In the Project Explorer select the project and go to Project-> Edit Options...
  3. Go to Debug -> Target Trace
  4. Select SWO as Trace Interface Type
  5. Enter the Trace Clock Speed: The trace clock speed is usually the target CPU speed while the application is running.
  6. Enter the SWO Baud Rate: The SWO baud rate (or SWO speed) needs to match the trace clock speed and the used J-Link.
  7. Click OK
  8. Start a debug session
  9. Open the Execution Profile Window (View -> More Debug Windows -> Execution Profile)
  10. Open the Execution Trace Window (View -> More Debug Windows -> Execution Trace)
Check if correct device and debugger is selected
Set SWO speed and baud rate
Execution Profile
Execution Trace

A basic ES project for the emPower board with all settings applied can be found here: emPower_ES_SWO.zip

Measuring CPU speed

If the target CPU speed is not known it can be measured with J-Link Commander or J-Link SWO Viewer.

Measuring with J-Link Commander

  • Open J-Link Commander
  • Connect to your device
  • Execute "testcspeed <RamAddress>"
Measure CPU clock in J-Link Commander

Measuring with J-Link SWO Viewer

  • Open J-Link SWO Viewer
  • Select target device
  • Click measure
File:4Measure SWO Clock.PNG
Measure SWO clock

Calculating the SWO speed

The supported SWO speeds depend on the connected emulator. They can be retrieved from the emulator. To get the supported SWO speeds for your emulator, use J-Link Commander, connect to your target and execute the command "SWOSpeed" without quotations marks. The listed speeds can be set as SWO baud rate.

Troubleshooting

  • The Terminal I/O windows is still not showing any information even after following the setup guide step by step.
    • Make sure the SWO pin is actually connected to your J-Link debug hardware, many J-Link OBs for example do not have SWO routed to them.
    • Check if the selected target device is correct.
  • I want to use SWO and JTAG simultaniously, how can i do that?
    • This is not possible as the TDO (JTAG) signal is sharing the same pin as SWO. To be able to use SWO a SWD debug connection is required.
  • I can't start a debug session
    • Is the target device powered properly? You can open the J-Link Commander to see what voltage is currently showing as VTREF in the console output. Is that value expected?


If there are still issues persisting feel free to contact our support: support@segger.com