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.

[参考译文] RM48L952:我们希望使用 Spectrum Digital XDS PRO Trace 功能来生成代码覆盖报告的完整过程"自动化&quot

Guru**** 2769375 points

Other Parts Discussed in Thread: CCSTUDIO, RM48L952

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055425/rm48l952-we-want-to-automate-complete-process-to-generate-code-coverage-report-using-spectrum-digital-xds-pro-trace-functionality

器件型号:RM48L952
主题中讨论的其他器件:CCStudio

您好,

使用 Code Composer Studio,我们可以下载项目二进制文件并设置 Spectrum Digital XDS PRO Trace,并收集 TUV 认证的代码覆盖报告。  

我们可以通过相同的步骤使用 DSS 脚本

我们希望使用 XDS PRO Trace 功能“自动化”-代码覆盖报告

对于自动化,我使用了 DSS 中的脚本和生成的二进制文件。  

要下载二进制文件,我可以运行一组批处理脚本。

最后,需要自动执行3个步骤。  

步骤1:转到工具->硬件跟踪分析器,然后选择代码覆盖。  

步骤2: 在初始化硬件跟踪分析器上单击确定

步骤3:将代码覆盖配置中的引脚数等参数更改为8  

步骤4:最后我得到代码覆盖 ,CCS IDE 将启动日志记录。 我还需要存储/更新日志的路径。  

我必须自动执行此过程,是否有人建议使用脚本生成 XDS PRO Code Coverage 报告  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

      这曾经是使用 DSS DVT 脚本实现的、正如跟踪分析器用户指南第5章所示。 但是、DSS DVT 脚本在最新的 CCS 版本中已被弃用、不再受支持:

    https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/670211/ccs-rm48l952-dss-analysis-error-dvtserver-not-working

    它们可能是使用 CTOOLS 跟踪来实现此目的的方法。 如果可能的话、我需要进一步调查。

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将尝试查看使用 CTOOLS 跟踪可以实现的功能。 设置 pro trace 环境需要一些时间。 对拖延表示歉意。 我会随时向您发布任何更新。

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只是一个快速(非)更新:明天我将有机会访问我的 pro trace 接收器、然后再试一下

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    步骤1) 我安装了 CCS v6.2.0并执行了.js 脚本。  

    步骤2)我更新了以下4行 ,此更新是否正确? 我是否可以更改上面所述图像中显示的菜单名称

    analysisConfig.setProperty("Cores"、dsC66_0.getName();
    analysisConfig.setProperty("Transport 类型"、"Pro Trace");
    analysisConfig.setProperty("Buffer 大小"、"512 KB");
    analysisConfig.setProperty("Number 引脚"、"8引脚");

    步骤3)在66处的后面一行无法在脚本中执行 。 脚本将停止并抛出错误。

    Analyzer.waitForEndOfData();

    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)

    /*
    *此文件包含在 C6670电路板上通过 XDSPRO 运行代码覆盖率分析的示例
    *它启用代码覆盖的合并选项并合并2个运行中的数据。
    *
    *该示例将已处理的数据导出到 CWD (当前工作目录)中的 CSV 文件。
    *
    *有关的完整详细信息、请参阅/ccs_base/scripting/docs/DVTAnalyzerScripting.htm
    *硬件跟踪分析器脚本
    *

    //------ 启动---
    脚本= ScriptingEnvironment.instance();
    script.setScriptTimeout(240000);

    //在当前目录中创建日志文件以记录脚本执行
    script.traceBegin ("scriptLog.xml"、"../../DefaultStylesheet.xsl);
    script.traceSetConsoleLevel (TraceLevel 信息);
    script.traceSetFileLevel (TraceLevel 信息);

    script.traceWrite ("起始代码覆盖");

    //------ 设置调试器---
    script.traceWrite ("正在启动调试器");
    debugServer = script.getServer ("DebugServer.1");
    debugServer.setConfig("c:/Users/Kalvacherla/Documents/200800_sgpcu_Sprint_CK/04 -软件/04 - SW SRC/RM48/PSP/平台/本机/Hercules /项目/SIL2PSP_Extension_RM48L952/RM48L952.ccxml");
    dsC66_0 = debugServer.openSession ("Spectrum Digital XDSPRO USB Emulator_0/CortexR4");

    script.traceWrite ("连接 CPU");
    dsc66_0.target.connect();

    script.traceWrite ("加载程序");


    //------ 创建 DVT 服务器---
    dvtServer = script.getServer ("DVTServer.1");

    //------ 设置分析---
    script.traceWrite ("通过合并设置代码覆盖率分析");
    analysisSession = dvtServer.openAnalysisSession();

    analysisConfig = analysisSession.loadAnalysis ("硬件跟踪分析器/代码覆盖率");
    analysisConfig.setProperty("Cores"、dsC66_0.getName();
    analysisConfig.setProperty("Transport 类型"、"Pro Trace");
    analysisConfig.setProperty("Buffer 大小"、"512 KB");
    analysisConfig.setProperty("Number 引脚"、"8引脚");


    analysisConfig.run();

    //---- 运行目标2秒---
    script.traceWrite ("运行目标");
    dsC66_0.target.runAsynch();
    Thread.Sleep (2000);
    dsc66_0.target.halt ();

    //------ 等待处理完成---
    script.traceWrite ("处理");
    Analyzer = analysisConfig.findAnalyzerByName ("代码覆盖");
    Analyzer.waitForEndOfData();

    //---- 分析后-将结果从第一次运行导出到 CSV 文件---
    CWD = script.getCurrentDirectory();
    script.traceWrite ("将结果导出到"+ cwd);
    Analyzer.exportDataToCSV ("行覆盖"、cwd+"/"+"LineCoverageLive.csv"、空);
    Analyzer.exportDataToCSV ("函数覆盖率"、cwd+"/"+"FunctionCoverageLive.csv"、空);

    //---- 再次运行目标2秒---
    script.traceWrite ("再次运行目标");
    dsc66_0.target.restart ();
    dsC66_0.target.runAsynch();
    Thread.Sleep (2000);
    dsc66_0.target.halt ();

    //------ 等待处理完成---
    script.traceWrite ("处理(与现有代码覆盖统计合并)");
    Analyzer.waitForEndOfData();

    //------ 分析后-将合并的结果导出到 CSV 文件---
    CWD = script.getCurrentDirectory();
    script.traceWrite ("将结果导出到"+ cwd);
    Analyzer.exportDataToCSV ("行覆盖"、cwd+"/"+"LineCoverageLive_merged.csv、空);
    Analyzer.exportDataToCSV ("函数覆盖率"、cwd+"/"+"FunctionCoverageLive_merged.csv、空);

    //------ 关机---
    script.traceWrite ("正在关闭");
    analysisSession.endAnalysis (analysisConfig);
    debugServer.stop();
    dvtServer.stop();
    script.traceEnd();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我能够运行 DVT 脚本以生成覆盖数据。 与您一样、我修改了其中一个示例脚本、以便使用 XDS PROTRACE 为 Hercules RM57L EVM 运行。  

    附件是我的示例脚本和生成的 csv:

    e2e.ti.com/.../FunctionCoverageLive.csve2e.ti.com/.../CodeCoverage_5F00_ProTrace_5F00_RM57.txt

    屏幕截图中的错误是因为在前一行中返回"null"

    Analyzer = analysisConfig.findAnalyzerByName ("代码覆盖");
    因此、分析仪为零、因此第66行上的误差为零。
    当我运行示例时、您可以看到分析仪不为空:
    我不知道为什么您的电话失败了。 请检查跟踪仓是否配置正确。 请参阅我的脚本以获取示例。
    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    “Command Prompt Output on exit”(退出时命令提示符输出)如下所示,是否有任何特定的命令提示符设置,如“run in Admin Mode ETC”(在管理模式下运行等)? 。

    我们是否应该设置任何环境变量? 在管理模式下运行命令提示符? 什么是 Windows 操作系统等? 。

    我们是否应该在 Windows 7上执行脚本? 是否需要 Windows 更新? 。 我正在 Windows 10上执行此脚本。

    已连接我的系统配置,我能否获得您的 PC 的系统配置。

    Java 脚本控制台如下所示  

    开始代码覆盖
    正在启动调试器
    正在连接 CPU
    CortexR4:GEL 输出:闪存@地址0x0的存储器映射设置
    正在加载程序
    dvtLogOptions.xml 不存在
    Entry (com.ti.dvt.engine.scripting.dvtServer.start Thu、2021年11月25日14:50:26 CET)
    返回(com.ti.dvt.engine.scripting.dvtServer.start Thu、2021年11月25日14:50:27 CET)
    设置分析会话
    插件:com.sun.script.javascript 引擎消息:在 C:\ti\ccsv6\ccs_base\common\analysis\scripts\CoreTrace.js 中调用 run 时出错、行号:51:
    sun.org.mozilla.javascript.internal.WrappedException: wrapped java.lang.NullPointerException (. 51)英寸 第51行:sun.org.mozilla.javascript.internal.WrappedException: wrapped java.lang.NullPointerException (. 51)英寸 第51行
    javax.script.ScriptException:sun.org.mozilla.javascript.internal.WrappedException: wrapped java.lang.NullPointerException (. 51)英寸 第51行
    com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:300)
    com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258)
    在 com.ti.dvt.analysis.tasks.Import$ImportTarget.execute (Import.Java:291)
    在 org.apache.tools.ant.Target.performTasks (Target.Java:456)
    在 org.apache.tools.ant.Project.executeSortedTargets(Project.Java:1393)
    在 org.apache.tools.ant.Project.executeTarget (Project.java:1364)
    在 org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    在 org.apache.tools.ant.Project.executeTargets(Project.Java:1248)
    org.apache.tools.ControlTaskRunner.run(ControlTaskRunner.java:540)
    org.apache.tools.ControlTaskRunner.run(ControlTaskRunner.java:497)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    com.ti.dvt.control.engine.core.ControlEngineRunner.run(ControlEngineRunner.java:545)
    com.ti.dvt.control.engine.core.ControlEngineRunner.run(ControlEngineRunner.java:497)
    com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.callMethod(ControlXMLActivity.java:242)
    com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.callMethod(ControlXMLActivity.java:281)
    com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.run(ControlFileActivity.java:257)
    网址为 com.ti.dvt.engine.scripting.ScriptAnalysisSession$ScriptActivity.run(ScriptAnalysisSession.java:275)
    网址为 com.ti.dvt.engine.scripting.ScriptAnalysisSession$ScriptAnalysis.run(ScriptAnalysisSession.java:564)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    org.mozilla.javascript.MemberBox.invoke(MemberBox.java:145)
    org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:204)
    org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3085)
    org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2251)
    org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:161)
    在 org.moilla.javascript 下,ContextFactory.doTopCall (ContextFactory.Java:340)
    在 org.moilla.javascript 脚本运行时间.doTopCall (ScriptRuntime.Java:2758)
    在 org.moilla.javascript 中,InterpretedFunction.exec(InterpretedFunction.java:172)
    在 org.moilla.javascript.tools.shell.Main.evalateScript (Main.java:503)
    org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:425)
    org.mozilla.javascript.tools.shell.Main.processFile(Main.java:391)
    org.mozilla.javascript.tools.shell.Main.processSource(Main.java:382)
    org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:179)
    org.moilla.javascript。tools.shell.Main$IProxy.run(Main.java:100)
    org.mozilla.javascript.Context.call(Context.java:528)
    org.mozilla.javascript.ContextFactory.call(ContextFactory.java:450)
    在 org.moilla.javascript.tools.shell.Main.exec (Main.java:162)
    org.mozilla.javascript.tools.debugger.Main.main(Main.java:255)
    com.ti.ccstudio.apps.internal.scripting.RunScript$1.run(RunScript.java:86)
    原因:sun.org.mozilla.javascript.internal.WrappedException: wrapped java.lang.NullPointerException (. 51)
    sun.org.mozilla.javascript.internal.Context.throwAsScriptRuntimeEx(Context.java:1808)
    sun.org.mozilla.javascript.internal.MemberBox.invoke(MemberBox.java:196)
    sun.org.mozilla.javascript.internal.NativeJavaMethod.call(NativeJavaMethod.java:245)
    sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1706)
    sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)
    sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:162)
    sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(ContextFactory.java:430)
    在 com.sun.script.javascript 引擎$1.superDoTopCall (RhinoScriptEngine.java:116)
    在 com.sun.script.javascript 引擎$1.doTopCall (RhinoScriptEngine.java:109)
    sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(ScriptRuntime.java:3160)
    sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:160)
    com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:294)
    (笑声) 43更多
    原因:java.lang.NullPointerException
    com.ti.dvt.analysis.suite.usecasehelpers.TraceUseCaseHelper.isSimulator(TraceUseCaseHelper.java:1452)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    sun.org.mozilla.javascript.internal.MemberBox.invoke(MemberBox.java:167)
    (笑声) 53个以上
    运行目标

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="369022" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055425/rm48l952-we-want-to-automate-complete-process-to-generate-code-coverage-report-using-spectrum-digital-xds-pro-trace-functionality/3909855 #3909855"]

    我们是否应该设置任何环境变量? 在管理模式下运行命令提示符? 什么是 Windows 操作系统等? 。

    我们是否应该在 Windows 7上执行脚本? 是否需要 Windows 更新? 。 我正在 Windows 10上执行此脚本。

    [/报价]

    是的、Windows 10正常。 我使用的是 Windows 10。

    我的 Windows 版本为20H2 (内部版本19042.1348)。 我不认为您看到的问题是因为您的 Windows 版本

    无需额外设置。

    这次误差看起来不同。 跟踪的 protrace 配置失败。 请附上您的最新版本的脚本。  

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    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)
    
    /*
     * This file contains an example for running Code Coverage Analysis on a C6670 board over XDSPRO
     * It enables the Merge option for Code Coverage and merge data from 2 runs.
     *
     * The example will export processed data to CSV files locate in CWD (Current Working Directory).
     *
     * See /ccs_base/scripting/docs/DVTAnalyzerScripting.htm for complete details on 
     * Hardware Trace Analyzer scripting 
     */
    
    // ---------- Start up ----------
    script = ScriptingEnvironment.instance();
    script.setScriptTimeout(240000);
    
    // 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);
    
    script.traceWrite("Starting Code Coverage");
    
    // ---------- Set up debugger ----------
    script.traceWrite("Launching debugger");
    debugServer = script.getServer("DebugServer.1");
    debugServer.setConfig("c:/Users/Kalvacherla/Documents/200800_sgpcu_Sprint_CK/04 - Software/04 - SW SRC/RM48/PSP/Platforms/Native/Hercules/projects/SIL2PSP_Extension_RM48L952/RM48L952.ccxml");
    dsR5 = debugServer.openSession("Spectrum Digital XDSPRO USB Emulator_0/CortexR4"); 
    
    script.traceWrite("Connecting CPU");
    dsR5.target.connect();
    
    script.traceWrite("Loading program");
    
    try {
            dsR5.memory.loadProgram("c:/Users/Kalvacherla/Documents/200800_sgpcu_Sprint_CK/04 - Software/04 - SW SRC/RM48/PSP/Platforms/Native/Hercules/projects/SIL2PSP_Extension_RM48L952/Debug/SIL2PSP_Extension_RM48L952.out");
    } catch (ex) {
            dssScriptEnv.traceWrite(testProgFile + " does not exist! Aborting script");
            quit();         // call custom quit routine to do some cleanup to gracefully exit the script
    }
    
    // ---------- Create a DVT server ----------
    dvtServer = script.getServer("DVTServer.1");
    
    // ---------- Set up the analysis ----------
    script.traceWrite("Setting up analysis session");
    analysisSession = dvtServer.openAnalysisSession();
    
    analysisConfig = analysisSession.loadAnalysis("Hardware Trace Analyzer/Code Coverage");
    analysisConfig.setProperty("cores", dsR5.getName());
    analysisConfig.setProperty("transportType", "Pro Trace");
    analysisConfig.setProperty("bufferSize", "512 kB");
    
    
    analysisConfig.run();
    
    //---------- Run target for 2 secs ----------
    script.traceWrite("Running target");
    //dsR5.target.runAsynch();
    //Thread.sleep(2000);
    //dsR5.target.halt();
    dsR5.target.run();
    
    // ---------- Wait until processing is done  ----------
    script.traceWrite("Processing");
    analyzer = analysisConfig.findAnalyzerByName("Code Coverage");
    analyzer.waitForEndOfData();
    
    
    // ---------- Post analysis - export the data to a CSV file ----------
    cwd = script.getCurrentDirectory();
    script.traceWrite("Exporting results to " + cwd);
    analyzer.exportDataToCSV("Line Coverage", cwd+"/"+"LineCoverageLive.csv", null);
    analyzer.exportDataToCSV("Function Coverage", cwd+"/"+"FunctionCoverageLive.csv", null);
    
    //---------- Again run target for 2 secs ----------
    script.traceWrite("Running target again");
    dsC66_0.target.restart();
    dsC66_0.target.runAsynch();
    Thread.sleep(2000);
    dsC66_0.target.halt();
    
    // ---------- Wait until processing is done  ----------
    script.traceWrite("Processing (merging with existing code coverage statistics)");
    analyzer.waitForEndOfData();
    
    // ---------- Post analysis - export merged result to a CSV file ----------
    cwd = script.getCurrentDirectory();
    script.traceWrite("Exporting results to " + cwd);
    analyzer.exportDataToCSV("Line Coverage", cwd+"/"+"LineCoverageLive_Merged.csv", null);
    analyzer.exportDataToCSV("Function Coverage", cwd+"/"+"FunctionCoverageLive_Merged.csv", null);
    // ---------- shut down ----------
    script.traceWrite("Shutting down");
    analysisSession.endAnalysis(analysisConfig);
    debugServer.stop();
    dvtServer.stop();
    script.traceEnd();
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以尝试将第57行的缓冲区大小更改为64 KB 吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已按如下方式更新.js 脚本并执行了该脚本 。  

    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)
    
    /*
     * This file contains an example for running Code Coverage Analysis on a C6670 board over XDSPRO
     * The example will export processed data to CSV files locate in CWD (Current Working Directory).
     *
     * See /ccs_base/scripting/docs/DVTAnalyzerScripting.htm for complete details on 
     * Hardware Trace Analyzer scripting 
     */
    
    // ---------- Start up ----------
    script = ScriptingEnvironment.instance();
    script.setScriptTimeout(240000);
    
    // 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);
    
    script.traceWrite("Starting Code Coverage");
    
    // ---------- Set up debugger ----------
    script.traceWrite("Launching debugger");
    debugServer = script.getServer("DebugServer.1");
    debugServer.setConfig("c:/Users/Kalvacherla/Documents/200800_sgpcu_Sprint_CK/04 - Software/04 - SW SRC/RM48/PSP/Platforms/Native/Hercules/projects/SIL2PSP_Extension_RM48L952/RM48L952.ccxml");
    dsR5 = debugServer.openSession("*", "*"); 
    
    script.traceWrite("Connecting CPU");
    dsR5.target.connect();
    
    script.traceWrite("Loading program");
    //dsR5.memory.loadProgram("c:/Users/Kalvacherla/Documents/200800_sgpcu_Sprint_CK/04 - Software/04 - SW SRC/RM48/PSP/Platforms/Native/Hercules/projects/SIL2PSP_Extension_RM48L952/Debug/SIL2PSP_Extension_RM48L952.out");
    
    // ---------- Create a DVT server ----------
    dvtServer = script.getServer("DVTServer.1");
    
    // ---------- Set up the analysis ----------
    script.traceWrite("Setting up analysis session");
    analysisSession = dvtServer.openAnalysisSession();
    
    analysisConfig = analysisSession.loadAnalysis("Hardware Trace Analyzer/Code Coverage");
    analysisConfig.setProperty("core", dsR5.getName());
    analysisConfig.setProperty("transportType", "Pro Trace");
    analysisConfig.setProperty("bufferSize", "64 kB");
    
    analysisConfig.run();
    
    //---------- Run target for 2 secs ----------
    script.traceWrite("Running target");
    //dsR5.target.runAsynch();
    //Thread.sleep(2000);
    //dsR5.target.halt();
    dsR5.target.run();
    
    // ---------- Wait until processing is done  ----------
    script.traceWrite("Processing");
    analyzer = analysisConfig.findAnalyzerByName("Code Coverage");
    analyzer.waitForEndOfData();
    
    
    // ---------- Post analysis - export the data to a CSV file ----------
    cwd = script.getCurrentDirectory();
    script.traceWrite("Exporting results to " + cwd);
    analyzer.exportDataToCSV("Line Coverage", cwd+"/"+"LineCoverageLive.csv", null);
    analyzer.exportDataToCSV("Function Coverage", cwd+"/"+"FunctionCoverageLive.csv", null);
    
    // ---------- shut down ----------
    script.traceWrite("Shutting down");
    analysisSession.endAnalysis(analysisConfig);
    debugServer.stop();
    dvtServer.stop();
    script.traceEnd();
    

    下面随附的是 XML script_log

    <?xml version="1.0" encoding="windows-1252" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="DefaultStylesheet.xsl"?>
    <log>
    <record>
      <date>2021-11-25T17:12:51</date>
      <millis>1637856771210</millis>
      <sequence>7</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Starting Code Coverage</message>
    </record>
    <record>
      <date>2021-11-25T17:12:51</date>
      <millis>1637856771211</millis>
      <sequence>8</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Launching debugger</message>
    </record>
    <record>
      <date>2021-11-25T17:13:05</date>
      <millis>1637856785810</millis>
      <sequence>53</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Connecting CPU</message>
    </record>
    <record>
      <date>2021-11-25T17:13:06</date>
      <millis>1637856786396</millis>
      <sequence>60</sequence>
      <logger>com.ti.debug.engine.scripting.DebugSession</logger>
      <level>INFO</level>
      <class>com.ti.debug.engine.scripting.DebugSession$DebuggerInfoListener</class>
      <method>onEvent</method>
      <thread>41</thread>
      <message>CortexR4: GEL Output: 	Memory Map Setup for Flash @ Address 0x0</message>
    </record>
    <record>
      <date>2021-11-25T17:13:06</date>
      <millis>1637856786427</millis>
      <sequence>67</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Loading program</message>
    </record>
    <record>
      <date>2021-11-25T17:13:06</date>
      <millis>1637856786594</millis>
      <sequence>76</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Setting up analysis session</message>
    </record>
    <record>
      <date>2021-11-25T17:13:55</date>
      <millis>1637856835041</millis>
      <sequence>77</sequence>
      <logger>com.ti</logger>
      <level>INFO</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingEnvironment</class>
      <method>traceWrite</method>
      <thread>26</thread>
      <message>Running target</message>
    </record>
    <record>
      <date>2021-11-25T17:18:00</date>
      <millis>1637857080981</millis>
      <sequence>81</sequence>
      <logger>com.ti.ccstudio.scripting.environment.ScriptingException</logger>
      <level>SEVERE</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingException</class>
      <method>logException</method>
      <thread>26</thread>
      <message>Timed out after 240000ms</message>
      <exception>
        <message>com.ti.ccstudio.scripting.environment.ScriptingException: Timed out after 240000ms</message>
        <frame>
          <class>com.ti.debug.engine.scripting.AbstractListener</class>
          <method>waitUntil</method>
          <line>76</line>
        </frame>
        <frame>
          <class>com.ti.debug.engine.scripting.AbstractListener</class>
          <method>waitUntil</method>
          <line>87</line>
        </frame>
        <frame>
          <class>com.ti.debug.engine.scripting.ExecutionOperation</class>
          <method>go</method>
          <line>57</line>
        </frame>
        <frame>
          <class>com.ti.debug.engine.scripting.Target</class>
          <method>run</method>
          <line>782</line>
        </frame>
        <frame>
          <class>sun.reflect.NativeMethodAccessorImpl</class>
          <method>invoke0</method>
        </frame>
        <frame>
          <class>sun.reflect.NativeMethodAccessorImpl</class>
          <method>invoke</method>
          <line>57</line>
        </frame>
        <frame>
          <class>sun.reflect.DelegatingMethodAccessorImpl</class>
          <method>invoke</method>
          <line>43</line>
        </frame>
        <frame>
          <class>java.lang.reflect.Method</class>
          <method>invoke</method>
          <line>606</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.MemberBox</class>
          <method>invoke</method>
          <line>145</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.NativeJavaMethod</class>
          <method>call</method>
          <line>204</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Interpreter</class>
          <method>interpretLoop</method>
          <line>3085</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Interpreter</class>
          <method>interpret</method>
          <line>2251</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.InterpretedFunction</class>
          <method>call</method>
          <line>161</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ContextFactory</class>
          <method>doTopCall</method>
          <line>340</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ScriptRuntime</class>
          <method>doTopCall</method>
          <line>2758</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.InterpretedFunction</class>
          <method>exec</method>
          <line>172</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>evaluateScript</method>
          <line>503</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFileSecure</method>
          <line>425</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFile</method>
          <line>391</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processSource</method>
          <line>382</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFiles</method>
          <line>179</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main$IProxy</class>
          <method>run</method>
          <line>100</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Context</class>
          <method>call</method>
          <line>528</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ContextFactory</class>
          <method>call</method>
          <line>450</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>exec</method>
          <line>162</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.debugger.Main</class>
          <method>main</method>
          <line>255</line>
        </frame>
        <frame>
          <class>com.ti.ccstudio.apps.internal.scripting.RunScript$1</class>
          <method>run</method>
          <line>86</line>
        </frame>
      </exception>
    </record>
    <record>
      <date>2021-11-25T17:18:00</date>
      <millis>1637857080983</millis>
      <sequence>82</sequence>
      <logger>com.ti.ccstudio.scripting.environment.ScriptingException</logger>
      <level>SEVERE</level>
      <class>com.ti.ccstudio.scripting.environment.ScriptingException</class>
      <method>logException</method>
      <thread>26</thread>
      <message>com.ti.debug.engine.scripting.Target.run(): Timed out after 240000ms</message>
      <exception>
        <message>com.ti.ccstudio.scripting.environment.ScriptingException: com.ti.debug.engine.scripting.Target.run(): Timed out after 240000ms</message>
        <frame>
          <class>com.ti.debug.engine.scripting.ExecutionOperation</class>
          <method>go</method>
          <line>68</line>
        </frame>
        <frame>
          <class>com.ti.debug.engine.scripting.Target</class>
          <method>run</method>
          <line>782</line>
        </frame>
        <frame>
          <class>sun.reflect.NativeMethodAccessorImpl</class>
          <method>invoke0</method>
        </frame>
        <frame>
          <class>sun.reflect.NativeMethodAccessorImpl</class>
          <method>invoke</method>
          <line>57</line>
        </frame>
        <frame>
          <class>sun.reflect.DelegatingMethodAccessorImpl</class>
          <method>invoke</method>
          <line>43</line>
        </frame>
        <frame>
          <class>java.lang.reflect.Method</class>
          <method>invoke</method>
          <line>606</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.MemberBox</class>
          <method>invoke</method>
          <line>145</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.NativeJavaMethod</class>
          <method>call</method>
          <line>204</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Interpreter</class>
          <method>interpretLoop</method>
          <line>3085</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Interpreter</class>
          <method>interpret</method>
          <line>2251</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.InterpretedFunction</class>
          <method>call</method>
          <line>161</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ContextFactory</class>
          <method>doTopCall</method>
          <line>340</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ScriptRuntime</class>
          <method>doTopCall</method>
          <line>2758</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.InterpretedFunction</class>
          <method>exec</method>
          <line>172</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>evaluateScript</method>
          <line>503</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFileSecure</method>
          <line>425</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFile</method>
          <line>391</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processSource</method>
          <line>382</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>processFiles</method>
          <line>179</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main$IProxy</class>
          <method>run</method>
          <line>100</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.Context</class>
          <method>call</method>
          <line>528</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.ContextFactory</class>
          <method>call</method>
          <line>450</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.shell.Main</class>
          <method>exec</method>
          <line>162</line>
        </frame>
        <frame>
          <class>org.mozilla.javascript.tools.debugger.Main</class>
          <method>main</method>
          <line>255</line>
        </frame>
        <frame>
          <class>com.ti.ccstudio.apps.internal.scripting.RunScript$1</class>
          <method>run</method>
          <line>86</line>
        </frame>
      </exception>
    </record>
    </log> 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否告诉我您使用的 CCS 版本,我使用的是 CCS 6.2.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还使用6.2.0。

    最后一条错误消息更有希望:

    com.ti.ccstudio.scripting.environment.ScriptingException:240000ms 后超时

    您的应用程序似乎未定义运行、因此您将获得240秒的脚本超时异常。 几秒钟后、我的程序终止了自己的运行、因此我可以使用同步运行。 在本例中、您需要执行异步运行、然后等待几秒钟、然后显式调用 halt。 基本上、这些是在脚本中注释掉的第55-57行。 您可以取消注释这些内容、然后注释第58行。 可以将线程休眠调用中的值更改为要设置等待时间的任何值。