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/TMS320F280049:CCS 调试服务器脚本编写-连接到正在运行的器件

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/908884/ccs-tms320f280049-ccs-debug-server-scripting---connect-to-running-device

器件型号:TMS320F280049

工具/软件:Code Composer Studio

我有一个具有180 Piccolo F280049的大型模块化转换器。 对于编程和调试、我有18个 XDS110。 每个 XDS110通过 JTAG 链连接到10个微控制器。 所有控制器都使用相同的软件。 因此、我使用 Code Composer 调试服务器脚本(脚本控制台)中的 Java 脚本加载程序。

开始时,我使用了以下 Java 脚本:

debugSession1 = debugServer.openSession("RK_111_Probe"、"C28xx_CPU1_1");
debugSession1.target.connect();
debugSession1.memory.loadProgram( programToLoad );
debugSession1.target.runAsynch(); 

这适用于10、20或30个器件、没有任何问题。 但我注意到、当我增加器件数量时、会变得越来越慢。

因此我添加了2行:

debugSession1.target.disconnect();
debugSession1.terminate(); 

现在、对90个器件进行编程大约需要10分钟。 这完全没问题。

问题是、现在我再也看不到我的转换器的任何信息了。 那么、我的第一个问题是:如何通过调试服务器脚本加载符号并连接到正在运行的器件?

我发现了如下内容:

debugSession1.Symbol.load( programToLoad ); 

但这不起作用。

旁边有第二个问题:如何将 Java 脚本中的文本输出到 CCS 中的控制台窗口?

我尝试了:

var script = ScriptingEnvironment.instance();
//"traceWrite"
script.traceSetConsoleLevel (TraceLevel。all)
script.traceWrite ("test traceWrite!")
//“println”
System.out.println (“测试 println!” );

但没有什么工作。

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

    我忘记添加一个完整的示例文件。 在示例中、我对30个器件进行了编程。  文件的原始名称是 LoadProgram_ti.js、但结束的 js 不受此论坛支持、因此我使用了"JSL"。

    e2e.ti.com/.../LoadProgram_5F00_ti.jsl

    而不是。 要´m 此 Java 脚本和大目标配置、请使用 python 脚本。  

    PS:无法使用 Firefox 下载文件的方式是什么?

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

    您好、Ludwig、

    [引用用户="Ludwig Schlegel"]

    那么、我的第一个问题是:如何通过调试服务器脚本加载符号并连接到正在运行的器件?

    我发现了如下内容:

    1
    debugSession1.Symbol.load( programToLoad );

    但这不起作用。

    [/报价]

    这应该起作用。 以上行将仅将符号加载到调试器中。 然后、您应该能够在之后调用 target.connect。 您是否收到一些失败消息? 如果不是、则生成详细的 DSS 日志以查看 API 调用是否成功。

    [引用 USER="Ludwig Schlegel"]旁边有第二个问题:如何将 Java 脚本中的文本输出到 CCS 中的控制台窗口?

    DSS traceWrite、javascript 打印和 Java println 会将消息打印到 CCS Scripting Console。 它们不会进入 CCS 调试控制台(也不能像这样重定向)。 调试器消息、C/IO、GEL 就会打印出来。

    谢谢

    Ki

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

    关于"加载符号":

    我得到以下错误:

    TypeError:无法调用未定义(... connect_111_mod.js#54)

    第54行包含:

    debugSession1.Symbol.load( programToLoad );

    其中:

    VAR 程序加载="... F280049/CPU1_RAM/base_F280049.out";

    我用于使用其他脚本加载程序的相同变量"programToLoad":

    debugSession1.memory.loadProgram( programToLoad );

    关于打印文本:

    仅在脚本n´t 中查看消息不会有问题、但我看不到任何消息。 没有错误。

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

    [引用用户="Ludwig Schlegel"]

    我忘记添加一个完整的示例文件。 在示例中、我对30个器件进行了编程。  文件的原始名称是 LoadProgram_ti.js、但结束的 js 不受此论坛支持、因此我使用了"JSL"。

    LoadProgram_ti.JSL

    [/报价]

    此文件的链接已断开。 您可以重新发布吗? 尝试使用*。txt 扩展名

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

    e2e.ti.com/.../LoadProgram_5F00_ti.txt

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

    [引用用户="Ludwig Schlegel"]

    我得到以下错误:

    TypeError:无法调用未定义(... connect_111_mod.js#54)

    第54行包含:

    debugSession1.Symbol.load( programToLoad );

    [/报价]

    符号中的"s"应为小写:

    debugSession1.symbol.load( programToLoad );

    [引用用户="Ludwig Schlegel"]

    关于打印文本:

    仅在脚本n´t 中查看消息不会有问题、但我看不到任何消息。 没有错误。

    [/报价]

    使用 javascript "print"调用

    print("string to print");

    谢谢

    Ki

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

    您好!

    "print"-命令正在工作。 谢谢你!!

    如果我用小写的"s"在符号中使用、则不会出现错误、但调试会话不起作用。 在 CCS 的调试窗口中、我可以看到与控制器有一个开放的连接。 但没有绿色的三角形、这表明控制器正在运行。 只有文本"0x3FB02A (未定义符号)"。

    我的一个控制器脚本:

    //将 DSS 软件包导入我们的命名空间以保存在键入
    importPackage (Packages.com.ti.debug.engine.scripting)
    importPackage (Packages.com.ti.ccstudio.scripting.environment)
    importPackage (Packages.java.lang)
    
    //可配置参数
    var deviceCCXMLFile ="C:/SVN/Software/F280049/targetConfigs/TMS320F280049_converter1_all.ccxml;
    var programToLoad ="C:/SVN/Software/F280049/CPU1_RAM/Basis_F280049.out;
    
    //创建我们的脚本环境对象-这是任何脚本的主要入口点,
    //创建其他脚本服务器和会话的工厂
    var script = ScriptingEnvironment.instance();
    
    //创建调试服务器
    var debugServer = script.getServer ("DebugServer.1");
    
    //设置器件 ccxml
    debugServer.setConfig (deviceCCXMLFile);
    
    //打开调试会话
    debugSession1 = debugServer.openSession("RK_111_Probe"、"C28xx_CPU1_1");
    
    //连接到目标
    debugSession1.target.connect();
    
    //仅加载符号
    debugSession1.symbol.load( programToLoad );
    
    //运行程序
    debugSession1.target.runAsynch(); 

    如果我按 F8键使控制器运行、则消息将停止1秒、然后再次出现 Rised。

    也许"debugSession1.target.runAsynch();"错了。 有趣的是、当我细分这条线时、行为不会改变。

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

    [引用 USER="Ludwig Schlegel">但调试会话不起作用。 在 CCS 的调试窗口中、我可以看到与控制器有一个开放的连接。 但没有绿色的三角形、这表明控制器正在运行。 只有文本"0x3FB02A (未定义符号)"。

    您能否发布这方面的屏幕截图?

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

    连接后:

    按下绿色的"播放"/"运行"按钮后:

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

    尝试运行后、地址中的指令是什么? 它看起来像遇到一个异常。 如果打开 模块视图、您是否看到已成功加载的符号?

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

    符号已成功加载。 我可以在 Moules 视图中找到 main()等。 但不幸的是,我在这个女演员找不到任何东西。

    顺便说一下:如果我加载程序并使用 我在2020年5月29日发布的脚本运行它、那么在编辑器视图中会打开一个新窗口。 和以下文本。

    在地址"0x3fc7a5"处中断、没有可用的调试信息、或者在程序代码之外。

    这就是所谓的"源代码未找到编辑器"。

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

    [引用 USER="Ludwig Schlegel"]在地址"0x3fc7a5"处或程序代码之外没有可用调试信息的中断。

    该地址在 ROM 中的某个位置。 请参阅以下 Devin 文章:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/766445?CCS-LAUNCHXL-F280049C-Break-at-address-0x3fc7a5-with-no-debug-information-available

    他提供了有关启动手动调试启动和手动加载代码的分步说明。 我不确定这是否会对您的案例有所帮助。 但关键是程序遇到了一些异常。 我无法解释为什么需要进行一些调试。 但这超出了我的专业知识范围。  

    我建议在 C2000论坛中开始新的主题。 那里的专家可以提供最好的帮助。

    谢谢

    Ki

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

    有关如何在脚本控制台中打印文本的问题只是一个偶然的问题。 我刚刚将您的重播标记为"已恢复"、以标志重要的一步。

    此帖子的主要目的是连接到 runnig 器件。 这还没有解决。 您能否通过将此主题转发给该领域的专家来运行此主题?

    Devin 的帖子与我的想法没有太大关系。 有人提出了一些一般性问题、以使调试运行。

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

    [引用用户="Ludwig Schlegel">此帖子的主要目的是连接到 runnig 设备。 这还没有解决。 您能否通过将此主题转发给此领域的专家来运行此主题?

    这主要是什么问题? 是否要以非插入方式连接到目标(并使其保持运行)? 或者、当您连接并且目标停止时、是否会在上述意外位置停止?

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

    您好!

    我希望以非插入式方式连接到目标并使其保持运行。 n´t、如上所示、当我尝试执行此操作时、我不会获得正在运行的调试连接。 在屏幕截图中所示的状态下、器件仍处于运行状态。 但我n´t 获取调试信息。 我n´t 知道一些变量的值、但我看不到它们。

    如何获得完全运行的调试连接?

    而不是。 我只是注意到寄存器值已更新。 我在控制器上有一个切换引脚。 我可以看到"GpioDataRegs.GPADAT.bit.GPIO8"是如何切换的。 但所有变量都是零、不会更新。

    路德维希

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

    [引用 user="Ludwig Schlegel"]我希望以非插入式方式连接到目标并使其保持运行

    默认情况下、CCS 将在连接时停止目标。 另请注意、GEL 启动文件中可能存在一些 GEL 操作、这些操作会在连接时停止目标。 要确保它是非侵入式连接、请执行以下操作:

    1) 1)修改默认调试器行为以禁用连接时的自动停止:

    如何从 DSS 执行此操作? 请参阅 :https://software-dl.ti.com/ccs/esd/documents/users_guide/sdto_dss_handbook.html#debugger-properties

    2) 2)从目标连接中删除 GEL 文件: https://software-dl.ti.com/ccs/esd/documents/users_guide/gel/targetconfig.html

    谢谢

    Ki

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

    您好!

    感谢你的答复。

    关于您的第一点:

    我尝试了以下选项之一或组合:

    debugSession.options.setBoolean("HaltOnConnect",false)
    debugSession.options.setBoolean("ClearBreakpointsOnLoad",true);
    debugSession.options.setBoolean("AutoRunToLabelOnRestart",false);
    debugSession.options.setBoolean("AutoRunToLabelOnReset",false);
    debugSession.options.setString("AutoRunToLabelName",""); 

    但没有什么能帮助我。

    关于您的第二点:

    我n´t 移除 GEL 文件。 因为目标配置文件中没有 GEL 文件。 此信息位于 f280049.xml 中。 此文件位于 C:\ti\ccs920\ccs\ccs_base\con\targetdb\devices 中。

    您说:"我建议在 C2000论坛中开始新的主题。 那里的专家可以提供最好的帮助。"

    我做到了。 => https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/913519/3375704

    路德维希

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

    [n´t user="Ludwig Schlegel">我无法删除 GEL 文件。 因为目标配置文件中没有 GEL 文件。 此信息位于 f280049.xml 中。 此文件位于 C:\ti\ccs920\ccs\ccs_base\con\targetdb\devices 中。[/quot]

    当您在 CCS 中打开 CCXML 文件时、初始化脚本字段是否为空白?

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

    当我从该 CPU 中删除"初始化脚本"/"GEL 文件"、然后保存配置时、我会得到以下结果:

    因此、以某种方式自动将"..\targetConfigs"添加到那里。 不管怎样、我尝试连接到该器件。 我真的很惊讶、器件现在正在运行。 如以下屏幕截图所示:

    遗憾的是、变量的值仍不会更新。 :-)

    因此、问题似乎是通过某种方式连接到 GEL 文件。 但简单地将其删除并不是正确的解决方案。

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

    是的、删除 GEL 文件会有所帮助、因为 GEL 文件可以执行需要暂停 targetd 的所有类型的目标操作。

    查看我在另一个主题中的回复、了解示例脚本和视频。

    但斯克

    Ki

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

    好的、那么我们可能会将所有对话转换为新主题: https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/913519/3382908

    ´s 我和其他人阅读此内容更容易...