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:复杂项目结构必须连续收集代码覆盖率报告,同时执行“停止处理器和合并代码覆盖率报告”

Guru**** 2768565 points

Other Parts Discussed in Thread: RM48L952, CCSTUDIO

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1079323/rm48l952-complex-project-structure-have-to-collect-code-coverage-report-continiously-while-executing-halt-the-processor-and-merge-code-coverage-report

部件号:RM48L952
“线程: 测试CCStudio”中讨论的其它部件

您好,  

使用 XDSPRO 捕获复杂项目的线路覆盖和功能覆盖报告。  

1)我们能够在 for 循环完成后运行循环项目的 simle,以获取代码覆盖报告,附加的简单项目完成了执行,并在已知时间段后停止,并且没有 while 循环或复杂项目结构。  

e2e.ti.com/.../bin.zip

我们无法使用脚本创建以下内容:

清除 RM48L952上闪存的内容。

1)闪存/加载 具有多个循环等复杂项目结构的.out 文件执行时处理器可能停止,XDSPRO 必须在执行 RM48L952或停止等时连续收集代码覆盖范围。  

2)在完成第一步后,XDSPRO 应 停止处理器和合并代码覆盖报告。  

3)使用不同的操作条件设置加载项目

4)在完成步骤3后,XDSPRO 应 停止处理器和合并代码覆盖报告。  

5)在循环测试条件下使用硬件加载项目  

6)在完成步骤5后,XDSPRO 应 停止处理器和合并代码覆盖报告。  

7)上述步骤的执行可能有多个循环不同的输入测试条件/代码设置等所有条件它应该 合并代码覆盖报告 并生成最终报告

8)由于需要从复杂项目中收集大量数据,XDSPRO 会在下一行停止并退出脚本,因此数据应拆分为小的512kb 块,并经常写入.csv 文件  

脚本如下所示

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:/ti/ccsv6/ccs_base/scripting/bin/RM48L952.ccxml");
dsR5 = debugServer.openSession("*", "*"); 

script.traceWrite("Connecting CPU");
dsR5.target.connect();

script.traceWrite("Loading program");
//dsR5.memory.loadProgram("Compiled/TESTXDSPRO.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", "512 kB");
analysisConfig.setProperty("Number of Pins", "8 Pin");

analysisConfig.run();

//---------- Run target for 2 secs ----------
script.traceWrite("Running target");
dsR5.target.halt();
dsR5.target.runAsynch();
Thread.sleep(20000);
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();

重要软件包(Packages.com.ti.debug.engine.scripting)
重要软件包(Packages.com.ti.ccstudio.scripting.environment)
重要软件包(Packages.com.ti.dvt.engine.scripting)
导入包(Packages.java.lang)
导入包(Packages.java.io)
导入包(Packages.java.util)

/*
*此文件包含在基于 XDSPRO 的 C6670板上运行代码覆盖率分析的示例
*该示例将处理的数据导出到 CWD (当前工作目录)中的 CSV 文件。
*
*有关的完整详细信息,请参阅/CS_base/scriptions/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:/ti/ccsv6/ccs_base/scripting/bin/RM48L952.ccxml");
dsR5 = debugServer.openSession("*","*");

script.traceWrite (“正在连接 CPU”);
dsR5.target.connect();

script.traceWrite (“加载程序”);
//dsR5.memory.loadProgram (“编译的/TESTXDSPRO.out”);

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

//---- 设置分析-----
script.traceWrite (“设置分析会话”);
AnalysisSession = dvtServer.openAnalysisSession();

AnalysisConfig = analysisSession.loadAnalysis (“硬件跟踪分析器/代码覆盖范围”);
analysisConfig.setProperty("core",dsR5.getName();
analysisConfig.setProperty("transportType","Pro Trace");
analysisConfig.setProperty("bufferSize",“512 KB”);
analysisConfig.setProperty("Number of Pins,"8 Pins");

analysisConfig.run();

//--- 运行目标2秒-----
script.traceWrite (“运行目标”);
dsR5.target.halt ();
dsR5.target.runAsynch();
线程休眠(20000);
dsR5.target.halt ();
//dsR5.target.run();

//---- 等待处理完成-->
script.traceWrite (“处理”);
Analyzer = analysisConfig.findAnalyzerByName("Code Coverage");
Analyzer.waitForEndOfData();


//---- 后期分析-将数据导出到 CSV 文件中-----
CWD = script.getCurrentDirectory();
script.traceWrite (“将结果导出到”+ cwd);
Analyzer.exportDataToCSV (“线路覆盖范围”,cwd+"/"+"LineCoverageLive.csv),空);
Analyzer.exportDataToCSV (“函数覆盖范围”,cwd+"/"+"功能选项 CoverageLive.csv,空);

//---- 关闭-----
script.traceWrite (“关闭”);
AnalysisSession.endAnalysis(analysisConfig);
debugServer.stop();
dvtServer.stop();
script.traceEnd();

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

    你好,Chandre,

    很抱歉,我不熟悉 xdspro 的脚本。