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:使用 ofd 工具创建调用图时间接函数的详细信息命令

Guru**** 2391175 points
Other Parts Discussed in Thread: TMDSDOCK28335

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/938072/compiler-tms320f28335-detailed-information-command-for-indirect-function-when-creating-call-graph-using-ofd-tool

器件型号:TMS320F28335
主题中讨论的其他器件:TMDSDOCK28335

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

您好!

使用 ofd 工具创建调用图时、应使用什么命令来查看有关间接函数的详细信息?

我想向您展示为我提供一个示例的代码。

下面是生成的调用图中提到的内容。

"

以下函数已知包含间接函数调用、但
不要在配置中包含有关这些间接调用的任何信息
用--i_cfg=file 指定的文件。 运行"perldoc call_graph.pl 了解更多信息
信息。

"

谢谢、此致

韩文

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

    您正在使用 CG_xml 包中的实用程序 call_graph。  要查看文档、请使用您喜爱的 Web 浏览器打开文件 CG_xml_install_directory/index.htm。  单击脚本 call_graph.pl 的链接

    实用程序 call_graph 会告诉您哪些函数进行间接函数调用。  但它不能告诉您间接调用哪些函数。  您以配置文件的形式提供该信息、这些配置文件通过选项--i_cfg=name_of_configuration_file 提供给 call_graph。  有关详细信息、请参阅 call_graph 的文档。  请搜索标题为 间接函数调用配置文件的子章节。

    谢谢、此致、

    乔治

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


    感谢您的回复、George

    正如您告诉我的、我查看了 call_graph.pl 的文档。
    但是、我在使用该命令时遇到问题。

    用法: ofdXX -g -x  文件 | perl call_graph.pl [选项]

    The option I will use is --i_cfg=<file> : Configuration file for indirect function calls

    应输入什么文件 ?

    C:\ti\ccs910\ccs\tools\compiler\ti-cgt-C2000-18.12.2.LTS \bin\ofd2000.exe -x -g "C:\Users\Hans\Desktop\PLC2-3\TI\Testbed\Micrium \examples\TI\TMDSDOCK28335\OS2\ccs\Debug\Testbed.out"| Program\cg1.x86\i 文件- call_graph.pl (\ccs_1.00x)-1.x86\i:\ccs -1.00g:\ccs -1.00g:\cgm ">"C:\Users\Hans\Desktop\PLC2-3\TI_bin\CFG\Testbed_cg.txt

    您能否以该命令为例向我演示一下?

    谢谢、此致

    韩文

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

    [引用 user="Han SeungJae">应输入的文件是什么 ?[/报价]

    call_graph 选项--i_cfg 的一些示例文件位于 cG_xml 安装中。  在 cG_xml_install_directory\ofd 目录中查找这些文件...

    • arm_rts_indirect.txt
    • c2000_rts_indirect.txt
    • c55_rts_indirect.txt
    • c60_rts_indirect.txt
    • msp430_rts_indirect.txt
    • ti_rts_indirect.txt

    这些文件在我在第一篇文章中介绍的 call_graph 文档中进行了说明。  搜索标题为 Compiler RTS Functions 的配置文件的子章节。

    谢谢、此致、

    乔治

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

    我不是完全理解、所以我会再次与您联系。

    如果使用 call_graph.pl 创建的 CG 文件中有一个间接函数、您是否通过--I_cfg=定义间接函数 ?

    换句话说、我是否应该通过直接从 CG 文件中定义间接函数来创建配置文件?

    此致、

    韩文

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

    请考虑这个非常简单的示例。  这是一个进行间接函数调用的 C 函数。

    typedef void (* fp)();
    void Child1 ();
    void Child2 ();
    
    void parent (int arg)
    {
    fp function_pointer;
    
    function_pointer =(arg)? Child1:Child2;
    (* function_pointer)();
    } 

    实用程序 call_graph 可以指示父函数进行间接函数调用。  它会告诉您该输出...

    以下函数已知包含间接函数调用、但
    在
    使用--I_cfg=file 指定的配置文件中不包含有关这些间接调用的任何信息。 运行"perldoc call_graph.pl 以了解详情
    。
    ========================================================================================================================================================
    
    父项(_P) 

    此外、在图中、函数父级函数显示为不调用。

    因此,创建一个包含这些内容的文本文件...

    # indirect_calls.txt
    
    _parent:_Child1 _Child2 

    此配置文件指出、函数_parent 间接调用_Child1_Child2。  始终列出间接调用的所有函数。

    有关前导下划线的注释... 为 COFF ABI 编译时、需要使用这些下划线。  如果您是为 C28x 以外的任何 TI 器件构建的、则会使用 EABI、并且不需要这些前导下划线。  只要在 C28x 编译器中使用--abi=eabi,情况也是如此。

    调用 call_graph 时、请添加选项--i_cfg=inird_calls.txt。  下面是父级调用图的一部分...

    |||_parent:WCS = 8
    ||||_Child1:WCS = 2
    ||||_Child2:WCS = 2 

    由于配置文件的原因、该图现在显示父级调用了 Child1 Child2

    谢谢、此致、

    乔治

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

    现在我了解了。


    感谢您详细解释我令人沮丧的问题。

    此致、

    韩文