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.

[参考译文] CODECOMPOSER:调试服务器脚本编写:上传二进制文件时出现多个错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1391050/codecomposer-debug-server-scripting-multiple-errors-while-uploading-binaries

器件型号:CODECOMPOSER
Thread 中讨论的其他器件:TMS320C6678

工具与软件:

IDE:Code Composer Studio 版本12 |目标:TMS320C6678 |调试探针:Blackhawk XDS560v2系统跟踪


大家好、

我目前正在尝试实施基于以太网的自动化测试框架、以便测试我们的模块。 为此、我一直在使用调试服务器来连接到调试探针、并将二进制文件上传到目标的所有内核。 总体而言、这种方法可行、但它不像我希望的那样可靠、因为有时我会收到各种错误消息、例如:

严重:文件:/path/to/binary.elf:加载失败
严重:C66xx_0:无法终止内存下载

或者

严重:C66xx_2:错误:(错误-6311) PRSC 模块无法写入寄存器。 (仿真包9.13.0.00201)

或者

连接到目标时出错:(错误-1143 @ 0x0)
设备内核挂起。 调试器已强制器件进入就绪状态并恢复了调试控制、但您的应用程序的状态现在已损坏。 您应该能够对存储器和寄存器进行有限的访问、但可能需要复位器件才能进一步调试。
仿真软件包9.2.0.00002)

各种错误消息使我很难缩小此问题的原因。 我尝试了以下操作以尽量减少问题(很少成功或没有成功):

-降低时钟速度(TCLK 频率)
-提出 TCLK 以便查看我是否可以更可靠地重现错误
-尝试了一个较旧的 CCS 版本(V8)
-编译了不同的二进制文件并上传了它们
-用 CCS 上传了相同的二进制文件(大部分时间都是成功的),然后通过调试服务器尝试它(大部分时间都不成功)
-对电路板和调试探针进行下电上电
-已尝试使用其他电路板和调试探针

您是否知道到底是什么原因导致了这个问题/如何提高调试器的可靠性?

谢谢!

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

    您好!

    以下文档中描述了-6311和-1143错误:

    https://dev.ti.com/tirex/explore/node?node=A__ANoamrIZPWD2-6T-NDDWGg__ccs_devtools__FUz-xrs__LATEST

    在这两种情况下、问题通常是由于器件/目标处于不良状态所致。 这可能是正在运行的应用程序的问题。  

    ]-使用 CCS 上传了相同的二进制文件(大部分时间都成功)、然后通过调试服务器进行尝试(大部分时间都失败)

    根据上述注释、问题似乎很少在 CCS IDE 中发生、但在 DSS 中经常发生? 考虑到 CCS IDE 和 DSS 将使用下面相同的调试器、问题可能与 DSS 脚本类似。

    Ki

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

    您好 Ki、

    错误-6311和-1143确实是由我的终端配置错误导致的、导致我的器件/目标处于不良状态。 感谢您的宝贵意见。

    但我无法确定我的二进制上传失败的原因。 附件是我的客户端和服务器脚本的代码片段。

    #评估符号命令配置(客户端代码片段)
    我的@cmdEluate = MAP{
       "名称"=>"   评估"、
       "Exprs"=>{"'utest.cpp':avgValue"=> UNDEF、"'utest.cpp'::maxValue"=> UNDEF、
                "'utest.cpp':minValue"=> undef、"'utest.cpp'::hits"=> undef、
                "'utest.cpp'::error"=> undef}、
       "core"   =>$_、
       "func"   =>$func、
    }(0..$coresN);

    //服务器代码片段
    函数 loadCommandHandler(server, cmd){
       请尝试{
           var Session = server.sessions[cmd.core];
           Session.memory.loadProgram (cmd.program,[cmd.args]);)
           打印(cmd.program);
           返回{"status":"OK"};
       }捕获(err){
           返回{"status":"fail"、"message":""+""+ err};                  
       }    
    }

    我已经验证了提供的参数是正确的、并且我一直在使用 DSS API 提供的函数。

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

    您使用的是加载命令的自定义实现。 我想您要向 main 传递参数吗?

    在任何情况下、我们都要做一些注释:

    无论如何,这种方法是有效的,但它并不像我希望的那样可靠,因为有时我会收到各种错误消息,如:

    严重:文件:/path/to/binary.elf:加载失败
    严重:C66xx_0:无法终止内存下载

    您提到该误差是偶发的。 它失败的频率有多高?

    当使用 CCS IDE 进行调试时、同一个可执行文件是否始终成功加载?