This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/TMS320TCI6618: Development of DSP profiling script with dss and dvt

Part Number: TMS320TCI6618

Tool/software: Code Composer Studio

Hello all,

I'm currently working on the profiling of TCI6618 DSP. I developed my script using CCS v5 and the examples provided to get the timing of function of our DSP with Pro Trace but I get many issues with APIs.

I have also some errors when the probe is trying to connect to the target :

Connecting to CPU
SEVERE: C66xx_0: Trouble Halting Target CPU: (Error -1060 @ 0x0) Device is not responding to the request. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.232.0)

I already try to reset the device and the error remain

For the second issue :

I have many errors due to API and some missing import Package 

Code here : 

importPackage(Packages.com.ti.debug.engine.scripting)
importPackage(Packages.com.ti.ccstudio.scripting.environment)
importPackage(Packages.com.ti.dvt.engine.scripting)
importPackage(Packages.java.lang)
importPackage(Packages.java.io)
importPackage(Packages.java.util)
 
function PC_Trace() {
	runTime=10000

	// ---------- Start up ----------
	script = ScriptingEnvironment.instance()
	script.setScriptTimeout(100000)
		
	// Create a log file in the current directory to log script execution
	script.traceBegin("scriptLog.xml", "DefaultStylesheet.xsl")
	script.traceSetConsoleLevel(TraceLevel.INFO)
	script.traceSetFileLevel(TraceLevel.INFO)
	cwd = script.getCurrentDirectory();
		
	// ---------- Set up debugger ----------
	script.traceWrite("Setting up the debugger")
	debugServer = script.getServer("DebugServer.1")
	debugServer.setConfig("../../../../../Users/rhenry/Desktop/projet_profiling/config_files/LAN_LAB12_Black_Hawk_XDS520v2_TCI6618_config.ccxml")
	dspC6618_0 = debugServer.openSession("Blackhawk XDS560v2-LAN System Trace Emulator_0/C66xx_0")//Spectrum Digital XDSPRO USB Emulator_0/C66xx_0
	
	// ---------- Set up target----------
	dspC6618_0.options.setBoolean("AllowInterruptsWhenHalted", true)
	dspC6618_0.options.setBoolean("PoliteRealtimeMode", true)
	
	script.traceWrite("Connecting to CPU")
	dspC6618_0.target.connect()
	try{
		dspC6618_0.memory.loadProgram("../../../../../../Users/rhenry/Desktop/projet_profiling/target_programs/iphy_tnq_cpu1.out")
	}catch(err){
		System.out.println(err)
		script.traceWrite("Error during loading *.out on target")
	}
	// ---------- Create a DVT server ----------
	dvtServer = script.getServer("DVTServer.1")
	
	// ---------- Set up the analysis ----------
	script.traceWrite("Setting up PC Trace")
	analysisSession = dvtServer.openAnalysisSession()
	
	try{
		// ---------- Set up the session -----------
		analysisConfig = analysisSession.loadAnalysis("PC Trace")
		analysisConfig.setProperty("core", "C66xx_0")
		analysisConfig.setProperty("transportType", "Pro Trace")
		analysisConfig.setProperty("bufferSize", "64 kB")
		analysisConfig.setProperty("bufferType", "Stop-on-full")
		analysisConfig.setProperty("synchronizeWithTarget", true)
		analysisConfig.setProperty("merge", true)
		analysisConfig.run();
	}catch(err){
		System.out.println(err)
		script.traceWrite("Error during setting up profiling")
	}
	
	try{
		//---------- Run target for 10 secs ----------
		script.traceWrite("Running target for "+ runTime +" mSeconds" )
		dspC6618_0.target.runAsynch()
		Thread.sleep(runTime)
		dspC6618_0.target.halt()

		// ---------- Wait until processing is done  ----------
		script.traceWrite("Processing")
		analyzer = analysisConfig.findAnalyzerByName("Exclusive Function Profiler")
		analyzer.waitForEndOfData()
		
		// ---------- Post analysis - export the data to a CSV file ----------
		cwd = script.getCurrentDirectory()
		script.traceWrite("Exporting results to " + cwd)
		analyzer.exportDataToCSV("Exclusive Function Profiler", cwd+"/"+"FunctionProfile.csv", null)
	}
	catch(err){
		System.out.println(err)
		script.traceWrite("Error during profiling")
	}
	// ---------- shut down ----------
	script.traceWrite("Shutting down")
	analysisSession.endAnalysis(analysisConfig)
	debugServer.stop()
	dvtServer.stop()
	script.traceEnd()
}

// -------------------- Main --------------------
System.out.println("Start scripts.")
PC_Trace()
System.out.println("End scripts.");

Complet traces from trace_dss.;bat :

5545.log Dsp Profiling script.txt



and the trace generate by the script :

3482.scriptLog.xml
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="DefaultStylesheet.xsl"?>
<log>
<record>
<date>2019-01-14T17:53:32</date>
<millis>1547484812780</millis>
<sequence>9</sequence>
<logger>com.ti</logger>
<level>INFO</level>
<class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
<method>traceWrite</method>
<thread>1</thread>
<message>Setting up the debugger</message>
</record>
<record>
<date>2019-01-14T17:53:48</date>
<millis>1547484828384</millis>
<sequence>122</sequence>
<logger>com.ti</logger>
<level>INFO</level>
<class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
<method>traceWrite</method>
<thread>1</thread>
<message>Connecting to CPU</message>
</record>
<record>
<date>2019-01-14T17:53:54</date>
<millis>1547484834369</millis>
<sequence>154</sequence>
<logger>com.ti.debug.engine.scripting.DebugSession</logger>
<level>SEVERE</level>
<class>com.ti.debug.engine.scripting.DebugSession$DebuggerErrorListener</class>
<method>onEvent</method>
<thread>10</thread>
<message>C66xx_0: Trouble Halting Target CPU: (Error -1060 @ 0x0) Device is not responding to the request. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.232.0)
</message>
</record>
<record>
<date>2019-01-14T17:53:58</date>
<millis>1547484838821</millis>
<sequence>155</sequence>
<logger>com.ti.debug.engine.scripting.DebugSession</logger>
<level>SEVERE</level>
<class>com.ti.debug.engine.scripting.DebugSession$DebuggerErrorListener</class>
<method>onEvent</method>
<thread>10</thread>
<message>C66xx_0: Trouble Halting Target CPU: (Error -1060 @ 0x0) Device is not responding to the request. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.232.0)
</message>
</record>
<record>
<date>2019-01-14T17:55:53</date>
<millis>1547484953514</millis>
<sequence>187</sequence>
<logger>com.ti.ccstudio.scripting.environment.ScriptingException</logger>
<level>SEVERE</level>
<class>com.ti.ccstudio.scripting.environment.ScriptingException</class>
<method>logException</method>
<thread>1</thread>
<message>Timed out after 100000ms</message>
<exception>
<message>com.ti.ccstudio.scripting.environment.ScriptingException: Timed out after 100000ms</message>
<frame>
<class>com.ti.debug.engine.scripting.AbstractListener</class>
<method>waitUntil</method>
<line>76</line>
</frame>
<frame>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX



  • Hi,

    The error 1060 is explained in detail in the reference below (just search for the error code)
    dev.ti.com/.../

    The major detail that may be getting in the way of a good connection is the device or board itself. I would try to connect to it manually and see if you get a good and reliable connection. Also, the timing may count: if the target has a very long GEL file, you may need to insert a small delay between the target.connect and the memory.loadProgram calls.

    One additional detail: you mentioned you are using a Pro Trace but your target connection filename indicates you are using a BlackHawk XDS560v2 STM connected via LAN. Which one is it? Does it work reliably with the BlackHawk?

    Regards,
    Rafael
  • Hi Rafael,

    I check with manual connection with code composer "test connection" and any issue appears.

    [Start: Blackhawk XDS560v2-LAN System Trace Emulator_0]
    
    Execute the command:
    
    %ccs_base%/common/uscif/dbgjtag.exe -f %boarddatafile% -rv -o -F inform,logfile=yes -S pathlength -S integrity
    
    [Result]
    
    
    -----[Print the board config pathname(s)]------------------------------------
    
    C:\Users\rhenry\AppData\Local\TEXASI~1\CCS\
        ti\1\0\BrdDat\testBoard.dat
    
    -----[Print the reset-command software log-file]-----------------------------
    
    This utility has selected a 560/2xx-class product.
    This utility will load the program 'bh560v2e.out'.
    Loaded FPGA Image: C:\ti\ccsv8\ccs_base\common\uscif\dtc_top.jbc
    The library build date was 'May 30 2018'.
    The library build time was '22:02:11'.
    The library package version is '8.0.27.9'.
    The library component version is '35.35.0.0'.
    The controller does not use a programmable FPGA.
    The controller has a version number of '6' (0x00000006).
    The controller has an insertion length of '0' (0x00000000).
    The cable+pod has a version number of '8' (0x00000008).
    The cable+pod has a capability number of '7423' (0x00001cff).
    This utility will attempt to reset the controller.
    This utility has successfully reset the controller.
    
    -----[Print the reset-command hardware log-file]-----------------------------
    
    The scan-path will be reset by toggling the JTAG TRST signal.
    The controller is the Nano-TBC VHDL.
    The link is a 560-class second-generation-560 cable.
    The software is configured for Nano-TBC VHDL features.
    The controller will be software reset via its registers.
    The controller has a logic ONE on its EMU[0] input pin.
    The controller has a logic ONE on its EMU[1] input pin.
    The controller will use falling-edge timing on output pins.
    The controller cannot control the timing on input pins.
    The scan-path link-delay has been set to exactly '2' (0x0002).
    The utility logic has not previously detected a power-loss.
    The utility logic is not currently detecting a power-loss.
    Loaded FPGA Image: C:\ti\ccsv8\ccs_base\common\uscif\dtc_top.jbc
    
    -----[The log-file for the JTAG TCLK output generated from the PLL]----------
    
      Test  Size   Coord      MHz    Flag  Result       Description
      ~~~~  ~~~~  ~~~~~~~  ~~~~~~~~  ~~~~  ~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~
        1   none  - 01 00  500.0kHz   -    similar      isit internal clock
        2   none  - 01 09  570.3kHz   -    similar      isit internal clock
        3     64  - 01 00  500.0kHz   O    good value   measure path length
        4     16  - 01 00  500.0kHz   O    good value   auto step initial
        5     16  - 01 0D  601.6kHz   O    good value   auto step delta
        6     16  - 01 1C  718.8kHz   O    good value   auto step delta
        7     16  - 01 2E  859.4kHz   O    good value   auto step delta
        8     16  + 00 02  1.031MHz   O    good value   auto step delta
        9     16  + 00 0F  1.234MHz   O    good value   auto step delta
       10     16  + 00 1F  1.484MHz   O    good value   auto step delta
       11     16  + 00 32  1.781MHz   O    good value   auto step delta
       12     16  + 01 04  2.125MHz   O    good value   auto step delta
       13     16  + 01 11  2.531MHz   O    good value   auto step delta
       14     16  + 01 21  3.031MHz   O    good value   auto step delta
       15     16  + 01 34  3.625MHz   O    good value   auto step delta
       16     16  + 02 05  4.313MHz   O    good value   auto step delta
       17     16  + 02 13  5.188MHz   O    good value   auto step delta
       18     16  + 02 23  6.188MHz   O    good value   auto step delta
       19     16  + 02 37  7.438MHz   O    good value   auto step delta
       20     16  + 03 07  8.875MHz   O    good value   auto step delta
       21     16  + 03 15  10.63MHz   O    good value   auto step delta
       22     16  + 03 1E  11.75MHz  {O}   good value   auto step delta
       23     64  + 02 3E  7.875MHz   O    good value   auto power initial
       24     64  + 03 0E  9.750MHz   O    good value   auto power delta
       25     64  + 03 16  10.75MHz   O    good value   auto power delta
       26     64  + 03 1A  11.25MHz   O    good value   auto power delta
       27     64  + 03 1C  11.50MHz   O    good value   auto power delta
       28     64  + 03 1D  11.63MHz   O    good value   auto power delta
       29     64  + 03 1D  11.63MHz   O    good value   auto power delta
       30     64  + 03 13  10.38MHz  {O}   good value   auto margin initial
    
    The first internal/external clock test resuts are:
    The expect frequency was 500000Hz.
    The actual frequency was 499872Hz.
    The delta frequency was 128Hz.
    
    The second internal/external clock test resuts are:
    The expect frequency was 570312Hz.
    The actual frequency was 569976Hz.
    The delta frequency was 336Hz.
    
    In the scan-path tests:
    The test length was 2048 bits.
    The JTAG IR length was 6 bits.
    The JTAG DR length was 1 bits.
    
    The IR/DR scan-path tests used 30 frequencies.
    The IR/DR scan-path tests used 500.0kHz as the initial frequency.
    The IR/DR scan-path tests used 11.75MHz as the highest frequency.
    The IR/DR scan-path tests used 10.38MHz as the final frequency.
    
    -----[Measure the source and frequency of the final JTAG TCLKR input]--------
    
    The frequency of the JTAG TCLKR input is measured as 10.37MHz.
    
    The frequency of the JTAG TCLKR input and TCLKO output signals are similar.
    The target system likely uses the TCLKO output from the emulator PLL.
    
    -----[Perform the standard path-length test on the JTAG IR and DR]-----------
    
    This path-length test uses blocks of 64 32-bit words.
    
    The test for the JTAG IR instruction path-length succeeded.
    The JTAG IR instruction path-length is 6 bits.
    
    The test for the JTAG DR bypass path-length succeeded.
    The JTAG DR bypass path-length is 1 bits.
    
    -----[Perform the Integrity scan-test on the JTAG IR]------------------------
    
    This test will use blocks of 64 32-bit words.
    This test will be applied just once.
    
    Do a test using 0xFFFFFFFF.
    Scan tests: 1, skipped: 0, failed: 0
    Do a test using 0x00000000.
    Scan tests: 2, skipped: 0, failed: 0
    Do a test using 0xFE03E0E2.
    Scan tests: 3, skipped: 0, failed: 0
    Do a test using 0x01FC1F1D.
    Scan tests: 4, skipped: 0, failed: 0
    Do a test using 0x5533CCAA.
    Scan tests: 5, skipped: 0, failed: 0
    Do a test using 0xAACC3355.
    Scan tests: 6, skipped: 0, failed: 0
    All of the values were scanned correctly.
    
    The JTAG IR Integrity scan-test has succeeded.
    
    -----[Perform the Integrity scan-test on the JTAG DR]------------------------
    
    This test will use blocks of 64 32-bit words.
    This test will be applied just once.
    
    Do a test using 0xFFFFFFFF.
    Scan tests: 1, skipped: 0, failed: 0
    Do a test using 0x00000000.
    Scan tests: 2, skipped: 0, failed: 0
    Do a test using 0xFE03E0E2.
    Scan tests: 3, skipped: 0, failed: 0
    Do a test using 0x01FC1F1D.
    Scan tests: 4, skipped: 0, failed: 0
    Do a test using 0x5533CCAA.
    Scan tests: 5, skipped: 0, failed: 0
    Do a test using 0xAACC3355.
    Scan tests: 6, skipped: 0, failed: 0
    All of the values were scanned correctly.
    
    The JTAG DR Integrity scan-test has succeeded.
    
    [End: Blackhawk XDS560v2-LAN System Trace Emulator_0]

    But my main question is about the API's error. In fact, this is my main issue because to go further I would like to know if the API is still working.

    ...

    javax.script.ScriptException: ReferenceError: "importPackage" is not defined in <eval> at line number 1
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
    at javax.script.AbstractScriptEngine.eval(Unknown Source)
    at com.ti.dvt.analysis.suite.UseCaseActivity.include(UseCaseActivity.java:232)
    at com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.include(ControlFileActivity.java:222)
    at jdk.nashorn.internal.scripts.Script$4$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
    at javax.script.AbstractScriptEngine.eval(Unknown Source)
    at com.ti.dvt.analysis.tasks.Import.execute(Import.java:95)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:392)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:180)
    at org.apache.tools.ControlTaskRunner.initImpl(ControlTaskRunner.java:308)
    at org.apache.tools.ControlTaskRunner.init(ControlTaskRunner.java:345)
    at org.apache.tools.ControlTaskRunner.getProperty(ControlTaskRunner.java:387)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.ti.dvt.control.engine.core.ControlEngineRunner.getProperty(ControlEngineRunner.java:703)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.getProperty(ControlXMLActivity.java:132)
    at com.ti.dvt.control.engine.activities.Activity.setProperty(Activity.java:900)
    at com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.setProperty(ControlFileActivity.java:216)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.setProperty(ControlXMLActivity.java:149)
    at com.ti.dvt.control.engine.activities.Activity.init(Activity.java:99)
    at com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.init(ControlFileActivity.java:121)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.init(ControlXMLActivity.java:81)
    at com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.setFile(ControlFileActivity.java:102)
    at com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.<init>(ControlFileActivity.java:93)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.<init>(ControlXMLActivity.java:62)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivityProvider.addControlFileActivity(ControlXMLActivityProvider.java:201)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivityProvider.scanPath(ControlXMLActivityProvider.java:143)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivityProvider.scanPath(ControlXMLActivityProvider.java:151)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivityProvider.refreshActivities(ControlXMLActivityProvider.java:289)
    at com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivityProvider.getActivities(ControlXMLActivityProvider.java:78)
    at com.ti.dvt.control.engine.activities.ActivityManager$ActivityProviderAdd.run(ActivityManager.java:515)
    at com.ti.dvt.control.engine.types.IRun$Run.run(IRun.java:79)
    Caused by: <eval>:1 ReferenceError: "importPackage" is not defined
    at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
    at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
    at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
    at jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:1442)
    at jdk.nashorn.internal.scripts.Script$5$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
    ... 53 more

    ...

  • Hi,

    Thanks for sending the test connection results; are you able to fully connect to the core via the GUI? If so and a GEL initialization script is set, there is a possibility you will need to wait until the target is fully connected.

    Differently than I mentioned before (adding delays), you can add the option true to the target.connect

    dspC6618_0.target.connect(true)

    This will force the script to finish connecting before moving to the next line, thus giving time until the GEL scripts finish run.

    The script error you highlighted above is probably coming from the call dvtServer.openAnalysisSession, which will only be valid if a target is properly connected and code is properly loaded.

    In this case, given the target connect is failing in your script, this will trigger the other problems further in the sequence of events.

    Hope this helps,
    Rafael
  • Romain HENRY said:
    But my main question is about the API's error. In fact, this is my main issue because to go further I would like to know if the API is still working.

    How are you executing the script? Can you also generate a full verbose log and attach it to this thread?

    script.traceSetFileLevel(TraceLevel.ALL)

  • Looking at the previous log, I see:

    Error loading "../../../../../../Users/rhenry/Desktop/projet_profiling/target_programs/iphy_tnq_cpu1.out": Timed out after 100000ms while waiting for target to halt after an auto-run to "main

    Does your application have a 'main'? if not, you may want to disable the auto-run option... or at least specify a valid label.