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.

[参考译文] 编译器/TMS320C6713B:如何重新构建CSL库

Guru**** 2394295 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/621504/compiler-tms320c6713b-how-to-re-build-the-csl-library

部件号:TMS320C6713B

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

e2e.ti.com/.../dsk6713bsl_5F00_test.zipTMS320C6713</s>6713
Spectrum Digital DSK6713

我正在构建一个简单的应用程序,从McBSP0读取MEM Mic。

我要使用API McBSP_open(),McBSP_Read(),McBSP_write(),McBSP_Close()。

我包括了库:

libc.a
“E:\ti\C6xCSL\lib_3x\csl6713.lib”TMS320C6000芯片支持库(CSL),2.31 .00.16 2006年4月5日。
"e:\ti\dsk6713\lib\dsk6713bsl.lib" Spectrum6713 Spectrum Digital DSK6713库

在CCS版本:7.2 .0.0.0013万 中,我重建项目。
我收到了有关csl6713.lib和dsk6713bsl.lib库的警告。

'正在构建目标:mms_mics.out '
'调用:C6000链接器'
e:/ti/ccsv7/tools/compiler/C6000_obj.22/bin/cl6x" 7.4 -mv6700 --abi=coffabi -g --define=chip_6713 --define=C6713 --cmd_wrap=off ---obj_warning=225 --display_error_number -z -mms_mics.cdi_exp.m/subs/heap-exp.mip_exclip_ul_ex-c_exclip_ex-c_web_exp.ip_ex-c_exclip_ex-c_exp.ip_exp.ip_ex-c_exclip_ex-c_exclip_exp.-c_exclip_ex----c_exclip_exp.ip_ex-c_exclip_ex-c_-c_exbs.gi_ex-c_ex-c_ex-c_ex-c_-c_exclip_-c_exb.-c_ex_ex_ex-c_exclip_-c_exb.-c 7.4 7.4
链接>
警告#1.6002万-D:“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_EMIF.obj>”中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_McBSP.obj>”中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_PLL.OBJ>”中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_IRQ.OBJ>”中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:在“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713_deb.obj>”6713”中6713中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713_led.obj>”6713”中6713中缺少Build属性供应商部分TI:无法确定兼容性
警告#1.6002万-D:“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713.obj>”6713”中6713.中缺少Build属性供应商部分TI:无法确定兼容性
'完成构建目标:mms_mics.out '

我的客户需要一个没有禁止警告的项目,所以我不能使用--diag_suppress=1.6002万


我从dsk6713bsl源创建了一个dsk6713bsl项目。
添加了C6000编译器标志:-mc6713
新的dsk6713bsl.lib链接时不会出现警告。
dsk6713bsl函数似乎按预期工作。


我从CSL来源创建了CCS项目。
添加了C6000编译器标志:-mc6713和--defe=chip_6713
新的csl6713.lib链接时不显示警告。


但现在程序终止了对puts()的调用。
它看起来像是从Liba.lib生成的puts(),该liba.lib的构建来源是:
7.4 .22\lib\src\fputs.c


链接到新编译的CSL库似乎导致Liba.lib中的函数终止。

随附

CSL库项目: csl6713.zip

DSK6713库项目: dsk6713bsl.zip

测试应用程序: dsk6713bsl_test.zip

关于如何重新构建CSL库以使其不会破坏Liba.lib的建议?

谢谢!
Bruce Graham

高级软件工程师

e2e.ti.com/.../6507.dsk6713bsl_5F00_test.zipe2e.ti.com/.../csl6713.zipe2e.ti.com/.../dsk6713bsl.zip</s>6713 6713.6713

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

    我已通知SW团队。 他们的反馈将在此处发布。

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

    不幸的是,这是一个相当老的CSL代码,并且有10年多的时间使用DSP,所以我不确定CSL库版本是否支持使用较新的编译器工具进行构建。 我看到您正在使用编译器CGT COFF二进制构建应用程序7.4 ,但这些库是否也是使用此版本的编译器构建的?

    我要将此内容移至编译器论坛,以了解经过培训的用户是否可以在构建日志中找到更多需要修复的内容。

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

    我将库和应用程序构建为coff和elf输出格式。

    我应该注意到,CSL源来自C6xCSL\lib_3x\csl6000.src。
    > CD E:\ti\C6xCSL\lib_3x
    > E:\ti\ccsv7\tools\compiler\ti-CGT-C6000_csr.1\bin\ar6x 8.2 csl6000.src.

    ===================================
    Coff库和应用程序
    ===================================
    我使用传统COFF的输出格式构建了2个库和应用程序。
    应用程序在C运行时的某个位置崩溃,无法到达main()。

    ===================================
    ELF库和应用程序
    ===================================
    我使用(Eabi) ELF的输出格式重新编译了2个库和应用程序。

    我收到链接错误:
    未定义的第一个引用
    文件中的符号
    ------------------- --------
    _IRQ_hookFetchPacket E:/Workspace/Invicts/Invictus_v 1.0 .0/csl6713/Debug/csl6713.lib<CSL_IRQ.obj></s>6713.

    我查看了CSL_IRQ.c源文件,并在一些内嵌汇编中找到了缺失的函数:
    extern far void _IRQ_hookFetchPacket();
    asm (".global __IRQ_hookFetchPacket");
    ASM("__IRQ_hookFetchPacket:");
    ASM (" STW B0,*—B15");
    ASM (" MVKL 0x0万,B0");
    ASM (" MVKH 0x0万,B0");
    ASM (" B B0");
    ASM (" LDW * B15++,B0");
    ASM (" NOP 4");
    ASM (" NOP");
    ASM (" NOP");

    缺少的函数的引用位于:
    void irq_hook(int intNum, void *func){

    内部;
    UINT32矢量;
    UINT32 *work,*fetchPacket;

    gie = IRQ_globalDisable();

    #IF (C11_support || C64_support)
    工作=(UINT32*)_EDMA_RSVD_PARAM;
    fetchPacket =(UINT32*)_IRQ_hookFetchPacket;

    我使用了ofd6x来验证elf csl6713.lib是否包含名为_IRQ_hookFetchPacket而不是__IRQ_hookFetchPacket的符号。
    > ti\ccsv7\tools\compiler\C6000_csv.22\bin\ofd6x 7.4 -x csl6713.lib > csl6713.xml

    因此,我复制了内嵌源代码,并重命名了函数,以便链接程序可以找到它。
    请注意,我将__IRQ_hookFetchPacket()重命名为_IRQ_hookFetchPacket()。 链接并运行。
    请参阅下文。

    extern far void _IRQ_hookFetchPacket();
    asm (".global _IRQ_hookFetchPacket");
    ASM("_IRQ_hookFetchPacket:");
    ASM (" STW B0,*—B15");
    ASM (" MVKL 0x0万,B0");
    ASM (" MVKH 0x0万,B0");
    ASM (" B B0");
    ASM (" LDW * B15++,B0");
    ASM (" NOP 4");
    ASM (" NOP");
    ASM (" NOP");

    elf链接器和编译器处理内嵌函数的命名似乎不一致。

    由于COFF输出格式不起作用,我是否应该使用ELF输出格式,
    我重新命名的函数?

    谢谢!
    Bruce Graham

    高级软件工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先,虽然我知道这对客户很讨厌,但这里最好的选择是继续使用旧的COFF库,尽管有警告。 在大多数情况下,警告“不能确定兼容性”通常只是表示使用了旧版本的编译器对其进行编译。 如果在该库中未检测到任何错误,则继续使用可能是安全的。 它几乎可以兼容,只是链接程序无法证明它。

    如果您确实要转换为EABI,请阅读本文档:

    processors.wiki.ti.com/.../C6000_EABI_Migration

    编译器不提供Liba.lib;您的意思可能是libc.a?

    呼叫放置可能是由于已知的性能问题。 缺省情况下,库中的某些函数会在发生某些错误时打印错误消息,例如出现故障的“operator new”。 较新版本的编译器会删除这些对puts的调用,因为它们通常是嵌入式系统中不需要的。 尝试升级到最新的编译器版本。 您的客户可能不想升级到该版本,但它会告诉我们一些有关放置问题性质的信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确,libc.a.

    我的客户正在使用专门为 TMS320C6713编写的代码。 旧 的TMS320C6713 项目是使用CCS 3.3 构建 的。

    我必须与我的客户讨论如何迁移到更新的,受支持的DSP,以及迁移到CCS V7和Windows 10。

    作为 TMS320C6713的替代品,您建议使用哪种DSP?

    谢谢!

    Bruce Graham

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,这超出了我的专业领域。 我假设您想看看C6740系列,但这只是一个猜测。 但是,我完全不明白为什么这位客户需要更新。 客户是否正在尝试使用某些库的较新版本? 用户是否从较旧版本的编译器升级,甚至比7.4 .x更旧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我 以这种方式总结情况。  当客户构建时,他们会看到这一点...

    Bruce Graham6 说:
    <链接>
    警告#1.6002万-D:“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_EMIF.obj>”中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_McBSP.obj>”中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_PLL.OBJ>”中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:在“E:/ti/C6xCSL/lib_3x/csl6713.lib<CSL_IRQ.OBJ>”中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:在“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713_deb.obj>”6713”中6713中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713_led.obj>”6713”中6713中缺少Build属性供应商部分TI:无法确定兼容性
    警告#1.6002万-D:“E:/ti/dsk6713/lib/dsk6713bsl.lib<dsk6713.obj>”6713”中6713.中缺少Build属性供应商部分TI:无法确定兼容性
    '完成构建目标:mms_mics.out '

    他们也看到了这个...

    Bruce Graham6 说:
    dsk6713bsl函数似乎按预期工作。[/QUOT]

    但客户也有这个限制...

    [报价用户="Bruce Graham6"]我的客户需要一个没有禁止警告的项目,因此我无法使用--diag_suppress=1.6002万

    在我看来,客户为了避免这些链接器警告而必须做的工作是不值得的。  甚至不近。  只需与他们生活在一起。  如您所见,尝试通过更新工具解决此问题会导致出现更多问题。  当您将旧库和新工具组合在一起时,尤其是当它们之间的时间间隔太长时,这种情况很常见。  

    总之,客户是负责其系统的人,因此我们将帮助他们实现他们认为最重要的目标。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 我将接受使用--diag_suppress=1.6002万。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请在单核DSP论坛上发布有关部件号建议的问题。 我们将在此处关闭此帖子。

    此致,
    拉胡尔