J-Link Debug Probes
SEGGER J-Links are the most widely used line of debug probes available today. They've proven their value for more than 10 years in embedded development. This popularity stems from the unparalleled performance, extensive feature set, large number of supported CPUs, and compatibility with all popular development environments.
- All popular debuggers and IDEs are supported [More..]
- Cross platform support (Windows, Linux, Mac)
- Ultrafast download speed into RAM and flash memory
- Unlimited breakpoints in flash memory [More..]
- Unique Real-Time Transfer technology (RTT) [More..]
- Multiple CPUs supported—8051, PIC32, RX, ARM7/9/11, Cortex-M/R/A, RISC-V [More..]
- Free software updates
- Built-in VCOM functionality [More..]
J-Link — The best choice to optimize your debugging and flash programming experience
With up to 3 MBytes/s download speed to RAM and record-breaking flashloaders, as well as the ability to set an unlimited number of breakpoints in flash memory of MCUs, the J-Link debug probes are undoubtedly the best choice to optimize your debugging and flash programming experience.
J-Link debug probes support a wide range of CPUs and architectures. Be it from simple 8051 ones, through mass market Cortex-M up to high end cores like Cortex-A (32- and 64-bit). For a complete list of supported cores and devices, please refer to here.
J-Link also supports directly interfacing SPI flashes, without the need of a CPU between J-Link and the SPI flash (directly communicating via the SPI protocol). For more information, please refer to the J-Flash SPI page.
J-Link is supported by all major IDEs, from free Eclipse based ones (directly or via GDB) up to commercial ones, including SEGGER Embedded Studio. For a complete list, please refer to the Supported IDEs page.
Working with J-Link
Setting up J-Link for first use
In order to use J-Link for the first time you need to install the J-Link related software and documentation pack which, among others, includes the J-Flash software, and connect J-Link to the host PC via USB.
Connecting the target system
In general, J-Link should be powered on before connecting it with the target device. That means you should first connect J-Link with the host system via USB and then connect J-Link with the target device. Power-on the device after you connected J-Link to it.
If you use J-Link PRO with Ethernet, just power-on J-Link via external power supply.
Verifying target device connection with J-Link Commander
If the USB driver is working properly and your J-Link is connected with the host system, you may connect J-Link to your target hardware. Then start the J-Link command line tool JLink.exe, which should now display the normal J-Link related information. Now type connect and specify your target, and the target interface. Once done it should display a report about the connected CPU and its debug interface. The screenshot shows the output of JLink.exe. As can be seen, it reports a J-Link connected to an STM32F205 and the related information.
Start using J-Link with your favourite tool-chain.
To connect your J-Link with your development project, please consult the guide for your favourite tool-chain.
Full insight - J-Link control panel
No more guessing! The J-Link control panel gives full transparency of what J-Link is currently doing.
The J-Link control panel is available on all platforms (Windows, Linux, macOS) and does not require any additional utility to be installed / started. It is available through the regular web browser.
Extending the IDE feature set
Who does not know it? An IDE has been chosen and working with it is started. Then, a new, very useful feature is introduced in the J-Link software but the IDE has not adapted it yet. Or even worse, the IDE cannot be updated due to certification reasons. The J-Link control panel provides the opportunity to make use of new J-Link features without even touching the IDE itself.
Full J-Link/J-Trace Support
The following table lists the IDEs fully supporting J-Link/J-Trace and the additional features of J-Link/J-Trace, which can be used with them.
All following IDEs have debug support, including: Download to flash and RAM, memory read/write, CPU register read/write, run control (go, step, halt), software breakpoints in RAM, hardware breakpoints in flash memory, and use of Unlimited Flash Breakpoints.
J-Link comes with built-in virtual COM port (VCOM) functionality. This means that in addition to the regular J-Link debug functionality, J-Link will also show up as a COM port in the device manager of the operating system.
As most modern computers do not expose a physical COM port anymore but many hardware setups still use UARTs for logging, diagnostics and application control, usually a separate COM to USB adapter is needed to use the COM functionality of the target hardware while debugging in parallel.
With J-Link, such an additional adapter is not required as J-Link provides this adaption functionality.
The J-Link VCOM functionality is implemented via SEGGER emUSB-Device, using the CDC-ACM class.
For more information, please refer to the emUSB-Device pages.
J-Link models are shipped with VCOM functionality disabled. It can be enabled via the J-Link Configurator utility. For more information about how to enable VCOM on a J-Link, please refer to the J-Link user guide.
The following pins on the stadard 20-pin 0.1" connector on J-Link are used for VCOM functionality:
- 5: J-Link Tx
- 17: J-Link Rx
- VCOM functionality is not available for the J-Link EDU Mini model
- VCOM functionality is not available when using the traditional 4-wire JTAG interface for target communication, as Pin 5 is needed as TDI for this interface
J-Link can be used with GDB based setups.
The GNU Debugger (GBD) is the de facto debugger when developing on Linux systems. However, it also found its way into embedded development (also without Linux running on the target system). GDB provides a standardized interface / API that can be used by an IDE.
It also specifies a standardized protocol (GDB remote protocol) which allows GDB to communicate with a GDBServer that knows how to handle the debug probe connected to the target. The J-Link software package comes with the J-Link GDBServer which allows using J-Link in GDB based setups.
J-Link can be used with LLDB.
While originally, GNU toolchains provided GCC as compiler and GDB as debugger, with the introduction of Clang as compiler, there was also the introduction of LLDB which is basically a successor or GDB. Protocol-wise it is backward compatible to GDB while the API for the IDE is slightly different. The J-Link software package comes with the J-Link GDBServer which also allows using J-Link in LLDB based setups.
J-Link can be used with OpenOCD (Open On-Chip Debugger).
OpenOCD is an open-source software that can interface basically any debug probe. It provides a standardized API, allowing an IDE to support OpenOCD. There are several tutorials on the internet that describe how to use J-Link with OpenOCD.
Note: OpenOCD is a 3rd party software, so SEGGER cannot provide any guarantees etc. Using J-Link with OpenOCD bypasses all J-Link specific features like flash programming, unlimited flash breakpoints and the J-Link high debugging speed. OpenOCD will handle J-Link as a simple sequence generator which will affect the debug performance. Please also note that using J-Link with OpenOCD is not covered by the standard J-Link support. Support for OpenOCD is provided by the OpenOCD community.
What is the advantage of J-Link versus simple probes such as FTDI based systems?
A: J-Link has numerous advantages. One of the biggest advantages is the J-Link software supplied by SEGGER, which allows using it with common IDEs, the availability of unlimited flash breakpoints for people debugging software which runs in the flash of microcontrollers, as well as the high speed of the J-Link and the simple and very fast download into flash memory. In contrast to most of the simple probes, it supports adaptive clocking as well as SWD and SWO. It also works more stable since it is not just a dump USB to JTAG converter, but uses the intelligence of the built-in CPU, providing a more robust communication, especially in situations where the target CPU runs at low clock speeds.
Is it possible to write my own application with J-Link?
A: Yes. We offer a dedicated Software Developer Kit (SDK). It allows using the full J-Link functionality. [More info...]
The core of my target system could not be recognized automatically. Is there a way to configure my device in order to communicate with J-Link?
A: Yes! In most cases the J-Link auto-detection works fine and recognizes the core of a device automatically. However, in some cases the auto-detection of J-Link does not work e.g. if the core is not present in the JTAG chain by default and needs to be enabled by sending a command to another device in the JTAG-chain. In such cases, the connection sequence of J-Link can be customized by using a J-Link script file which is executed before the communication between J-Link and the target system starts. The script file allows maximum flexibility, so almost any target initialization which is necessary can be supported.
What is adaptive clocking and when and why would I use it?
A: If the target provides the RTCK signal, select the adaptive clocking function to synchronize the JTAG clock (TCK) to the processor clock outside the core. This ensures there are no synchronization problems over the JTAG interface. If you use the adaptive clocking feature, transmission delays, gate delays, and synchronization requirements result in a lower maximum clock frequency than with nonadaptive clocking. This is the recommended JTAG speed used to connect to ARM7/9 -S cores.
I have multiple ARM cores in my JTAG chain. How can I debug them (simultaneously) with J-Link?
A: Simple: Two or more debuggers can use the same J-Link simultaneously. Multi-core debugging requires multiple debuggers or multiple instances of the same debugger. You need to tell your debugger which device in the scan chain you want to debug. Additional special settings are not required.
May I work with more than one J-Link at the same time on the same machine?
A: Yes, you can connect an unlimited number of J-Links to your PC. No special configuration is required, since each J-Link is registered with its unique serial number at the PC, allowing it to have multiple J-Links connected in parallel.
Which CPUs are supported by J-Link?
A: J-Link works with ARM7/9/11, Cortex-A5/A8/A9, Cortex-M0/M0+/M1/M3/M4/M7, Cortex-R4/R5, Microchip PIC32 and Renesas RX100/RX200/RX600 series CPUs.
Here is a detailed list of supported CPUs and Devices.
Can J-Link read back the status of the JTAG pins?
A: Yes, the status of all pins can be read. This includes the outputs of J-Link as well as the supply voltage, which can be useful to detect hardware problems on the target system.
Does J-Link support the Embedded Trace Buffer (ETB)?
A: Yes. J-Link supports ETB on Cortex-M3/M4/M7 and Cortex-A/R (if implemented by target device).
Does J-Link support the Micro Trace Buffer (MTB)?
Does J-Link support the Embedded Trace Macrocell (ETM)?
A: No. ETM requires another connection to the ARM chip and a CPU with built-in ETM. ETM is supported by the J-Trace product family.