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:使用 DSS 和 DVT 开发 DSP 性能评测脚本

Guru**** 2529560 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/762776/ccs-tms320tci6618-development-of-dsp-profiling-script-with-dss-and-dvt

器件型号:TMS320TCI6618

工具/软件:Code Composer Studio

大家好、

我目前正在进行 TCI6618 DSP 的性能评测。 我使用 CCS v5和 提供的示例开发了我的脚本 、以便通过 Pro Trace 获取 DSP 的功能时序、但 我遇到了很多 API 问题。

当探测器尝试连接到目标时,我也会遇到一些错误:

连接到 CPU
严重:C66xx_0:停止目标 CPU 时出现问题:(错误-1060 @ 0x0)器件未响应请求。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包5.1.232.0)

我已经尝试重置器件、错误仍然存在

第二期:

由于 API 和一些导入包丢失、我出现了许多错误  

此处的代码:  

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

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

)//在当前目录中创建一个日志文件以记录脚本执行
脚本。traceBegin ("scriptLog.xml"、"DefaultStylesheet.xsl")
script.traceSetConsoleLevel (TraceLevel.info)
script.traceSetFileLevel (CurrentLevel.info)
c=.getDirectory--

设置调试器---
Script.traceWrite ("设置调试器")
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 系统 Trace_0/C66xx_0")/Spectrum Digital XDSPUSB Emulator_0-/C66xx-/-/Spectrum Emulator_0-/-/-/-66xx-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-

设置目标---
dspC6618_0.options.setBoolean("AllowInterruptsWhenHalted",true)
dspC6618_0.options.setBoolean("PoliteRealtimeMode",true)

script.traceWrite ("连接到 CPU")
dspC6618_0.target.connect ()
试用{
dspC6618_0.memory.loadProgram ("..//../../../../../Users/rhenry/Desktop/projet_profiling/target_programs/iphy_tnq_cpu1.out)
}捕捉(错误){
System.out.println (错误)
script.traceWrite ("加载时出错*.out/----/---/---/---/---/---/---/-/-/-/-/-/-/-/-/-/-/-/-/-/-

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

//--- 设置分析---
script.traceWrite ("设置 PC 跟踪")
analysisSession = dvtServer.openAnalysisSession()

试用{
//--- 设置会话---
analysisConfig = analysisSession.loadAnalysis ("PC Trace")
analysisConfig.setProperty("core"、"C66xx_0")
analysisConfig.setProperty("transportType"、"Pro Trace")
analysisConfig.setProperty("bufferSize"、"64KB")
analysisConfig.setProperty("bufferType"、"Stop-on-full")
analysisConfig.setProperty("synchronizeWithTarget"、 true)
analysisConfig.setProperty("merge",true)
analysisConfig.run();
{oce(err){System.out.println(err)

script.traceWriteWrite("Error during Setting Up profiling")}


尝试{//---->
运行目标10秒---
script.traceWrite (“为“+ Runtime +”mSeconds 运行目标”)
dspC6618_0.target.runAsynch ()
Thread.Sleep (Runtime)
dspC6618_0.target.halt ()

//--- 等待处理完成---
Script.traceWrite ("处理")
分析器= analysisConfig.findAnalyzerByName ("专用函数分析器")
分析器.waitForEndOfData ()

//--- 分析后-将数据导出到 CSV 文件---
cWD = script.getCurrentDirectory()
script.traceWrite ("将结果导出到"+ cwd)
analyzer.exportDataToCSV ("专用函数描述器"、cwd+"/"+"FunctionProfile.csv"、null)
}
catch (err){
System.out.printn (err)
script.traceWrite ("分析过程中的错误"-"

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

--- 主----------------
system.out.println ("启动脚本")
PC_TraceTM ()
System.out.println ("结束脚本"); 

跟踪_dss.;bat 中的跟踪复杂:

e2e.ti.com/.../5545.log-Dsp-Profiling-script.txt



跟踪由脚本生成:

e2e.ti.com/.../3482.scriptLog.xml



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

    错误1060在以下参考中有详细说明(只需搜索错误代码)
    dev.ti.com/.../

    妨碍良好连接的主要细节是器件或电路板本身。 我会尝试手动连接到它、看看您是否获得了良好和可靠的连接。 此外、时序可能会计数:如果目标具有非常长的 GEL 文件、则可能需要在 target.connect 和 memory.loadProgram 调用之间插入一个较小的延迟。

    另一个详细信息:您提到您使用的是 Pro Trace、但您的目标连接文件名表示您使用的是通过 LAN 连接的 Blackhawk XDS560v2 STM。 这是哪一个? 它是否能够可靠地与 Blackhawk 配合使用?

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

    您好、Rafael、

    我使用 code composer "test connections"手动连接进行检查、并显示任何问题。

    [开始:Blackhawk XDS560v2-LAN System Trace Emulator_0]
    
    执行以下命令:
    
    %CCS_base%/common/uscif/dbgjtag.exe -f %boarddatafil文件%-RV -o -F inform、logfile=yes -S pathlength -S integrity
    
    [结果]
    
    
    --- [打印电路板配置路径名]---------------
    
    C:\Users\rhenry\AppData\Local\TEXASI~1\CCS\
    TI \1\0\BrdDat\testBoard.dat
    
    ---- [打印重置命令软件日志文件]-----------------
    
    此实用程序已选择了560/2xx 类产品。
    此实用程序将加载程序'bh560v2e.out'。
    加载的 FPGA 映像:C:\ti\ccsv8\ccs_base\con\uscif\DTC_top.jBC
    库构建日期为"2018年30日"。
    库构建时间为'22:02:11'。
    库软件包版本为'8.0.27.9'。
    库组件版本为'35.0.0'。
    控制器不使用可编程 FPGA。
    控制器的版本号为'6'(0x00000006)。
    控制器的插入长度为"0"(0x00000000)。
    CABLE + POD 的版本号为"8"(0x00000008)。
    CABLE + POD 的功能编号为'7423'(0x00001cff)。
    此实用程序将尝试重置控制器。
    此实用程序已成功重置控制器。
    
    ---- [打印重置命令硬件日志文件]-----------------
    
    扫描路径将通过切换 JTAG TRST 信号进行复位。
    控制器是 Nano-TBC VHDL。
    链路是560类第二代560电缆。
    该软件配置为具有 Nano-TBC VHDL 功能。
    控制器将通过其寄存器进行软件复位。
    控制器在其 EMU[0]输入引脚上有一个逻辑1。
    控制器在其 EMU[1]输入引脚上有一个逻辑1。
    控制器将在输出引脚上使用下降沿计时。
    控制器无法控制输入引脚上的时序。
    扫描路径链路延迟已精确设置为"2"(0x0002)。
    实用程序逻辑之前未检测到功率损耗。
    实用程序逻辑当前未检测到功率损耗。
    加载的 FPGA 映像:C:\ti\ccsv8\ccs_base\con\uscif\DTC_top.jBC
    
    -- [用于从 PLL 生成的 JTAG TCLK 输出的日志文件]---
    
    测试尺寸坐标 MHz 标志结果 描述
    ~~~~~~~~~~~~~~~ ~~~~~~~~μ A ~~~~~~~~~~~~~~~μ A ~~~~~~~~~~~~~~~~~~~μ A
    1无- 01 00 500.0kHz -类似 iSIT 内部时钟
    2无- 01 09 570.3kHz -类似 iSIT 内部时钟
    3. 64 - 01 00 500.0kHz O 良好值测量路径长度
    4. 16 - 01 00 500.0kHz O 良好值自动步进初始化
    5. 16 - 01 0D 601.6kHz O 良好值自动步进增量
    6. 16 - 01 1C 718.8kHz O 良好值自动步进增量
    7. 16 - 01 2E 859.4kHz O 良好值自动步进增量
    8. 16 + 00 02 1.031MHz O 良好值自动步进增量
    9. 16 + 00 0F 1.234MHz O 良好值自动步进增量
    10. 16 + 00 1F 1.484MHz O 良好值自动步进增量
    11. 16 + 00 32 1.781MHz O 良好值自动步进增量
    12. 16 + 01 04 2.125MHz O 良好值自动步进增量
    13. 16 + 01 11 2.531MHz O 良好值自动步进增量
    14. 16 + 01 21 3.031MHz O 良好值自动步进增量
    15 16 + 01 34 3.625MHz O 良好值自动步进增量
    16. 16 + 02 05 4.313MHz O 良好值自动步进增量
    17 16 + 02 13 5.188MHz O Good Value 自动步进增量
    18 16 + 02 23 6.188MHz O 良好值自动步进增量
    19 16 + 02 37 7.438MHz O 良好值自动步进增量
    20 16 + 03 07 8.875MHz O 良好值自动步进增量
    21 16 + 03 15 10.63MHz O 良好值自动步进增量
    22 16 + 03 1E 11.75MHz{O}良好值自动步进增量
    23 64 + 02 3E 7.875MHz O 正常值自动电源初始
    24 64 + 03 0E 9.750MHz O 良好值自动功率增量
    25 64 + 03 16 10.75MHz O 良好值自动功率增量
    26. 64 + 03 1A 11.25MHz O 良好值自动功率增量
    27 64 + 03 1C 11.50MHz O 良好值自动功率增量
    28 64 + 03 1D 11.63MHz O 良好值自动功率增量
    29 64 + 03 1D 11.63MHz O 良好值自动功率增量
    30 64 + 03 13 10.38MHz{O}良好值自动裕度初始
    
    第一个内部/外部时钟测试结果为:
    预期频率为500000Hz。
    实际频率为499872Hz。
    差值频率为128Hz。
    
    第二个内部/外部时钟测试结果为:
    预期频率为570312Hz。
    实际频率为569976Hz。
    差值频率为336Hz。
    
    在扫描路径测试中:
    测试长度为2048位。
    JTAG IR 长度为6位。
    JTAG DR 长度为1位。
    
    IR/DR 扫描路径测试使用30个频率。
    IR/DR 扫描路径测试使用500.0kHz 作为初始频率。
    IR/DR 扫描路径测试使用11.75MHz 作为最高频率。
    IR/DR 扫描路径测试使用10.38MHz 作为最终频率。
    
    ---- [测量最终 JTAG TCLKR 输入的源和频率]----
    
    测得的 JTAG TCLKR 输入频率为10.37MHz。
    
    JTAG TCLKR 输入和 TCLKO 输出信号的频率相似。
    目标系统可能使用仿真器 PLL 的 TCLKO 输出。
    
    ---- [对 JTAG IR 和 DR 执行标准路径长度测试]-----
    
    此路径长度测试使用64个32位字的块。
    
    JTAG IR 指令路径长度测试成功。
    JTAG IR 指令路径长度为6位。
    
    JTAG DR 旁路路径长度测试成功。
    JTAG DR 旁路路径长度为1位。
    
    ---- [对 JTAG IR 执行完整性扫描测试]-----
    
    此测试将使用64个32位字的块。
    该测试将仅应用一次。
    
    使用0xFFFFFFFF 进行测试。
    扫描测试:1、跳过:0、失败:0
    使用0x00000000进行测试。
    扫描测试:2、跳过:0、失败:0
    使用0xFE03E0E2执行测试。
    扫描测试:3、跳过:0、失败:0
    使用0x01FC1F1D 进行测试。
    扫描测试:4、跳过:0、失败:0
    使用0x5533CCAA 进行测试。
    扫描测试:5、跳过:0、失败:0
    使用0xAACC3355进行测试。
    扫描测试:6、跳过:0、失败:0
    所有值均已正确扫描。
    
    JTAG IR 完整性扫描测试成功。
    
    ---- [在 JTAG DR 上执行完整性扫描测试]-----
    
    此测试将使用64个32位字的块。
    该测试将仅应用一次。
    
    使用0xFFFFFFFF 进行测试。
    扫描测试:1、跳过:0、失败:0
    使用0x00000000进行测试。
    扫描测试:2、跳过:0、失败:0
    使用0xFE03E0E2执行测试。
    扫描测试:3、跳过:0、失败:0
    使用0x01FC1F1D 进行测试。
    扫描测试:4、跳过:0、失败:0
    使用0x5533CCAA 进行测试。
    扫描测试:5、跳过:0、失败:0
    使用0xAACC3355进行测试。
    扫描测试:6、跳过:0、失败:0
    所有值均已正确扫描。
    
    JTAG DR 完整性扫描测试成功。
    
    [结束:Blackhawk XDS560v2-LAN 系统跟踪仿真器_0] 

    但我的主要问题是有关 API 的错误。 实际上、这是我的主要问题、因为为了进一步了解 API 是否仍在工作。

    (笑声)

    javax.script.ScriptException:ReferenceError:"importPackage"未在中定义 在第1行
    在 JDk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException (NashornScriptEngine.Java:470)
    在 JDk.nashorn.api.script.NashornScriptEngine.evalImpl (NashornScriptEngine.java:454)
    在 JDk.nashorn.api.script.NashornScriptEngine.evalImpl (NashornScriptEngine.java:406)
    在 JDk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:402)
    jdk.nashorn.api.scripting.nashornScriptEngine.eval (nashornScriptEngine.java:150)
    在 javax.script.AbstractScriptEngine.eval (未知源)
    com.ti.dvt.analysis.suite.UseCaseActivity.include(UseCaseActivity.java:232)
    com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.include(ControlFileActivity.java:222)
    请访问 jdk.nashorn.internal.scripts.Script$4$\^eval\_.:program ( (1)
    jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    在 JDk.nashorn.api.script.NashornScriptEngine.evalImpl (NashornScriptEngine.java:449)
    在 JDk.nashorn.api.script.NashornScriptEngine.evalImpl (NashornScriptEngine.java:406)
    在 JDk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:402)
    jdk.nashorn.api.scripting.nashornScriptEngine.eval (nashornScriptEngine.java:150)
    在 javax.script.AbstractScriptEngine.eval (未知源)
    在 com.ti.dvt.analysis.tas.tas.Import.execute (Import.java:95)
    在 org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291)
    sun.reflect.GeneratedMethodAccessor8.invoke(Unknown 来源)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 来源)
    java.lang.reflect.Method.invoke(Unknown 来源)
    在 org.apache.tools.ant.dischUtils.execute (DispatchUtils.java:106)
    在 org.apache.tools.ant.Task.perform (Task.java:348)
    在 org.apache.tools.ant.Target.execute (Target.Java:392)
    在 org.apache.tools.ant.helper.ProjectHelper2.parse (ProjectHelper2.java:180)
    org.apache.tools.ControlTaskRunner.initImpl(ControlTaskRunner.java:308)
    org.apache.tools.ControlTaskRunner.init(ControlTaskRunner.java:345)
    在 org.apache.tools.ControlTaskRunner.getProperty (ControlTaskRunner.Java:387)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown 来源)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 来源)
    java.lang.reflect.Method.invoke(Unknown 来源)
    位于 com.ti.dvt.control.engine.core.ControlEngineRunner.getProperty (ControlEngineRunner.Java:703)
    位于 com.ti.dvt.control.engine.actives.controlxml.ControlXMLActivity.getProperty (ControlXMLActivity.Java:132)
    com.ti.dvt.control.engine.activities.Activity.setProperty(Activity.java:900)
    com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.setProperty(ControlFileActivity.java:216)
    com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.setProperty(ControlXMLActivity.java:149)
    com.ti.dvt.control.engine.activities.Activity.init(Activity.java:99)
    com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.init(ControlFileActivity.java:121)
    com.ti.dvt.control.engine.activities.controlxml.ControlXMLActivity.init(ControlXMLActivity.java:81)
    com.ti.dvt.control.engine.activities.controlxml.ControlFileActivity.setFile(ControlFileActivity.java:102)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlFileActivity。 (ControlFileActivity.Java:93)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivity。 (ControlXMLActivity.Java:62)
    at sun.refire.NativeConstructorAccessorImpl.newInstance0 (本机方法)
    at sun.refire.NativeConstructorAccessorImpl.newInstance (未知来源)
    at sun.refles.DelegatingConstructorAccessorImpl.newInstance (未知来源)
    在 java.lang.refles.constructure.newInstance(未知源代码)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivityProvider.addControlFileActivity (ControlXMLActivityProvider.Java:201)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivityProvider.scanPath (ControlXMLActivityProvider.java:143)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivityProvider.scanPath (ControlXMLActivityProvider.java:151)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivityProvider.refreshActivities (ControlXMLActivityProvider.java:289)
    位于 com.ti.dvt.control.engine.activations.controlxml.ControlXMLActivityProvider.getActivations(ControlXMLActivityProvider.java:78)
    访问 com.ti.dvt.control.engine.activityManager$ActivityProviderAdd.run(ActivityManager.java:515)
    访问 com.ti.dvt.control.engine.types.irUN$Run.run(IRun.java:79)
    原因: :1参考错误:未定义“importPackage”
    jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
    jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
    jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
    jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:1442)
    请访问 jdk.nashorn.internal.scripts.Script$5$\^eval\_.:program ( (1)
    jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    在 JDk.nashorn.api.script.NashornScriptEngine.evalImpl (NashornScriptEngine.java:449)
    (笑声) 53个以上

    (笑声)

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

    感谢您发送测试连接结果;您是否能够通过 GUI 完全连接到内核? 如果设置了 GEL 初始化脚本、则可能需要等待目标完全连接。

    与我之前提到的不同(添加延迟)、您可以将选项 true 添加到 target.connect

    dspC6618_0.target.connect (真)

    这将强制脚本完成连接、然后再移至下一行、从而为 GEL 脚本完成运行提供时间。

    您在上面突出显示的脚本错误可能来自调用 dvtServer.openAnalysisSession、该错误仅在目标正确连接且代码正确加载时有效。

    在这种情况下、如果目标连接在脚本中失败、这将进一步触发事件序列中的其他问题。

    希望这对您有所帮助、
    拉斐尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Romain Henry">但我的主要问题是有关 API 的错误。 实际上、这是我的主要问题、因为为了更进一步、 我想知道 API 是否仍在运行。

    如何执行脚本? 是否还可以生成完整详细日志并将其附加到此线程?

    script.traceSetFileLevel (TraceLevel。所有)

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

    加载"../../../../../../Users/rhenry/Desktop/projet_profiling/target_programs/iphy_tnq_cpu1.out 时出错:在自动运行至"main"后等待目标停止时、100000ms 后超时

    您的应用是否具有"主"? 如果没有、您可能需要禁用自动运行选项... 或至少指定有效的标签。