J-Link SDK

The J-Link SDK allows customers to write their own applications that are using J-Link. Typical applications are for example:

  • Additional debugging software utilities (debug data visualizer, etc.)
  • Customized production flash programming utilities which make use of the flash programming capabilities of the J-Link DLL
  • Automated test applications

The J-Link SDK is cross-platform available (Windows, Linux, Mac OS X).

The J-Link DLL is a standard DLL / shared library, typically used from "C" (Visual Basic or Delphi projects are also doable).
It makes the entire functionality of J-Link available through the exported functions. The functionality includes basic operations like reading/writing memory, halting/stepping/restarting the CPU as well as direct flash programming capabilities.

The J-Link SDK comes with different sample applications in source code which demonstrate the usage of the J-Link DLL API. The following table gives a short overview about the sample applications which come with the SDK:

Name Description
DCCTest.c Sample application which demonstrates DCC communication with the target CPU by using the J-Link DCC API functions.
FlashDownload.c Uses the J-Link DLL flash download functionality in order to download a .bin file into the internal flash memory of a microcontroller.


Sample application which reads out and shows the JTAG-ID of the target device.


Sample application which demonstrates the usage of the RAWTRACE API functions.
TestHW.c Several hardware tests like checking memory, target power and core ID
Main.c Source code of J-Link commander. This tool permits some simple commands such as memory dump, halt, step, go and Id-check as well as some more in-depths analysis of the state of the ARM core and the ICE breaker module.

Supported CPU cores

The J-Link SDK always supports all cores which are also supported by J-Link. For a complete list of supported CPU cores, please refer to here.

How do I use the flash programming capabilities of the J-Link DLL?

The J-Link DLL supports direct download into the internal flash memory of most microcontrollers.
In order to use this functionality in your own application, you simply have to select the appropriate device.

After the device has been selected, you can perform a download into flash memory by simply performing a memory write access to a flash address. The flash loader makes flash behaving as RAM, so the user does not have to take care about, whether he is writing to an address which is in RAM or in flash.

Note: Direct download into external parallel NOR flash is also supported. The setup for this is slightly different but flash programming itself is done the same way as for internal flash.

Note: The J-Link SDK comes with a sample application which demonstrate the usage of the flash download functionality.

Creating dumps of non-memory mapped flashes (NAND flash, SPI NOR flash, EEPROM, ...)

In general, it is also possible to also create dumping utilities which can read non-memory mapped flash via J-Link, using the API of the SDK. There are already NAND dumping utilities available from SEGGER for J-Link SDK customers, upon request. One NAND dumping utility as executable free of charge for SDK customers.

What do I need to write my own program with J-Link?

The J-Link SDK is needed if you want to write your own program with J-Link. The listed files in the table below are included in the J-Link SDK.
For more information on how to obtain a license please contact info@segger.com.

Files Contents
JLinkARMDLL.h Header file that must be included to use the DLL functions. This file contains the defines, typedefs and function declarations.
JLinkARM.lib Library contains the exports of the J-Link DLL.
JLinkARM.dll The DLL itself.
main.c Source code of J-Link Commander.
Project files of the sample application. Double click "JLink.dsw" to open the project.
JLink.exe J-Link Commander. Small command line utility that allows basic testing if a target connection can successfully be established.


J-Link DLL API documentation.
Release.html Release notes.
J-Link USB driver.

Development environment (compiler)

Any "C/C++" compiler will do. Workspace (Project) file is for Microsoft Visual Studio (V6.0) or Visual Studio .net (V7.0 or newer).
Other compilers will work as well, but no example workspace is provided.

Using the sample applications

The sample application can be used to test the correct installation and proper function of the J-Link. The SDK comes with different sample applications for different purposes.

By default, when opening JLink.dsw the ReadId.c sample application is selected. This application opens the DLL and connects to the J-Link. If the connection has been established successfully, the JTAG-ID of the target device is read.
The sample applications are supplied in source code form. To run the sample applications, you have to compile them with an ANSI "C" compiler. A project workspace for Microsoft Visual C++ 6.0 or Microsoft Visual .Net which contains all sample applications, is supplied with the SDK.

Compiling and running the sample application

Open the project workspace with a double click on JLink.dsw, compile the source with Build | Build JLink.exe (Shortcut: F7) and run the executable with Build | Execute JLink.exe (Shortcut: CTRL-F5) from the menu.

 After the application has been started, you should see the following output:


The following items are required to develop software for J-Link:

  • PC running Windows 2000 or later (including Windows 8) / Linux / Mac OS X
  • J-Link
  • x86 compiler, linker, opt. IDE