Other Parts Discussed in Thread: CCSTUDIO,
Tool/software: TI C/C++ Compiler
Hi,
I am facing in gel scripting as well as java scripting.
InvokeCSS.js
// Import the DSS packages into our namespace to save on typing
importPackage(Packages.com.ti.debug.engine.scripting);
importPackage(Packages.com.ti.ccstudio.scripting.environment);
importPackage(Packages.java.lang);
// Modify these variables to match your environment. Use forward slashes
var ccs6InstallDir = "C:/ti/ccsv6";
var RTRTWorksDir = "/CCS_temp";
var TargetCCXMLfile = RTRTWorksDir + "/TMS570LS3137.ccxml";
var programToLoad = RTRTWorksDir + "/Test.out";
var logFile = RTRTWorksDir + "/log.xml";
// Create our scripting environment object - which is the main entry point
// into any script and the factory for creating other Scriptable Servers and Sessions
var script = ScriptingEnvironment.instance();
// Create a log file in the current directory to log script execution
script.traceBegin(logFile, ccs6InstallDir + "/ccs_base/scripting/examples/DebugServerExamples/DefaultStylesheet.xsl");
// Set trace levels for console and logs
script.traceSetConsoleLevel(TraceLevel.INFO);
script.traceSetFileLevel(TraceLevel.ALL);
script.traceWrite("Begin scripting session");
// Get the Debug Server and start a Debug Session
var debugServer = script.getServer("DebugServer.1");
//debugServer.setConfig("D:/RTRT/TestRealTime/targets/CCS61_TMS570LS3137/cmd/TMS570LS3137.ccxml");
debugServer.setConfig(TargetCCXMLfile);
//var debugSession = debugServer.openSession(".*");
//var debugSession = debugServer.openSession("Texas Instruments XDS100v2 USB Debug Probe/CortexR4");
var debugSession = debugServer.openSession("Blackhawk USB560-M Emulator, 20-pin JTAG Cable/CortexR4");
script.traceWrite("Connecting the Target");
// Connect to the CPU
debugSession.target.connect();
script.traceWrite("Target Connected");
//debugSession.expression.evaluate('GEL_LoadGel( "CCS_temp/tms570ls3137.gel")');
debugSession.expression.evaluate('GEL_LoadGel( "C:/ti/ccsv6/ccs_base/emulation/gel/tms570ls3137.gel")');
// Load a program
script.traceWrite("Loading the Program");
debugSession.memory.loadProgram(programToLoad);
script.traceWrite("Executing the Program From Gel");
debugSession.expression.evaluate("LOAD_BP_REPORT_FILE()");
var privClose = debugSession.symbol.getAddress("priv_close");
var ccs6End = false;
while(!ccs6End)
{
if (debugSession.memory.readRegister("PC") != privClose)
{
Thread.sleep(2000);
}
else
{
ccs6End = true;
}
}
//Thread.sleep(15000);
debugSession.breakpoint.add("exit.c",85);
script.traceWrite("Exit Break point set");
// Run the target
//debugSession.target.run();
script.traceWrite("Target is RUNNING");
// All done
debugServer.stop();
debugServer.stop();
script.traceWrite("End scripting session");
// Stop logging and exit.
script.traceEnd();
Gel File Modified as per our requirement (Font made Bold):
TMS570LS3137.gel
/* */
/* (c) Texas Instruments 2006-2011, All rights reserved. */
/* */
/* */
/* File: TMS570LS3137.gel */
/* Versions: 1.0 */
/* */
/* Note: This GEL file is provided as an example and might be used for */
/* software development for the TMS570LS3137 microcontroller. Before */
/* usage it is recommended to check if the file provides the */
/* functionality expected. */
/* */
/* */
/*----------------------------------------------------------------------------*/
/* Definitions - Memory Map Specifiers */
#define FLASH 0
#define RAM 1
#define nEMIF 0
#define EMIF 1
/*----------------------------------------------------------------------------*/
/* Definitions - Text Format Specifiers */
#define BLACK 0
#define BLUE 1
#define RED 2
/*----------------------------------------------------------------------------*/
/* Definitions - Memory Switch */
#define STARTED 0
#define COMPL 1
/*----------------------------------------------------------------------------*/
/* Global Variables - Default Memory Map */
unsigned int MemoryMap = FLASH;
/*----------------------------------------------------------------------------*/
/* Global Variables - Memory Switch */
unsigned int MemSwitchState = COMPL;
/*----------------------------------------------------------------------------*/
/* Function - StartUp() */
/* */
StartUp(){
} /* StartUp() */
/*----------------------------------------------------------------------------*/
/* Function - OnResetDetected() */
/* */
OnResetDetected(){
if(MemSwitchState == COMPL){
memmap(FLASH, EMIF);
MemoryMap = FLASH;
GEL_TextOut("\tMemory Map Setup for Flash @ Address 0x0 due to System Reset\n",,,,,);
}
if(MemSwitchState == STARTED)
MemSwitchState == COMPL;
}
/*----------------------------------------------------------------------------*/
/* Function - OnTargetConnect() */
/* */
OnTargetConnect(){
if(MemoryMap == FLASH){
memmap(FLASH, EMIF);
GEL_TextOut("\tMemory Map Setup for Flash @ Address 0x0",,,,,);
}
if(MemoryMap == RAM){
memmap(RAM, EMIF);
GEL_TextOut("\tMemory Map Setup for RAM @ Address 0x0.",,,,,);
GEL_TextOut("\tFor Debugging Only!",,,,,);
}
} /* OnTargetConnect() */
/********************************************************************/
menuitem "LOAD TestRT Program";
int RTRT_Mode = 0;
hotmenu LOAD_BP_REPORT_FILE(int nErrorCode, int bSymbolsOnly)
{
int BREAKPTS_SET = 0;
int counter = 0;
//GEL_Reset();
//GEL_Restart();
RTRT_Mode = 0;
GEL_TextOut("Clear breakpoint priv_writeln \n");
GEL_HWBreakPtDel(priv_writeln);
GEL_TextOut("Clear breakpoint priv_close \n");
GEL_HWBreakPtDel(priv_close);
GEL_HWBreakPtReset();
//GEL_System("del c:\\temp\\RTRT.dat");
//GEL_System("del c:\\temp\\tempFile.txt");
if(!BREAKPTS_SET)
{
GEL_TextOut("Setting breakpoints \n");
GEL_HWBreakPtAdd(priv_writeln);
GEL_TextOut("Setting breakpoint for priv_writeln \n");
GEL_HWBreakPtAdd(priv_close);
GEL_TextOut("Setting breakpoint for priv_close\n");
GEL_TextOut("b - %x\n",,,,,sizeof(atl_buffer));
BREAKPTS_SET = 1;
GEL_Run();
RTRT_Mode = 1;
GEL_TextOut("RTRT mode is set to 1\n");
}
}
OnHalt()
{
GEL_TextOut("OnHalt called\n");
GEL_TextOut("PC - %x\n",,,,,PC);
//GEL_Run();
if(RTRT_Mode == 1)
{
if(PC == priv_writeln)
{
int a;
a= sizeof(atl_buffer);
GEL_TextOut("a - %x\n",,,,,a);
GEL_MemorySave(atl_buffer,0,a,"log.dat");
GEL_System("type log.dat >> c:/temp/RTRT.dat");
GEL_Run();
}
else if(PC == priv_close)
{
GEL_TextOut("\nTestRT:Program Executed Normally\n");
GEL_System("echo Execution_Complete > c:/temp/tempFile.txt");
GEL_Halt();
RTRT_Mode = 0;
}
else
{
GEL_Run();
}
}
}
hotmenu CLEAR_RAM_BUFFER()
{
/* Clear the RAM Buffer for "atl_buffer" */
GEL_MemoryFill(atl_buffer, 0, 0x0C00, 0x00);
GEL_TextOut("RAM BUFFER CLEARED\n");
}
hotmenu LOAD_REPORT_FILE()
{
/* Open the window to see the RIO(Result) file */
//GEL_OpenWindow("TestRT RIO Data Window", 0);
/* Contents of RIO(Result) file */
/* Size of the data is given 6K i.e. 6144 bytes( Size of the "atl_buffer") */
// GEL_MemorySave(atl_buffer,1,sizeof(atl_buffer),"c:/temp/Test.spt",1,1);
GEL_TargetTextOut(atl_buffer, 0,6144,0, "TestRT RIO Data Window", 1);
}
hotmenu SAVE_REPORT_FILE(int nErrorCode, int bSymbolsOnly)
{
int a;
a= sizeof(atl_buffer);
GEL_MemorySave(atl_buffer,0,a,"log.dat");
GEL_System("type log.dat >> D:/MSS_TDR/temp/RTRT.dat");
}
/***********************************************************/
/*----------------------------------------------------------------------------*/
/* Function - memmap(memSel, extMem) */
/* */
memmap(memSel, extMem){
GEL_MapOff();
GEL_MapReset();
/* Flash / RAM Definition */
if(memSel == FLASH){
/* Flash Definition */
GEL_MapAdd(0x00000000, 0, 0x00300000, 1, 0); /* Internal Flash () */
GEL_MapAddStr(0xF0400000, 0, 0x00060000, "R|AS2", 0); /* Internal Flash ECC */
GEL_MapAdd(0x08000000, 0, 0x00040000, 1, 1); /* Internal RAM */
GEL_MapAdd(0x08400000, 0, 0x00040000, 1, 1); /* Internal RAM ECC */
GEL_MapAdd(0x20000000, 0, 0x00300000, 1, 0); /* Mirrored Flash */
GEL_MapAdd(0xFE000000, 0, 0x01000000, 1, 1); /* CRC/PSA */
}
if(memSel == RAM){
/* RAM Definition */
GEL_MapAdd(0x00000000, 0, 0x00040000, 1, 1); /* Internal RAM */
GEL_MapAdd(0x00400000, 0, 0x00040000, 1, 1); /* Internal RAM ECC */
GEL_MapAdd(0x08000000, 0, 0x00300000, 1, 0); /* Internal Flash () */
GEL_MapAddStr(0xF0400000, 0, 0x00060000, "R|AS2", 0); /* Internal Flash ECC */
GEL_MapAdd(0x20000000, 0, 0x00300000, 1, 0); /* Mirrored Flash */
GEL_MapAdd(0xFE000000, 0, 0x01000000, 1, 1); /* CRC/PSA */
}
if(extMem == EMIF){
GEL_MapAdd(0x60000000, 0, 0x10000000, 1, 1); /* External Async Memory */
GEL_MapAdd(0x80000000, 0, 0x08000000, 1, 1); /* External Sync SDRAM Memory */
}
/* Other Flash Related Memories*/
GEL_MapAdd(0xF0200000, 0, 0x00010000, 1, 0); /* EEPROM */
GEL_MapAddStr(0xF0100000, 0, 0x00002000, "R|AS2", 0); /* EEPROM ECC */
GEL_MapAdd(0xF0000000, 0, 0x00004000, 1, 0); /* Customer OTP */
GEL_MapAddStr(0xF0040000, 0, 0x00000800, "R|AS2", 0); /* Customer OTP ECC */
GEL_MapAdd(0xF000E000, 0, 0x00001000, 1, 0); /* Customer OTP, EEPROM */
GEL_MapAddStr(0xF0041C00, 0, 0x00000400, "R|AS2", 0); /* Customer OTP, EEPROM ECC */
/* Peripheral Register Definition */
GEL_MapAdd(0xFFF7FC00, 0, 0x00000200, 1, 1); /* SPI5 - PS00 */
GEL_MapAdd(0xFFF7FA00, 0, 0x00000200, 1, 1); /* SPI4 - PS01 */
GEL_MapAdd(0xFFF7F800, 0, 0x00000200, 1, 1); /* SPI3 - PS01 */
GEL_MapAdd(0xFFF7F600, 0, 0x00000200, 1, 1); /* SPI2 - PS02 */
GEL_MapAdd(0xFFF7F400, 0, 0x00000200, 1, 1); /* MIBSPI1 - PS02 */
GEL_MapAdd(0xFFF7E400, 0, 0x00000100, 1, 1); /* LIN - PS06 */
GEL_MapAdd(0xFFF7E500, 0, 0x00000100, 1, 1); /* SCI - PS06 */
GEL_MapAdd(0xFFF7E000, 0, 0x00000200, 1, 1); /* DCAN3 - PS07 */
GEL_MapAdd(0xFFF7DE00, 0, 0x00000200, 1, 1); /* DCAN2 - PS08 */
GEL_MapAdd(0xFFF7DC00, 0, 0x00000200, 1, 1); /* DCAN1 - PS08 */
GEL_MapAdd(0xFFF7C800, 0, 0x00000800, 1, 1); /* Flexray - PS12+PS13 */
GEL_MapAdd(0xFFF7A000, 0, 0x00000200, 1, 1); /* Flexray TU - PS23 */
GEL_MapAdd(0xFFF7D400, 0, 0x00000100, 1, 1); /* I2C - PS10 */
GEL_MapAdd(0xFFF7C200, 0, 0x00000200, 1, 1); /* MIBADC2 - PS15 */
GEL_MapAdd(0xFFF7C000, 0, 0x00000200, 1, 1); /* MIBADC1 - PS15 */
GEL_MapAdd(0xFFF7BC00, 0, 0x00000100, 1, 1); /* GIO - PS16 */
GEL_MapAdd(0xFFF7B800, 0, 0x00000100, 1, 1); /* NHET1 - PS17 */
GEL_MapAdd(0xFFF7B900, 0, 0x00000100, 1, 1); /* NHET2 - PS17 */
GEL_MapAdd(0xFFF7A400, 0, 0x00000100, 1, 1); /* HET TU - PS22 */
GEL_MapAdd(0xFFF7A500, 0, 0x00000100, 1, 1); /* HET TU2 - PS22 */
/* Peripheral Memory */
GEL_MapAdd(0xFC520000, 0, 0x00002000, 1, 1); /* CPPI, Ethernet RAM - PS05 */
GEL_MapAdd(0xFF0A0000, 0, 0x00020000, 1, 1); /* MibSPI5 RAM - PS05 */
GEL_MapAdd(0xFF0C0000, 0, 0x00020000, 1, 1); /* MibSPI3 RAM - PS06 */
GEL_MapAdd(0xFF0E0000, 0, 0x00020000, 1, 1); /* MibSPI1 RAM - PS07 */
GEL_MapAdd(0xFF1A0000, 0, 0x00020000, 1, 1); /* CAN3 RAM - PS13 */
GEL_MapAdd(0xFF1C0000, 0, 0x00020000, 1, 1); /* CAN2 RAM - PS14 */
GEL_MapAdd(0xFF1E0000, 0, 0x00020000, 1, 1); /* CAN1 RAM - PS15 */
GEL_MapAdd(0xFF3A0000, 0, 0x00020000, 1, 1); /* MIBADC2 RAM - PS29 */
GEL_MapAdd(0xFF3E0000, 0, 0x00020000, 1, 1); /* MIBADC1 RAM - PS31 */
GEL_MapAdd(0xFF440000, 0, 0x00020000, 1, 1); /* NHET2 RAM - PS34 */
GEL_MapAdd(0xFF460000, 0, 0x00020000, 1, 1); /* NHET1 RAM - PS35 */
GEL_MapAdd(0xFF4C0000, 0, 0x00020000, 1, 1); /* HET2 TU RAM - PS38 */
GEL_MapAdd(0xFF4E0000, 0, 0x00020000, 1, 1); /* HET1 TU RAM - PS39 */
GEL_MapAdd(0xFF500000, 0, 0x00020000, 1, 1); /* Flexray TU RAM - PS40 */
/* System Peripheral Register */
GEL_MapAdd(0xFE000000, 0, 0x01000000, 1, 1); /* CRC */
GEL_MapAdd(0xFFA00000, 0, 0x00001000, 1, 1); /* CoreSight Debug ROM */
GEL_MapAdd(0xFFA01000, 0, 0x00001000, 1, 1); /* R4 Debug Register */
GEL_MapAdd(0xFFA02000, 0, 0x00001000, 1, 1); /* ETM-R4 Register */
GEL_MapAdd(0xFFA03000, 0, 0x00001000, 1, 1); /* CoreSight TPIU Register */
GEL_MapAdd(0xFFA04000, 0, 0x00001000, 1, 1); /* POM Register */
GEL_MapAdd(0xFFF80000, 0, 0x00001000, 1, 1); /* DMA RAM */
GEL_MapAdd(0xFFF82000, 0, 0x00001000, 1, 1); /* VIM RAM */
GEL_MapAdd(0xFFF83000, 0, 0x00001000, 1, 1); /* RTP RAM */
GEL_MapAdd(0xFFF87000, 0, 0x00001000, 1, 1); /* Flash Wrapper Register */
GEL_MapAdd(0xFFF8C000, 0, 0x00001000, 1, 1); /* eFuse Farm Controller */
GEL_MapAdd(0xFFFF0000, 0, 0x00000200, 1, 1); /* Power Management Register */
GEL_MapAdd(0xFFFFE000, 0, 0x00000100, 1, 1); /* PCR Register */
GEL_MapAdd(0xFFFFE100, 0, 0x00000100, 1, 1); /* System 2 Register */
GEL_MapAdd(0xFFFFE400, 0, 0x00000200, 1, 1); /* PBIST */
GEL_MapAdd(0xFFFFE600, 0, 0x00000100, 1, 1); /* STC */
GEL_MapAdd(0xFFFFEA00, 0, 0x00000200, 1, 1); /* IOMM */
GEL_MapAdd(0xFFFFEC00, 0, 0x00000100, 1, 1); /* DCC1 */
GEL_MapAdd(0xFFFFF000, 0, 0x00000400, 1, 1); /* DMA */
GEL_MapAdd(0xFFFFF400, 0, 0x00000100, 1, 1); /* DCC2 */
GEL_MapAdd(0xFFFFF500, 0, 0x00000100, 1, 1); /* ESM */
GEL_MapAdd(0xFFFFF600, 0, 0x00000100, 1, 1); /* CCMR4 */
GEL_MapAdd(0xFFFFF700, 0, 0x00000100, 1, 1); /* DMM */
GEL_MapAdd(0xFFFFF800, 0, 0x00000100, 1, 1); /* RAM ECC even */
GEL_MapAdd(0xFFFFF900, 0, 0x00000100, 1, 1); /* RAM ECC odd */
GEL_MapAdd(0xFFFFFA00, 0, 0x00000100, 1, 1); /* RTP */
GEL_MapAdd(0xFFFFFC00, 0, 0x00000100, 1, 1); /* RTI Register */
GEL_MapAdd(0xFFFFFD00, 0, 0x00000100, 1, 1); /* VIM Parity */
GEL_MapAdd(0xFFFFFE00, 0, 0x00000100, 1, 1); /* VIM Register */
GEL_MapAdd(0xFFFFFF00, 0, 0x00000100, 1, 1); /* System Register */
/* EMIF/Ethernet Registers */
GEL_MapAdd(0xFCFFE800, 0, 0x00000100, 1, 1); /* EMIF */
GEL_MapAdd(0xFCF78000, 0, 0x00000400, 1, 1); /* CPGMAC Slave */
GEL_MapAdd(0xFCF78800, 0, 0x00000100, 1, 1); /* CPGMACSS Wrapper */
GEL_MapAdd(0xFCF78900, 0, 0x00000100, 1, 1); /* Ethernet MDIO */
GEL_MapOn();
} /* Function - memmap(memSel, extMem) */
/*----------------------------------------------------------------------------*/
/* Function - swap_mem(memSel) */
/* */
swap_mem(memSel){
GEL_TextOut("NOTES:\n\tThe Flash/RAM memory adresses of the device will be switched.");
GEL_TextOut("\tAt the end of this routine the device will be reset.");
GEL_TextOut("\tThis might lead to an popup message stating an error!");
GEL_TextOut("\tJust re-connect after the message appeared.");
MemSwitchState = STARTED;
if(memSel == RAM){
memmap(RAM, EMIF);
MemoryMap = RAM;
*(int *) 0xffffffc4 = 0x05050505;
*(int *) 0xffffffcc = 0x00000001;
*(int *) 0xffffffcc = 0x00000000;
}
if(memSel == FLASH){
memmap(FLASH, EMIF);
MemoryMap = FLASH;
*(int *) 0xffffffc4 = 0x0A0A0A0A;
*(int *) 0xffffffcc = 0x00000001;
*(int *) 0xffffffcc = 0x00000000;
}
MemSwitchState = COMPL;
GEL_TextOut("\tMemory swap is done.");
GEL_TextOut("\tIn case a popup message appaered, re-connect to the device.");
} /* swap_mem(memSel) */
/*----------------------------------------------------------------------------*/
/* MenuItem - "TMS570LS3137 Memory Map Setup" */
/* */
menuitem "TMS570LS3137 Memory Map Setup";
hotmenu CCS_MemMap_FLASH_at_0x0(){
memmap(FLASH, EMIF);
GEL_TextOut("\tMemory Map Setup for Flash @ Address 0x0",,,,,);
}
hotmenu CCS_MemMap_RAM_at_0x0(){
memmap(RAM, EMIF);
GEL_TextOut("\tMemory Map Setup for RAM @ Address 0x0.",,,,,);
GEL_TextOut("\tFor Debugging Only!",,,,,);
}
/*----------------------------------------------------------------------------*/
/* MenuItem - "TMS570LS3137 Memory Switch" */
/* */
menuitem "TMS570LS3137 Memory Switch";
hotmenu Target_Flash_to_0x0(){
swap_mem(FLASH);
}
hotmenu Target_RAM_to_0x0(){
swap_mem(RAM);
}
My error log File, "CortexR4: GEL Output: PC - 0x00005A20" not able to read by gel file:
CortexR4: GEL Output: Clear breakpoint priv_writeln
CortexR4: GEL Output: PC - 0x00005A20
CortexR4: GEL Output: Clear breakpoint priv_close
CortexR4: GEL Output: Setting breakpoints
CortexR4: GEL Output: Setting breakpoint for priv_writeln
CortexR4: GEL Output: Setting breakpoint for priv_close
CortexR4: GEL Output: b - 0x00000C00
CortexR4: GEL Output: RTRT mode is set to 1
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
CortexR4: GEL Output: OnHalt called
CortexR4: GEL Output: PC - 0x000000C0
CortexR4: GEL Output: a - 0x00000C00
CortexR4: GEL_System: type log.dat >> c:/temp/RTRT.dat
CortexR4: GEL_System:
SEVERE: Could not read register PC: execution state prevented access
SEVERE: Error evaluating "PC": Could not read register PC: execution state prevented access
org.mozilla.javascript.WrappedException: Wrapped com.ti.ccstudio.scripting.environment.ScriptingException: Error evaluating "PC": Could not read register PC: execution state prevented access (D:\RTRT\TestRealTime\targets\CCS61_TMS570LS3137\cmd\InvokeCCS.js#61)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1693)