J-Link SDK
The J-Link Software Developer Kit (SDK) allows customers to integrate J-Link support into their own applications.
Overview
The J-Link Software Developer Kit (SDK) allows customers to integrate J-Link support into their own applications. This is used in professional IDEs, such as SEGGER's Embedded Studio and others, to allow debugging directly via a J-Link, as well as in customized production utilities.
Typical applications to be used with J-Link are for example:
- Complete debuggers or additional debugger utilities like data visualizers.
- Customized flash programming utilities to be used in the production.
- Automated test applications.
The J-Link SDK is available for Windows, Linux and macOS, as 32-bit and 64-bit versions and can be used with nearly every programming language or solution. The integration of J-Link is done via a standard DLL / share library and provides easy-to-use C-language API functions. The SDK comes with startup projects for C (Visual C++ 6 and Visual Studio 2010), VB6 (Microsoft Visual Basic) and VB.NET (Visual Studio 2010).
The J-Link SDK allows using the entire functionality of J-Link, such as:
- The integrated flash programming capabilities, allowing high-speed flash programming of all supported devices without creating a custom flash-loader.
- Complete control of the target (Run, halt, reset, step, ...).
- Setting breakpoints and watchpoints, including setting Unlimited Flash Breakpoints.
- Using High-Speed Sampling, SEGGER Real Time Transfer (RTT), SWO and Simple Trace directly in the application.
- Low-level communication with the target via JTAG commands.
Supported CPU cores
The J-Link SDK always supports all cores which are also supported by J-Link. New supported cores can be added by updating the J-Link DLL.
Example projects
The J-Link SDK includes different example applications in source code which demonstrate the usage of the J-Link API, show the basic startup sequence and provide examples how to integrate the J-Link DLL in different programming languages. The example projects are organized by the executing target platform (Windows, Linux, Mac, Target) and the programming language / environment. The following table gives an overview about the included example projects. The usage of the J-Link SDK is not limited to these programming environments, it can be used from nearly every programming language which allows loading shared libraries.
Project / Script | Target platform | Description |
---|---|---|
Samples_Startup_Python.py | Windows/ Linux/ macOS, Python 3.5.2 | Python script showing how to call J-Link DLL functions and demonstrating the startup sequence. |
Windows\C\ Start_JLink_VS2010.sln | Windows, Visual Studio 2010, C code | Visual Studio 2010 solution including example projects for the J-Link DLL startup sequence and flash download via J-Link. |
Windows\C\ Start_JLink_VC6.dsw | Windows, Visual C++ 6.0, C code | Visual C++ 6 workspace, including example projects for the J-Link DLL startup sequence, flash download via J-Link, reading the target's JTAG ID, hardware testing, instruction tracing and the J-Link RTT Logger and J-Link Commander tool. |
Windows\VB.NET\ Start_JLink_VBNET | Windows, VB.NET | Visual Basic .NET Visual Studio 2010 project showing how to call J-Link DLL functions and demonstrating the startup sequence. |
Windows\VB\ Start_JLink_VB60 | Windows, Mircosoft Visual Basic 6.0 | Visual Basic 6.0 project for the J-Link DLL startup sequence and the usage or the J-Link SDK in a VB application. |
Windows\LabView2011\ Startup.lvproj | Windows, LabView 2011 | LabView 2011 project for the J-Link DLL startup sequence and the usage or the J-Link SDK in a LabView application. |
Windows\CSharp\ JLink_Start_CSharp.sln | Windows, Visual Studio 2010 C# | Visual Studio 2010 project for the J-Link DLL startup sequence and the usage or the J-Link SDK in a C# application. |
Test applications
The example projects are configured to be compiled and executed out-of-the-box and included as precompiled executable. They can be used to test the correct installation and proper function of the J-Link.
Python script:
The example Python script can be executed using Python 3.5.2 on Windows, Linux and macOS.
C code applications:
The example C code applications code can be compiled with every common C compiler on Windows, Linux and macOS. Workspace / solutions and project files for Visual C++ 6.0 and Visual Studio 2010 are included as an easy way to start with, but the J-Link SDK is not limited to be used with these IDEs.
Visual Basic & Visual Basic .NET application:
The example Visual Basic application is written in VB 6 and can be compiled with Microsoft Visual Basic. The example VB.NET application is created with Microsoft Visual Studio 2010.
J-Link SDK Package
The J-Link SDK comes with everything which is needed to start implementing J-Link support into software or create a new application using J-Link. It includes the needed libraries for the selected platform, a complete documentation of the available J-Link API and additional background information, the USB drivers for J-Link and example startup projects to show the usage of J-Link. The J-Link SDK includes everything which is needed to integrate J-Link into an application. The table below lists the most important files which are included.
Package content
The J-Link SDK includes everything which is needed to integrate J-Link into an application. The table below lists the most important files which are included.
File | Content |
---|---|
JLinkARMDLL.h | Default J-Link DLL header file. Contains function declarations, defines and typedefs used in the DLL. Must be included to use the DLL functions. |
JLink.h | Fallback J-Link DLL header file. Like JLinkARMDLL.h, but with stdcall function declarations instead of C declaration. Must be used for applications which cannot use C declaration functions. |
JLink.lib | J-Link import library to load the J-Link DLL functions. Searches for J-Link DLL in installed J-Link software if the DLL is not in executable directory. |
JLinkARM.lib | J-Link import library to load the J-Link DLL functions. Searches for J-Link DLL in executable directory only. Should not be used when updating the DLL shall be possible. |
JLinkARM.dll | The J-Link DLL itself to be copied into the application's executable directory. |
UM08002_JLinkDLL.pdf | J-Link SDK documentation. |
Release.html | J-Link SDK release notes. |
Licensing
The J-Link SDK license allows using custom applications within the customer's company only. Authorization to distribute and ship software which uses the J-Link SDK or parts of it can be permitted by SEGGER upon request.
For more information on how to obtain a J-Link SDK license, please contact info@segger.com.
Requirements
- J-Link SDK
- PC running Windows / Linux / macOS
- J-Link
- Compiler or IDE of choice for the desired programming language
FAQ
Q: How do I program the internal flash memory of my device?
A: 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, simply select the appropriate device and perform memory writes. With this functionality you do not have to care about whether you are writing to or reading from RAM or flash.
Q: How do I program external CFI compliant NOR flash connected to my device?
A: Direct download into external parallel NOR flash is supported, too. Prior to programming the NOR flash, you will have to make sure the flash interface is configured on the device and tell J-Link some info about the flash. After this the NOR flash can be handled the same way as internal flash.
Q: I want to program or read other external flashes. Is this possible?
A: In general, yes. Although other, non-memory mapped flashes, like NAND flash, SPI NOR flash, EEPROM, etc., cannot be handled directly via the flash download capability of J-Link, it is possible to control the flash memory by writing and reading its memory controller registers on the target. With J-Link it is possible to read and write memory mapped registers, too. There are NAND dumping utilities available from SEGGER for J-Link SDK customers upon request. One NAND dumping utility as executable is provided free of charge for SDK customers.
Q: I purchased J-Link SDK Vx.xx. Can my application be used with a newer version of the DLL?
A: Yes. The J-Link DLL is downward compatible and allows usage of applications with newer DLLs. When the JLink.lib import library is used and no JLinkARM.dll is in the application's directory the newest installed version if the J-Link DLL will be used automatically. When the JLinkARM.lib import library is used, the JLinkARM.dll in the application's directory has to be replaced in order to use a newer version. Updating the DLL may even be done after the J-Link DLL update period expired.
Q: I want to create an application with an IDE or programming language which is not listed above. Can I use the J-Link SDK?
A: In general, yes. The J-Link SDK can be used with every programming language or solution which allows importing functions from DLLs / shared libraries. In some cases a wrapper library might be needed to import the C functions. In case of doubt, please contact us at info@segger.com.
Q: We purchased one J-Link SDK license. Are we allowed to use our application at different production places?
A: Yes. The J-Link SDK license allows company-wide usage of the J-Link SDK package and the applications using it.
Q: Are we allowed to distribute or sell our application using J-Link to our customers and make it publicly available?
A: The following J-Link SDK software components designed and to be used with SEGGER J-Links or authorized OEM products only may be redistributed as part of an application to end users free of charge: JLinkARM.dll and/or Jlink.dll, libjlinkarm.* (e.g. libjlinkarm.so.7.52.4 or libjlinkarm.7.52.4.dylib) and J-Link USB drivers. Distributing any other components of the J-Link SDK or software which uses any other components of it requires prior written authorization. Please contact us at info@segger.com.