Skip to main content
  • Products
  • Evaluate our Software
  • Downloads
  • Free Utilities
  • Purchase
  • Silicon Vendors
  • Support
  • About Us
  • Blog
  • Forum
  • Search
  • Jobs
  • Newsletter
  • Blog
  • Contact
  • Shop
  • J-Link debug probes
  • J-Link SWO Viewer

    J-Link SWO Viewer

    J-Link SWO Viewer is a tool which allows showing terminal output of the target performed via the SWO pin.

    Contact us
    Downloads
    Documentation
    SEGGER Debug & Trace Probes
    1. 1.Licensing
    2. 2.System requirements
    3. 3.Technical background
    4. 4.Example code
    5. 5.Latest news

    Overview

    J-Link SWO Viewer is a tool which allows showing terminal output of the target performed via the SWO pin. It can be used without a debugger when the application runs stand-alone to still perform some log output or side by side with a debugger such as GDB or GDB/Eclipse which does not support terminal output via SWO.

    Licensing

    The J-Link SWO Viewer comes as part of the J-Link Software and Documentation Package. The software package is free for any J-Link or J-Trace device and can be downloaded here:

    DownloadJ-Link Software and Documentation Pack

    System requirements

    Supported OS
    WindowsMicrosoft Windows (x86/x64)
    macOSmacOS (x86/Apple Silicon)
    LinuxLinux (x86/x64/Arm)

    Technical background

    SWO is a dedicated pin of ARM's Cortex-M debug interface.
    While it can be used to output various information in real time by the CPU, it's main usage is terminal I/O in real time with very low intrusion.

    Most programs can perform debug outputs without losing their real time behavior.

    SWO Viewer

    Example code

    Simple implementation for output via SWO for Cortex-M processors. It can be used with any IDE. This sample implementation ensures that output via SWO is enabled in order to guarantee that the application does not hang.

    /*********************************************************************
    *
    *       Prototypes (to be placed in a header file such as SWO.h)
    */
    void SWO_PrintChar  (char c);
    void SWO_PrintString(const char *s);
    
    /*********************************************************************
    *
    *       Defines for Cortex-M debug unit
    */
    #define ITM_STIM_U32 (*(volatile unsigned int*)0xE0000000)    // Stimulus Port Register word acces
    #define ITM_STIM_U8  (*(volatile         char*)0xE0000000)    // Stimulus Port Register byte acces
    #define ITM_ENA      (*(volatile unsigned int*)0xE0000E00)    // Trace Enable Ports Register
    #define ITM_TCR      (*(volatile unsigned int*)0xE0000E80)    // Trace control register
    
    /*********************************************************************
    *
    *       SWO_PrintChar()
    *
    * Function description
    *   Checks if SWO is set up. If it is not, return,
    *    to avoid program hangs if no debugger is connected.
    *   If it is set up, print a character to the ITM_STIM register
    *    in order to provide data for SWO.
    * Parameters
    *   c:    The Chacracter to be printed.
    * Notes
    *   Additional checks for device specific registers can be added.
    */
    void SWO_PrintChar(char c) {
      //
      // Check if ITM_TCR.ITMENA is set
      //
      if ((ITM_TCR & 1) == 0) {
        return;
      }
      //
      // Check if stimulus port is enabled
      //
      if ((ITM_ENA & 1) == 0) {
        return;
      }
      //
      // Wait until STIMx is ready,
      // then send data
      //
      while ((ITM_STIM_U8 & 1) == 0);
      ITM_STIM_U8 = c;
    }
    
    /*********************************************************************
    *
    *       SWO_PrintString()
    *
    * Function description
    *   Print a string via SWO.
    *
    */
    void SWO_PrintString(const char *s) {
      //
      // Print out character per character
      //
      while (*s) {
        SWO_PrintChar(*s++);
      }
    }

    Latest news

    2025
    Jul.09
    J-Link
    J-Link devices alongside Renesas RA8P1

    SEGGER delivers J-Link and Flasher support for Renesas Electronics's RA8P1

    SEGGER's J-Link series of debug probes and Flasher programmers are now compatible with Renesas Electronics's high-performance group of RA8P1 microcontrollers (MCUs). The MCUs are powered by the Arm® Cortex®-M85 (CM85) processor with a Helium™ M-Profile Vector Extension and Ethos™-U55 neural processing unit.

    [Read more...]

    All news

    • Release notes
    • Update notification
    • Pricing
    • Support
    • Silicon vendor resources
    • J-Link Prime

    Headquarters

    SEGGER Microcontroller GmbH

    Ecolab-Allee 5
    40789 Monheim am Rhein, Germany
    info@segger.com
    Tel.: +49-2173-99312-0
    Fax: +49-2173-99312-28

    Locations

    USA: SEGGER Microcontroller Systems LLC

    Boston area
    101 Suffolk Lane
    Gardner, MA 01440, USA
    us-east@segger.com
    Tel.: +1-978-874-0299
    Fax: +1-978-874-0599

    Silicon Valley
    Milpitas, CA 95035, USA
    us-west@segger.com
    Tel.: +1-408-767-4068

    China: SEGGER Microcontroller China Co., Ltd.

    Room 218, Block A, Dahongqiaoguoji
    No. 133 Xiulian Road
    Minhang District, Shanghai 201199, China
    china@segger.com
    Tel.: +86-133-619-907-60

    ISO 9001 certified

    ISO 9001

    30+ years of experience

    First-class embedded software tools since 1992
    • Imprint
    • Disclaimer
    • Code of Conduct
    • Privacy Policy
    © 2025 SEGGER - All rights reserved.