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.

[参考译文] 编译器/TMS320F2.8377万D:保留库中的代码段

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/579159/compiler-tms320f28377d-retain-a-section-of-code-from-a-library

部件号:TMS320F2.8377万D

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

您好,

我正在处理一个生成.lib的库项目。 我在汇编中有一段代码写入了一个汇编文件,我想在另一个项目中保留这些代码。 这些装配体部分中定义的函数不会被直接调用。

我尝试保留的部分位于库中,并且在本地范围内。 由于#pragma Retain在汇编中,所以它不起作用。 我确实研究了#pragma在编译汇编文件中生成的内容,并复制了该文件,但它仍然不起作用。
附件是我在装配体文件中添加的内容。
遗憾的是,项目中包含库的部分为空。 数据/代码不会保留在项目中。
如何将库中的这一部分代码保留到另一个CCS项目中?
SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在主CCS项目中,添加链接器选项--UNDEF_SYM=_STL_CLA_SEG start  请阅读 C2000组装工具手册中的该选项。 注意:不需要保留(pragma或指令)。

    对于阅读此线程的其他人... 如果遇到这种情况,并且要强制构建的库函数是用C/C++编写的,则需要考虑其他详细信息。  C2000工具版本COFF .x.LTS和更低版本仅支持16.9 ABI。  在ABI下,在汇编中写入时,用C/C++编写的符号的开头会添加下划线。  所有其它TI编译器默认使用较新的EABI。  在EABI下,符号在C/C++和汇编中的书写方式相同。  在这种情况下,可以使用--UNDEF_SYM=lib_function_to_force之类的内容。

    谢谢,此致,

    -George

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

    我在一个ASM文件中有28个部分。

    看来我只需要为一个部分执行此操作,它就可以保留所有这些内容。 是这样吗?

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

    COFF ABI正确。  但不适用于C2000工具版本16.12 .0.STS中引入的新EABI。  在EABI下,链接程序在删除未引用的部分方面更积极。  在EABI下,所有28个部分都需要--UNDEF_SYM。  从命令行进行管理是不实际的。  将它们全部放在专用的命令文件中,然后将该命令文件提供给链接程序。

    有28个部分未引用是很少见的。  通常只有一个,该部分包含中断向量表。

    谢谢,此致,

    -George

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

    我包含的部分来自CLA汇编文件。 现在我收到一些链接器错误。

    链接>

    内部错误:16.9 C:\ti\ccsv7\tools\compiler\ti-CGT-C2000_C2000_CTI.1.LTS\bin\lnk2000.exe无法2000无法分配2000.分配内存

    这是由编译器本身的缺陷引起的。 TI客户
    支持人员可能会建议一种解决方法来避免这种情况。

    升级到最新版本的编译器可以解决此问题。

    在E2E支持论坛中联系TI,网址 为http://e2e.ti.com
    “开发工具”,“TI C/C++编译器”。 请参阅标题为的链接
    "提交问题"。 包括整个错误消息和
    选项--preproc_with注释时创建的.pp文件的副本
    (-PPC)。


    >>编译失败
    Makefile:152:目标'test_application.out '的配方失败
    gmake:***[test_application.ut]错误1
    gmake:由于错误,目标'all'没有重制。

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

    使用-PPC标志后,我得到了这个
    >>错误:无源文件,无任何操作

    它告诉我没有生成依赖关系图。

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

    asm文件中有三个部分相互作用。 ASM代码在这3个不同的代码段之间进行分支和调用/返回。

    在为这三个部分中的任何一个包含链接器命令选项标志后,我收到链接错误。 并且项目无法正确链接。

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

    不幸的是,在.方面取得进展的唯一途径

    Sal Pezzino 说:
    内部错误:C:16.9 \ti\ccsv7\tools\compiler\ti-CGT-C2000_PESC.1.LTS\bin\lnk2000.exe无法2000.无法分配内存

    .是自己重现这种行为。  为此,我们需要您提供一个测试案例。  在这种特殊情况下,我们需要您提交完整的CCS项目。   详情请参阅此帖子。

    谢谢,此致,

    -George

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

    您可以在STA_F2837xD_RAM_CPU!_CLASWBIST.cmd中看到问题-UNDEF_SYM

    SAL

    e2e.ti.com/.../claswbist_5F00_LinkError.zip

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

    我无法重现此问题。  我不确定原因,但链接程序命令文件不存在。  请尝试使用 此论坛帖子中描述的方法收集项目

    谢谢,此致,

    -George

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

    我第一次关注论坛帖子。 我做了存档并创建了一个ZIP。

    e2e.ti.com/.../STA_5F00_F2837xD_5F00_RAM_5F00_CPU1.zip