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.

[参考译文] TMS320F28075:尝试使用 TI C2000编译器 v20.12代码覆盖 API 未定义

Guru**** 2864540 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1073691/tms320f28075-trying-to-use-the-ti-c2000-compiler-v20-12-code-coverage-apis-are-undefined

部件号:TMS320F28075
“线程:C2000WARE测试”中讨论的其它部件

当 我的应用程序在连续调度循环中运行时,我正在尝试使用代码覆盖 API _TI_STOP_Pprof_collection()。  我在文件顶部添加了 extern void _TI_STOP_pprof_collection(void),但链接器找不到该函数。  我错过了什么步骤?

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

    您好,

    您是否包括用于 C28x 的 RTS 库? 它是 RTS 库的一部分。

    谢谢

    Ki

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

    请提供更多详细信息,说明 您使用的选项以及您看到的错误。  我无法再现您的结果。

    此致
    格雷格

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

    Ki 和 GregM 您好,下面是我的“收集”项目属性 C2000链接器>文件搜索路径的链接器包括库文件部分

    ${COM_TI_BIOS_libraries}

    ${COM_TI_C2000WARE_SOFTWARE_PACKAGE_libraries}

    驱动程序 lib.lib

    libc.a

    将<dir>添加到库搜索路径:

    ${COM_TI_BIOS_library_path}

    ${com_ti_C2000WARE_software_package_library_path}

    ${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}\driverlib\f2807x\driverlib\CCS\Debug

    ${cG_tool_root}/lib -> C:\ti\ccs1040\cs\tools\compiler\ti-CGT-C2000_20.12.0.STS\lib

    ${cG_tool_root}/包括

    文件夹 C:\ti\ccs1040\CCs\tools\compiler\ti-CGT-C2000_20.12.0.STS\lib 包含

    rts2800_fpu32.lib

    rts2800_fpu32_eabi.lib

    rts2800_fpu64_eabi.lib

    rts2800_ml.lib

    rts2800_ml_eabi.lib

    我们正在使用输出文件格式 eabi (ELF)

    ****项目 XXX 的配置集合构建****

    "C:\\ti\\ccs1040\\CCs\utils\\bin\\gmake "-k -j 4 all -O

    构建目标:“xxx.out”
    调用:C2000链接器
    c:/ti/ccs1040/cs/tools/compiler/ti-CGT-C2000_20.12.0.STS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fput_support=fpu32 --TCM_support=tmu0 --VCG_support=vcu2 --advisance:-ccdi_supervisor---c280_diag_-ci-vidi="-c_ecning-c_decori_ecure-v-c_-cidi="-c_ecning-c-c-c-v-v-v-vecnecnecning-v-v-v-v-v-v-v-v-v-cnecnecnecnecnecnecnecnecnecnecnecnecnecor-c-c-c-c-c-c-c-c-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-cnecnecnecor
    <linking>

    未定义的第一个引用
    文件中的符号
    --- -----
    _TI_STOP_pprof_collection()./sources/XXX.cpp

    错误#10234-D:未解析的符号仍然存在
    错误10010:链接期间遇到错误;未生成“XXX.OUT”

    >>编译失败
    Makefile:210:目标“XXX.OUT”的配方失败
    gmake [1]:***[XXX.OUT ]错误1
    Makefile:206:目标“全部”的配方失败
    gmake:***[所有]错误2.

    ****构建完成****

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

    我仍然不确定导致您问题的原因,因为我无法重现,但是,您不应该在链接器选项中同时包括以下两项:

    lrts2800_fpu32_eabi.lib -llibc.a

    更新链接器选项以删除 包含 rts2800_fpu32_eabi.lib 的内容,而只包括 libc.a

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

    Larry,

    请注意,从 C 代码调用时,函数名称中需要前面的下划线:

    _TI_STOP_Pprof_collection();

    我能在函数调用处看到您的示例 C 代码吗?

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

    我的链接器选项中只定义了 DRIVER.lib.lib 和 libc.a。  我已将搜索路径设置为 RTS 库文件的位置。

    下面是我的 c++代码示例:

    extern void _TI_STOP_Pprof_collection(void);

    int main (const int argc,const char *argv[])

    printf("Starting tests...\n");

    //创建启动对象
    startup_instance =新启动();

    _TI_STOP_Pprof_collection();

    //准备好运行启动任务
    startup_instance->start();

    //启动 RTOS
    BIOS_START();

    // TODO 重启处理器

    返回0;
    }

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

    驱动程序 lib.lib

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

    我发现了这个问题,这是因为我在 C++环境中使用 profile 函数,为了使用 C 链接,需要用 extern“C”将外部定义换为外部“C”。 我需要此功能,因为我想将代码覆盖范围添加到我们的设备测试套件中。

    非常感谢您的帮助!