J-Link Commander (JLink.exe) is a free command line based utility that can be used for verifying proper functionality of J-Link as well as for simple analysis of the target system with J-Link. It supports some simple commands, such as memory dump, halt, step, go etc. to verify the target connection. The J-Link Commander is part of the J-Link software and documentation package, which is available for download on the SEGGER webpage.
Perform flash download
J-Link Commander allows to download data files of different types into the flash memory of the target systems.
- Connect J-Link to the PC
- Connect target system to J-Link
- Start J-Link Commander
- Enter the requested settings (e.g. target device, interface settings, etc...)
- Type the following commands:
- loadfile <PathToFile> [<DestAddr>]
- J-Link Commander executes the flash download and prints out the time statistics on success.
Basically, some target configuration settings needs to be specified in J-Link Commander before a target connection can be established. However, the J-Link Commander comes with multiple command line options as well as a so called J-Link Commander Command Script mode, which allows using J-Link Commander in batch processing mode, so that it can be used fully automatic.
The table below describes the different command line arguments, which can be used to run the commander, without the need to input any configuration / commands:
|Command line option||Explanation|
|-device <DeviceName>||Selects the target device.|
|-if <TargetInterface>||Configures the target interface.|
|-speed <InterfaceSpeed>||Configures the target interface speed.|
|-jtagconf <IRPre,DRPre>|| Configures the JTAG scan configuration of the target device.|
IRPre==-1 and DRPre==-1 can be passed to use auto-detection (First known device will be used).
|-autoconnect <Value>||Value==1: Forces the J-Link Commander to connect to the target, automatically.|
|-CommanderScript <ScriptPath>||Selects a J-Link Commander Command file which contains the commands for the batch mode.|
|-SelectEmuBySN <SerialNo>||Selects a specific J-Link (via its serial number) to connect to. Used in case multiple J-Links are connected to the same PC via USB.|
JLink.exe -device CC2538SF53 -if JTAG -speed 4000 -jtagconf -1,-1 -autoconnect 1 -CommanderScript C:\Work\JLinkCommandFile.jlink
JLink.exe return value
The return value of the J-Link Commander application (JLink.exe) can be read out int the environment variable ERRORLEVEL.
1. Returns an Error (ERRORLEVEL == 1)
start /wait "J-Link Commander" "JLink.exe" -if InvalidInterfaceParameter ECHO error level is %ERRORLEVEL% pause
2. Returns no Error (ERRORLEVEL == 0)
start /wait "J-Link Commander" "JLink.exe" ECHO error level is %ERRORLEVEL% pause
For information how to access the environment variable ERRORLEVEL within a java application please refer to: http://stackoverflow.com/questions/8922485/how-to-execute-echo-errorlevel-in-java
For further information regarding this, please refer to: http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx
Connecting to a specific J-Link
It is possible to have multiple J-Links connected to the PC at the same time (for more information, see here. To connect to a specific J-Link in an automated way (no user interaction required), J-Link Commander needs to be told the S/N of the J-Link to connect to. This can be done via two different methods:
- Specify the S/N directly via command line. See -SelectEmuBySN above for more information.
- Specify "SelectEmuBySN <SN>" (without quotes) as first command in the J-Link command file that is passed to J-Link Commander via command line
Setup External CFI NOR Flash
J-Link Commander supports downloading bin files into external CFI flash memory. In the following, it is explained which steps are necessary to prepare J-Link Commander for download into external CFI flash memory based on a sample sequence for a ST STM32F103ZE device:
r speed 1000 exec setcfiflash 0x64000000 - 0x64FFFFFF exec setworkram 0x20000000 - 0x2000FFFF w4 0x40021014, 0x00000114 // RCC_AHBENR, FSMC clock enable w4 0x40021018, 0x000001FD // GPIOD~G clock enable w4 0x40011400, 0xB4BB44BB // GPIOD low config, NOE, NWE => Output, NWAIT => Input w4 0x40011404, 0xBBBBBBBB // GPIOD high config, A16-A18 w4 0x40011800, 0xBBBBBBBB // GPIOE low config, A19-A23 w4 0x40011804, 0xBBBBBBBB // GPIOE high config, D5-D12 w4 0x40011C00, 0x44BBBBBB // GPIOF low config, A0-A5 w4 0x40011C04, 0xBBBB4444 // GPIOF high config, A6-A9 w4 0x40012000, 0x44BBBBBB // GPIOG low config, A10-A15 w4 0x40012004, 0x444B4BB4 // GPIOG high config, NE2 => output w4 0xA0000008, 0x00001059 // CS control reg 2, 16-bit, write enable, Type: NOR flash w4 0xA000000C, 0x10000505 // CS2 timing reg (read access) w4 0xA000010C, 0x10000505 // CS2 timing reg (write access) speed 4000 mem 0x64000000,100 loadfile C:\STMB672_STM32F103ZE_TestBlinky.bin,0x64000000 mem 0x64000000,100