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.

[参考译文] 编译器/AWR1843:使用-gen_profile_info 进行评测、以获取代码覆盖报告

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/943512/compiler-awr1843-profiling-with---gen_profile_info-for-code-coverage-report

器件型号:AWR1843

工具/软件:TI C/C++编译器

您好!  

我正在命令行中使用外部 makefile 构建 TI 项目。 我仅使用 CCS 加载程序、调试和生成结果。 对于代码覆盖、我知道在编译软件时必须包含--gen_profile_info。 但是、在编译之后、当我在硬件上执行程序时、不会生成.pdat 文件。  使用 C6000编译器 ti-cgt-C6000_8.3.3。 我的目标是生成代码覆盖率报告。

1.我知道 API  _TI_start_pprof_collection()和 _TI_stop_pprof_collection()负责生成分析数据。

我是否必须在我的应用程序源代码中显式调用这些 API?  

2.我是否应该为 .ppdata 段分配存储器的显性?

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

    [引用用户="6449995"]

    1.我知道 API  _TI_start_pprof_collection()和 _TI_stop_pprof_collection()负责生成分析数据。

    我是否必须在我的应用程序源代码中显式调用这些 API?  

    [/报价]

    在实践中、您需要显式调用_TI_stop_pprof_collection。  默认情况下、性能评测由启动代码启动、性能评测由清理代码结束并转储。  此代码来自编译器 RTS 库。  但是、许多嵌入式程序永远不会停止执行、因此清理代码永远也不会执行。  在这种常见情况下、您需要显式调用_TI_stop_pprof_collection。

    [引用 user="6449995"]2. 我是否应该为 .ppdata 段分配存储器的显性?

    是的。

    谢谢、此致、

    乔治

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

    您好!

    我尝试为.ppdata 分配内存段

    ".ppdata:{}> L2SRAM_UMAP0 | L2SRAM_UMAP1、palign (32)"

    但当我查看.map 文件时、它不会被分配。

    我正在使用毫米波 SDK03_04、尝试使用"objdothwa"的 TI DSP_HWA 独立单元测试用例来生成代码覆盖报告。

    请从映射文件中找到以下内容的地址值、这样我就可以知道没有为分析器分配内存。

    FFFFFFFF __TI_pprof_out_hndl
    FFFFFFFF __TI_PRof _DATA_SIZE
    FFFFFFFF _TI_PROD_DATA_START

    请告诉我我我出错了吗?

    此外、我无法调试"outprofile.c"、"pprofile_cio .c"、"pprofile_user.c"文件、因为我无法在 CSS 中创建断点。 我收到错误"No code is associated with xxx in any loaded symbols。" 这些文件也未在模块视图下列出。 我认为他们负责创建 pdat 文件、应该由启动代码调用吗?  

    另外、如何检查生成的代码是否检测了在将--gen_profile_info 添加到编译器标记后添加的代码?  

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

    [报价用户="6449995"]您能否告诉我我出错了?

    最好的解释是您在构建时没有 --gen_profile_info。  是这样吗?

    [引用 user="6449995"]此外,我无法调试文件"outprof.c"、"pprof_cIO.c"、"pprof_user.c

    同样、最好的解释是您在构建时没有 --gen_profile_info。

    谢谢、此致、

    乔治

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

    很抱歉、但我仍然看不到问题的原因。   

    您使用自己的 make 文件进行编译。  请对所有文件执行完整的重建、但使用 make 选项、这会导致转储编译命令但不执行。  对于 gmake、此选项为-n  在文本文件中捕获这些命令。  确保使用文件扩展名.txt。  将该文件附加到下一个帖子。  我不能保证这将揭示问题的原因。  但这应该让我提出更好的问题。

    [引用 user="6449995"]我尝试    在主函数中添加_TI_start_pprof_collection 和_TI_stop_pprof_collection(),但由于它们缺少声明,我收到错误" 错误#225-D:函数"_TI_start_pprof_collection"隐式声明"

    通常、这只是一个警告。  但是、由于您使用--emit_warnings _as _errors 进行编译、因此这是一个错误。  为了避免出现此问题、请将这些函数原型添加到所有调用这些函数的源文件所包含的头文件中。

    void _TI_start_pprof_collection();
    void _TI_stop_pprof_collection(); 

    谢谢、此致、

    乔治