Using J-Link Command Strings

From SEGGER - Support Wiki
Jump to: navigation, search

The behavior of the J-Link can be customized via command strings passed to the JLinkARM.dll which controls J-Link. In some IDEs and applications such as the J-Link Commander, command strings can be directly passed via a native command. If this is not supported, there are some alternative options which can be used to use J-Link Command Strings anyhow. For further information regarding this, please refer to Using J-Link Command Strings#Generic.

J-Link Commander

https://wiki.segger.com/J-Link_Commander#Using_J-Link_Command_Strings

Eclipse

https://wiki.segger.com/Eclipse#Using_J-Link_Command_Strings

Generic

If the used IDE / application does not provide the option to pass J-Link Command Strings to the J-Link DLL, we recommend to include them into a J-Link Script File using the J-Link Script File API function JLINK_ExecCommand("<JLinkCommandString>"). For further information how to use a J-Link Script File in your environment, please refer to: https://wiki.segger.com/Using_J-Link_Script_Files

Example Please find below the content of an example J-Link Scipt File which passes the J-Link Command String EnableEraseAllFlashBanks via the JLINK_ExecCommand(...) J-Link Script File command to the J-Link DLL.

/*********************************************************************
*                                                                     
*       ConfigTargetSettings   
*
*  Function description
*    Called before InitTarget(). Mainly used to set some global DLL variables to customize the
*    normal  connect  procedure.  For  ARM  CoreSight  devices  this  may  be  specifying  the  base
*    address of some CoreSight components (ETM, …) that cannot be auto-detected by J-Link
*    due to erroneous ROM tables etc. May also be used to specify the device name in case
*    debugger does not pass it to the DLL.                    
*
*  Notes
*    (1) May not, under absolutely NO circumstances, call any API functions that perform target communication.
*    (2) Should only set some global DLL variables
*
*  Return value
*    >= 0  O.K.
*     < 0  Error
*      -1  Unspecified error
*/
int ConfigTargetSettings(void) {
  //
  // Enable erase for all flash banks (e.g. QSPI)
  //
  JLINK_SYS_Report("--EnableEraseAllFlashBanks--");
  JLINK_ExecCommand("EnableEraseAllFlashBanks");
  return 0;
}