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.

[参考译文] TMS320F28027F:在 DSS 脚本执行自动化期间、需要读取变量地址。

Guru**** 1872900 points
Other Parts Discussed in Thread: CCSTUDIO, TMS320F28027, TMDSEMU200-U
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1281248/tms320f28027f-during-automation-in-dss-scripting-need-to-read-variable-address

器件型号:TMS320F28027F
主题中讨论的其他器件:CCStudioTMS320F28027TMDSEMU200-U

在 main.c flie 程序中、我需要 通过 DSS 脚本语法读取变量的地址。 请建议读取变量地址的语法。

例如、我的 main.c 程序

空 main (void)
{
   INT A=2;
   INT b=5;
   INT I;
   i=a+b;  

在读取符号的地址期间、我们可以使用以下语法:

//获取该符号的地址
var address = debugSession.symbol.getAddress ("main")
 

五颗星 与我需要的内容类似 //获取该 变量的地址

请参阅 DSS 的 API 文档:  

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

    您好 Govinda:

    对于此类主题、我们没有直接指定的专家、因此请让我花点时间看看我能否找到更熟悉 DSS 的人。

    此致、

    阿米尔·奥马尔

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

    一定要花点时间  

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

    在读取符号的地址期间、我们可以使用以下语法:

    //获取该符号的地址
    var address = debugSession.symbol.getAddress ("main")
     

    五颗星 与我需要的内容类似 //获取该 变量的地址

    [/报价]

    您可以使用相同的 API 来获取变量的地址。

    请注意、变量"a"、"b"和"i"均为示例中的局部变量。 因此、在尝试获取变量的地址时、这些变量需要处于范围内。

    谢谢

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

    HII  

    我遇到了有关 DSS 脚本的查询。

    概述  

    我们正在尝试从 ECU 测试工具中自动执行 DSS 脚本(读取或写入软件变量)  

     ECU 测试工具不具有自动执行 DSS 脚本的直接兼容性、因此我们尝试使用 LabVIEW 或 Python 界面来创建 DSS 脚本

    我们需要两个查询支持  

    1. DSS 脚本应持续运行以读取和写入软件变量。  

    2如何从 Python 或 LabVIEW 中将数据传递到 DSS 脚本?

    谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. DSS 脚本应持续运行以读取和写入软件变量。  [/报价]

    请解释您的确切用例。 您是否希望脚本在目标运行时持续读取/写入变量?

    2如何从 Python 或 LabVIEW 将数据传递到 DSS 脚本?

    我对 LabVIEW 没有任何经验、因此无法对此进行评论。 但可以将 python 与 DSS 一起使用:

    https://software-dl.ti.com/ccs/esd/documents/dss_python_dss_scripting.html

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

    hii ki

    1.是的,在目标运行时不断执行脚本以读写变量,您可以详细解释一下吗?  

    2.谢谢我们来研究一下。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 是的、在目标运行时持续执行脚本以读取和写入变量、您可以详细解释一下吗?  [/报价]

    C2000默认支持实时存储器访问。 因此、DSS 脚本可以异步运行程序、然后继续进行 memory.read 和 memory.write 调用以在目标运行时访问内存。

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

    HII Ki 感谢您的确认

    我们在 Jython 中还有其他查询  

    我们正在尝试运行 Jython 脚本、可以 设置环境变量、设置文件位置(ccxml、.out 文件)来运行脚本、但当在脚本中设置断点时、输出中的内存地址未显示为正数(与我们预期的相反)。  我在前面提到了断点脚本、

    #设置断点

    address = debugSession.symbol.getAddress ("ReadNextData")

    BP = debugSession.breakpoint.add(address)  

    您能说明一下这个脚本和解决方案吗?  

    谢谢  

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

    #设置断点

    address = debugSession.symbol.getAddress ("ReadNextData")

    BP = debugSession.breakpoint.add(address)  

    [/报价]

    这个执行是没有问题的。 请记住、要获取"ReadNextData"的正确地址、调用 getAddress API 时、它必须处于调试范围内。

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

    你好 Ki 感谢更新

    但对于 Jython、Address 不会被视为用于获取确切存储器地址和设置断点的变量。 因此、在这种情况下、我需要将 address 视为变量可以提供 Jython 脚本来设置该变量。  

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

    大家好、ki 我们还有更多关于 Jython 脚本的问题  

    我们能否将电话会议与团队联系起来、以便我们也能够快速澄清我们的疑问?

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

    您可以在源代码行或地址上设置断点。 您可以查找符号的地址。 "ReadNextData"是一个函数(不是变量)、因此示例是获取函数 start 的地址并在其中设置断点。

    请说明您具体要做什么。 您究竟是在哪里设置断点?

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

    HII Kii  

    实际上我们需要 基于断点的 Jython 脚本、这些断点已经过修改、我们试图执行但目前无法正常运行、您可以提供这种脚本吗?

    Jython 断点代码  

    从 java.lang 导入*
    从 java.util 导入*
    从 com.ti.debug.engine.scripting 导入*
    来自 com.ti.ccStudio.scripting.environment 导入*

    #创建我们的脚本环境对象-它是任何脚本的主要入口点,
    #创建其他可脚本服务器和会话的工厂
    脚本= ScriptingEnvironment.instance ()

    #在当前目录中创建日志文件以记录脚本执行
    script.traceBegin ("BreakpointsTestLog_python.xml"、"DefaultStylesheet.xsl")

    #设置超时
    script.setScriptTimeout(15000)

    #记录所有内容
    script.traceSetConsoleLevel (TraceLevel.all)
    script.traceSetFileLevel (TraceLevel.all)

    #获取调试服务器并启动调试会话
    debugserver = script.getServer ("DebugServer.1")
    debugServer.setConfig("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\LaunchpadC2000\\targetConfigs\\TMS320F28027.ccxml");
    debugSession = debugServer.openSession ("*"、"*")

    debugSession.target.connect()

    #加载程序
    #脚本环境有一个工作文件夹的概念和所有的 API ,这些 API
    #路径名作为参数,您可以传递相对路径或绝对路径)
    debugSession.memory.loadProgram ("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\Launchpadc2000\\Debug\\Launchpadc2000.out")

    #设置断点
    address_main = debugSession.symbol.getAddress ("main")
    BP = debugSession.breakpoint.add(address)

    #检查程序的状态
    print ("a:"、debugSession.expression.evaluate ("a"))

    #Run 如果未在 main 处自动停止。 应在第一个 BP 处停止
    if (debugSession.expression.evaluate ("PC")!=地址):
    script.traceWrite ("PC 值等于主值。")
    其他:
    script.traceWrite ("PC 值不等于主值。")

    #运行目标。 应该在断点处停止。
    debugSession.target.run()

    #使用表达式获取当前的 PC 值
    NPC = debugSession.expression.evaluate ("PC")

    #Verify 我们在正确的地址停止。
    如果(NPC ==地址):
    script.traceWrite ("成功:在正确的位置停止")
    其他:
    script.traceWrite ("Fail:Expected halt at 0x"+ long.toHexString (address)+"、实际在0x"+ long.toHexString (NPC))停止
    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite ("测试失败!")
    script.traceEnd()
    system.exit(1);

    #全部已完成
    #debugSession.target.disconnect();
    #debugSession.terminate()
    #debugServer.stop()

    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite ("测试成功!")

    debugSession.target.run()

    #停止日志记录并退出。
    script.traceEnd()

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

    您还可以给我"LaunchpadC2000.out"可执行文件吗? 我将尝试从头开始运行脚本、看看我是否遇到任何问题。

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

    我无法  在此聊天框中更新.out 文件 Ki  

     

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

    您只需将文件拖放到编辑框即可。

    如果问题与隐私有关、您可以通过 E2E 私人消息进行发送

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

    你好,kii  

    我们需要将 CCS 工具与用于自动化的 ECU 测试工具 tractics 一起实施  

    能 与 ECU 测试工具集成并提供最佳方法

    因为 CCS 不与 ECU 测试工具直接兼容

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

    我们需要将 CCS 工具与用于自动化的 ECU 测试工具 tractics 一起实施  

    能 与 ECU 测试工具集成并提供最佳方法

    因为 CCS 不与 ECU 测试工具直接兼容

    [/报价]

    我没有 ECU 测试工具的相关经验、因此无法对此提供任何见解。

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

    您好、感谢您的回复

    我们有一个疑问。  

    我们是否能够获得安装在本地 PC 中的 CCS 工具的 TCP 端口号!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们能否获得安装在本地 PC 中的 CCS 工具的 TCP 端口号!

    此信息的用途是什么?

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

    HII Kii  

    在通过 DSS 脚本调试和写入 CCS 变量期间、.out 文件不会更新。  

    但在使用 CCS 工具进行手动调试和写入期间、.out 文件将更新为  

    请尽快澄清疑问!

    DSS 调试和编写脚本如下所示。

    //将 DSS 软件包导入我们的命名空间以在键入时保存
    正在导入软件包(Packages.com.ti.debug.engine.scripting)
    正在导入软件包(Packages.com.ti.ccstudio.scripting.environment)
    导入软件包(Packages.java.lang)

    //创建我们的脚本环境对象-它是任何脚本的主要入口点,
    //创建其他可脚本服务器和会话的工厂
    var script = ScriptingEnvironment.instance ()

    //在当前目录中创建日志文件以记录脚本执行
    script.traceBegin ("BreakpointsTestLog.xml"、"DefaultStylesheet.xsl")

    //设置超时
    script.setScriptTimeout(15000)

    //记录所有内容
    script.traceSetConsoleLevel (TraceLevel.all)
    script.traceSetFileLevel (TraceLevel.all)

    //获取调试服务器并启动调试会话
    debugserver = script.getServer ("DebugServer.1")
    debugServer.setConfig("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\LaunchpadC2000\\targetConfigs\\TMS320F28027.ccxml");
    debugSession = debugServer.openSession ("*"、"*")
    debugSession.target.connect();

    //加载程序
    //(脚本环境有一个工作文件夹的概念,并且对于所有将
    //路径名作为参数,您可以传递相对路径或绝对路径)
    debugSession.memory.loadProgram ("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\Launchpadc2000\\Debug\\Launchpadc2000.out")


    script.traceSetConsoleLevel (TraceLevel.info)
    Script.traceWrite ("调试会话已启动!!!!!!! ")

    VAR BP1 = debugSession.breakpoint.add('main.c',11);

    debugSession.target.run()

    var address = debugSession.symbol.getAddress ("A")
    var address2 = debugSession.symbol.getAddress ("b")

    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite (地址)
    script.traceWrite (addresss2)
    script.traceWrite ("地址已读取!!!!!!! ")

    //写入数据
    debugSession.memory.writeData (Memory.Page.program、address、[0x02]、16)

    //写入数据
    debugSession.memory.writeData (Memory.Page.program、address2、[0x05]、16)

    script.traceWrite ("写入的值!!!!!! ")

    //全部完成
    debugSession.target.disconnect();
    debugServer.stop()

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

    使用*。out 文件将会有所帮助。 您能给我提供一下吗? 如果您愿意、可以通过专有 E2E 消息发送。 只需进行 zip 压缩、然后拖动以编辑框以附加

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

    我已经在您的私人消息中共享了 Java 脚本,请检查。

    另一个支持。

    您能为 DSS 提供 Java 脚本库包吗?我们需要使用 ECU 测试工具实现自动化,使用这些 Java 脚本包在 ECU 测试工具中实现库吗? 它将会很有帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HII kii 我在您的私信中共享了 Java 脚本请检查。

    我将在这里回答。

    您可以为 DSS
    提供 Java 脚本库包

    有:

    • /ccs/ccs_base/DebugServer/packages/ti/dss/java/dss.jar
    • /ccs/ccs_base/DebugServer/packages/ti/dss/java/com.ti.ccstudio.scripting.environment_3.1.0.jar
    • /ccs/ccs_base/DebugServer/packages/ti/dss/java/com.ti.debug.engine_1.0.0.jar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您发送编修。  

    从您身边再提供一个支持  

    您能否在 LabVIEW.vi 中提供闪存程序。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在 LabVIEW.vi 中提供闪存程序。  [/报价]

    对不起、我不知道 LabView 的任何信息。

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

    HII Kee 感谢更新  

    目前我使用的是 XDS 200 JTAG 仿真器、目标是 TMDSEMU200-U、但使用 XDS 200调试探针目标创建新项目时未显示也未显示。 我在下面附上了图片。 请尽快回复!

      

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

    "target"是指您使用的器件、而不是调试探针(称为"连接")

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

    HII Kii  

    在通过 DSS 脚本调试和写入 CCS 变量期间、.out 文件不会更新。  

    但在使用 CCS 工具进行手动调试和写入期间、.out 文件将更新为  

    请尽快澄清疑问!

    DSS 调试和编写脚本如下所示。

    //将 DSS 软件包导入我们的命名空间以在键入时保存
    正在导入软件包(Packages.com.ti.debug.engine.scripting)
    正在导入软件包(Packages.com.ti.ccstudio.scripting.environment)
    导入软件包(Packages.java.lang)

    //创建我们的脚本环境对象-它是任何脚本的主要入口点,
    //创建其他可脚本服务器和会话的工厂
    var script = ScriptingEnvironment.instance ()

    //在当前目录中创建日志文件以记录脚本执行
    script.traceBegin ("BreakpointsTestLog.xml"、"DefaultStylesheet.xsl")

    //设置超时
    script.setScriptTimeout(15000)

    //记录所有内容
    script.traceSetConsoleLevel (TraceLevel.all)
    script.traceSetFileLevel (TraceLevel.all)

    //获取调试服务器并启动调试会话
    debugserver = script.getServer ("DebugServer.1")
    debugServer.setConfig("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\LaunchpadC2000\\targetConfigs\\TMS320F28027.ccxml");
    debugSession = debugServer.openSession ("*"、"*")
    debugSession.target.connect();

    //加载程序
    //(脚本环境有一个工作文件夹的概念,并且对于所有将
    //路径名作为参数,您可以传递相对路径或绝对路径)
    debugSession.memory.loadProgram ("C:\\ti\\ccs1240\\ccs\\eclipse\\workspace\\Launchpadc2000\\Debug\\Launchpadc2000.out")


    script.traceSetConsoleLevel (TraceLevel.info)
    Script.traceWrite ("调试会话已启动!!!!!!! ")

    VAR BP1 = debugSession.breakpoint.add('main.c',11);

    debugSession.target.run()

    var address = debugSession.symbol.getAddress ("A")
    var address2 = debugSession.symbol.getAddress ("b")

    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite (地址)
    script.traceWrite (addresss2)
    script.traceWrite ("地址已读取!!!!!!! ")

    //写入数据
    debugSession.memory.writeData (Memory.Page.program、address、[0x02]、16)

    //写入数据
    debugSession.memory.writeData (Memory.Page.program、address2、[0x05]、16)

    script.traceWrite ("写入的值!!!!!! ")

    //全部完成
    debugSession.target.disconnect();
    debugServer.stop()

    [/报价]

    感谢您的输出文件。 我能够运行上面的脚本。 它似乎完美地运行。 在调试模式下运行脚本时、可以看到"a"和"b"的变量分别使用正确的值2和5写入(双击图像以显示全尺寸):

    您是说在运行脚本时没有看到这种情况吗?

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

    是的、Kii 在运行 DSS 脚本.out 文件时未更新、但在手动测试中.out 文件正在更新。   

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

    你好,Kii 感谢更新!

    如何在 Code Composer Studio 中设置 TMDSEMU200-U 目标 CCS 项目?

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

    这到底意味着什么? 当我运行您的 DSS 脚本时、从我的角度来看、它运行得很好。 我不明白哪里有问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在 Code Composer Studio 中设置 TMDSEMU200-U 目标 CCS 项目?

    在"Connection"下、如下所示:

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

    你好、Kii  

    在手动调试.out 文件时其更新、我们可以在工作区的调试文件夹中看到 update .out 文件  

    在 Debug Server Scripting (DSS)中、我们在命令提示符执行中成功完成、但在执行 DSS 执行时.out 文件未在调试文件夹中更新  

    请帮助解决此问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ,但执行 DSS 时.out 文件未在调试文件夹中更新 [/报价]

    再说一次、我不明白这意味着什么!

    为什么要更新.out 文件? 我只需由 CCS 加载。

    DSS 脚本仅在文件中工作。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在手动调试.out 文件时其更新,我们可以在工作区的调试文件夹中看到更新.out 文件 

    或许视频有助于解释您的期望。 我想看看您所说的"在调试文件夹中查看 update .out 文件"的含义

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

    嗨、Kee、我有疑问  

    在 Code Composer Studio 中手动设置断点时,我们可以找出断点时间(例如执行所需的时间为毫秒)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 code composer studio 中手动设置断点时,我们是否能够找出断点时间(例如执行所需的时间(以毫秒为单位)

    请注意、此问题与原始问题完全无关。  

    我们建议您为新主题创建新主题。

    我现在将回答这个问题、但下次请创建新主题。

    至于您对基准测试的问题、我建议使用配置文件时钟:

    https://dev.ti.com/tirex/explore/node?node=A__ACh7aaTRwDWC-8ORL0EHMg__ccs_devtools__FUz-xrs__LATEST

    现在我们关闭该主题帖、您可以根据需要创建新主题帖。

    谢谢