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.

[参考译文] TMS320F28335:C28x 目标上的代码覆盖

Guru**** 2542590 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035201/tms320f28335-code-coverage-on-c28x-target

器件型号:TMS320F28335

我正在尝试为从 DSS 脚本执行的代码生成代码覆盖率报告。 我遇到以下错误:

警告:C28xx:自动运行:无法设置目标未作为断点运行:启用此函数时出错:无法使用现有的 AET 资源完成此任务。

我确实看到了这个线程 https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/489225/c28xx-autorun-target-not-run-as-breakpoint-could-not-be-set-error-enabling-this-function-this-task-cannot-be-accomplished-with-the-existing-aet-resources

我需要禁用其他硬件断点才能使代码覆盖正常工作。  我取消选中了一些提到需要断点的选项、包括启用 CIO 函数(尽管在进一步阅读代码覆盖率文档时可能需要断点吗?) 我已经发布了自动运行和程序加载选项的屏幕截图、我是否错过了什么? 我从 DSS 中删除内容的事实是否与之相关?

感谢您的帮助!

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

    您好!

    [引用 userid="485016" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035201/tms320f28335-code-coverage-on-c28x-target "]我从 DSS 中删除内容与之有任何关系吗?

    是的。

    从系统控制台运行 DSS 时、通过 CCS GUI 修改调试设置不会产生任何影响。 您需要确保使用 DSS API 从相同的 DSS 脚本修改这些设置。

    https://software-dl.ti.com/ccs/esd/documents/users_guide/sdto_dss_handbook.html#debugger-properties

    谢谢

    Ki

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

    谢谢 Ki、我添加了以下代码行、错误消息消失了。 很遗憾、通过 DSS 运行脚本后、我仍然看不到 pprofout.pdat 文件。 是否还有其他步骤我丢失了?

    session.options.setBoolean("HaltOnConnect", false)
    session.options.setBoolean("AutoRunToLabelOnRestart", false)
    session.options.setBoolean("AutoRunToLabelOnReset", false)

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

    编译器代码覆盖功能依赖于 C I/O、因此请确保您没有禁用 C I/O 断点(必须保持启用"启用 C I/O 函数使用"选项的启用状态)。 此外,程序必须从 RTS 库到达 exit()例程。

    假设考虑了上述情况、您是否能够在使用 CCS IDE 手动运行 pprofout.pdat 时生成 pprofout.pdat?

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

    感谢 Ki,这确实是发生的事情。 奇怪的是、我无法让我的节目退出。 相反、我调用 ti stop profile 函数并在虚假函数 testExit 处放置断点、以将程序的控制权返回到 DSS。 还有其他一些奇怪的行为,但我还是能越过它。 现在一切都很好,谢谢!

    void main(void)
    {
        uint16_t i;
    
        for(i=0; i < MAX_TESTS; i++)
        {
            runTest();
        }
    
        _TI_stop_pprof_collection();
    
        testExit();
    }

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

    我遇到了另一个问题。 当我尝试使用此文档 https://software-dl.ti.com/ccs/esd/documents/application_notes/appnote-code_coverage_compiler.html 中的分析步骤时 、我不会创建任何.csv 文件。

    我已确认每次运行 DSS 脚本时都会创建.pprofout.pdat 文件。 在分析配置下进行编译时、确实会生成.pprofout.prf 文件。

    我想知道、我运行代码的方式是否会导致问题、因为我的代码的行为与正常程序略有不同。 我创建了执行指针地址中存储的函数的单元测试框架。 使用 DSS 运行具有断点的循环、每次通过 DSS 向电路板写入不同的函数和相关参数、然后运行直至其循环、从电路板中获取结果、写入新函数和参数冲洗并重复...

    我必须做的一件事是禁用条件链接、否则链接器不认为正在从主代码调用任何内容。 那么、我想知道我执行代码的方式是否会对生成的分析产生影响? 我想至少应该为 main 创建一个.csv 文件。 我可以通过检查电路板上的存储器和寄存器是如何变化的来确认我所有其他文件中的代码是否确实得到了执行。

    有什么想法吗?

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

    您能否共享 pdat 和 PRF 文件?

    如果您不想在公共论坛上分享、请与我开始私人 E2E 对话。

    还指定您使用的确切 CCS 和编译器版本。

    谢谢

    Ki

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

    我得到了文件。 谢谢。

    我怀疑问题是源文件路径中的空格。 在  某些情况下、CCS 和相关编译工具都存在一些正确处理它的问题。

    我做了一个快速实验、当我在具有空格的目录中有源文件时、我也无法生成 csv 文件。 如果我将源文件移动到没有空格的路径、则可以生成 csv 文件。 您也会这样吗?

    谢谢

    Ki

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

    非常感谢 Ki!

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

    感谢您的确认。 我将为此文件一个错误。

    Ki