Segger J-Link: JTAG Usage
- Target JTAG Device (e.g. BeagleBoard®)
- Compatible cable to connect the target's JTAG pins to the J-Link
- J-Link uses a standard 20-Pin connector compatible to ARM's Multi-ICE.
- Software: J-Link Software and Documentation pack https://www.segger.com/downloads/jlink/
Step 1 - Connect J-Link to PC
Connect the Segger J-Link to the PC using the included cable and start the J-Link Commander. Upon successful detection of the J-Link, a message like the following is shown:
SEGGER J-Link Commander V7.86f (Compiled Mar 29 2023 16:41:57) DLL version V7.86f, compiled Mar 29 2023 16:39:17 Connecting to J-Link via USB...O.K. Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46 Hardware version: V8.00 J-Link uptime (since boot): N/A (Not supported by this model) S/N: 788529685 License(s): RDI,FlashDL,FlashBP,JFlash,GDB VTref=3.313V Type "connect" to establish a target connection, '?' for help J-Link>
Step 2 - Connect J-Link to target device
Connect the J-Link to the target device's JTAG pins using an appropriate cable.
In this example, such a cable to connect to the BeagleBoard was not available. Therefore, the pins have been connected manually in the following way:
|1 - TMS||7 - TMS|
|2 - nTRST||3 - nTRST|
|3 - TDI||5 - TDI|
|4 - GND||4 - GND|
|5 - VIO||1 - VTref|
|7 - TDO||13 - TDO|
|9 - RTCK||11 - RTCK|
|11 - TCK||9 - TCK|
The other pins were not connected.
See https://beagleboard.org/static/BBSRM_latest.pdf (Page 112) for more information about the BeagleBoard's JTAG connector.
Information about the J-Link's pins can be found here: https://www.segger.com/products/debug-probes/j-link/technology/interface-description
Step 3 - Connect using J-Link Commander
J-Link supports many different devices/CPUs already. The BeagleBoard however requires a custom configuration script which can be found here: https://github.com/nullsub/sidplayer/blob/master/jlinkserver/Samples/JLink/Scripts/ScriptBeagleBoard_OMAP3530.JLinkScript
This script requires a little modification before it can be used. Some variables are declared as type
__int64. This type was only available up to version 6.16 of the J-Link Software. For the usage in newer version it can be replaced with
U32. Although the name
__int64 might suggest that it stores 64-bit values, according to https://forum.segger.com/index.php/Thread/4189-SOLVED-JLinkScript-and-int64/?postID=15018#post15018 it was internally handled as 32-bit, so these changes should have no effect on the script.
The modified script has to be saved in the installation directory as
Power the target device and connect the J-Link to the PC (if not already connected) and start the J-Link Commander. An output similar to the one shown in Step 1 should be shown again. Type
connect and then specify the target device / core. For the BeagleBoard type
CORTEX-A8. For the other settings keep the default values. After connecting it is possible to run commands like
halt to halt the cpu,
go to resume, etc. A list of commands can be found by typing