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.

[参考译文] TMS320F2806:#16000:目标文件具有不兼容的格式

Guru**** 2391125 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034386/tms320f2806-16000-object-files-have-incompatible-formats

器件型号:TMS320F2806
主题中讨论的其他器件:C2000WARE

您好!

我的项目在 CCS 10.3.1上运行、

突然、我遇到这个误差、

fatal error #16000: object files have incompatible formats
   ("C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/lib/rts2800_fpu32
   .lib<boot28.asm.obj>" = TI-COFF, "./DEMO.obj" = ELF)

我在网上搜索时获得了2个信息  

1. project>properties>Generation>In Project 选项卡中的项目选项卡和工具链选择 eabi (ELF)作为输出格式

2.从 Debug 文件夹中删除所有.obj 文件、然后再次编译工程。

现在看一下错误控制台、rts2800_fpu32.lib 处于 TI-COFF 模式、但 project.obj 文件处于 ELF 模式。

让我知道如何解决这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="123578" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034386/tms320f2806-16000-object-files-have-incompatible-formats/3868341 #3868341]\n 我想您以前提到过28069_RAM_lnk.cmd 吗? 您要使用的链接器命令文件是否为.text、.stack、.bss 等分配空间? 这就是我提到的那个。

    好的、先生、

    我在  "Properties">"General">"Linker" 命令文件中选择了28069_RAM_lnk.cmd、

    现在看一下错误

    error #10008-D: cannot find file "rts2800_fpu32_eabi.lib"
    "../28069_RAM_lnk.cmd", line 121: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section ".text" size 0x378bpage 0.  Available memory ranges:
       RAML0_L3     size: 0x2000       unused: 0x2000       max hole: 0x2000    
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "Cla1Prog" size 0x28eepage 0.  Available memory ranges:
       BEGIN        size: 0x2          unused: 0x2          max hole: 0x2       
       RAMM0        size: 0x3b0        unused: 0x3b0        max hole: 0x3b0     
       RAML0_L3     size: 0x2000       unused: 0x2000       max hole: 0x2000    
       FPUTABLES    size: 0x6a0        unused: 0x6a0        max hole: 0x6a0     
       IQTABLES     size: 0xb50        unused: 0xb50        max hole: 0xb50     
       IQTABLES2    size: 0x8c         unused: 0x8c         max hole: 0x8c      
       IQTABLES3    size: 0xaa         unused: 0xaa         max hole: 0xaa      
       BOOTROM      size: 0xc10        unused: 0xc10        max hole: 0xc10     
       RESET        size: 0x2          unused: 0x2          max hole: 0x2       
     
     undefined          first referenced
      symbol                in file     
     ---------          ----------------
     Cla1funcsLoadSize  ./CLA.obj       
     Cla1funcsLoadStart ./CLA.obj       
     Cla1funcsRunStart  ./CLA.obj       
     
    error #10234-D: unresolved symbols remain
    fatal error #6001: cannot open file "{DSPF28069}.map" --stack_size=0x800 --warn_sections -iC:/F2806x_common/lib -iC:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/lib -iC:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/include --reread_libs --diag_wrap=off --display_error_number --xml_link_info=DSPF28069_linkInfo.xml --rom_model -o {DSP28069}.out"":  No such file or directory
     

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

    通过编辑您的 cmd 文件、可以很容易地解决这些错误。 请参阅 我之前分享的这份文档、了解如何修复"程序无法放入可用内存"错误。 请参阅底部的常见问题解答、了解"如何为.text 提供更多内存?" 如果您无法在 RAM 中找到足够的空间、您可能需要切换到 CMD 文件的闪存版本。

    另请注意、在 CCS 中有一个"Memory Allocation"视图、您可以打开该视图以直观地了解可以放置代码的存储器所在的位置。

    要修复 CLA 错误、请参考 C2000Ware CLA 示例中的一个 cmd 文件、以了解如何添加这些部分。 例如、请参阅 device_support\f2806x\con\cmd、28069_RAM_CLA_C_lnk.cmd

    惠特尼

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

    尊敬的先生:

    我忙于 PCB 设计、一旦有空、我就会回来。

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

    感谢您的更新。 这不是问题--我不会关闭线程。

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="123578" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034386/tms320f2806-16000-object-files-have-incompatible-formats/3869593 #3869593"]请参阅底部的常见问题解答,了解"如何为.text 提供更多内存?"

    尊敬的先生:

    在我 的28069_RAM_lnk.cmd 中、我已按如下方式更改了存储器范围  

     RAML0_L3  :origin = 0x008000、length = 0x378B

    删除了该时间1错误。

    不知道其余错误还有什么其他原因、

    我查找 了28069_RAM_CLA_C_lnk.cmd 文件、因为错误是

    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "Cla1Prog" size 0x28eepage 0.  Available memory ranges:
       BEGIN        size: 0x2          unused: 0x2          max hole: 0x2       
       RAMM0        size: 0x3b0        unused: 0x3b0        max hole: 0x3b0     
       RAML0_L3     size: 0x378b       unused: 0x0          max hole: 0x0       
       FPUTABLES    size: 0x6a0        unused: 0x6a0        max hole: 0x6a0     
       IQTABLES     size: 0xb50        unused: 0xb50        max hole: 0xb50     
       IQTABLES2    size: 0x8c         unused: 0x8c         max hole: 0x8c      
       IQTABLES3    size: 0xaa         unused: 0xaa         max hole: 0xaa      
       BOOTROM      size: 0xc10        unused: 0xc10        max hole: 0xc10     
       RESET        size: 0x2          unused: 0x2          max hole: 0x2   
       
        undefined          first referenced
      symbol                in file     
     ---------          ----------------
     Cla1funcsLoadSize  ./CLA.obj       
     Cla1funcsLoadStart ./CLA.obj       
     Cla1funcsRunStart  ./CLA.obj       
     

    在何处更改存储器范围?

    "Cla1Prog"大小0x28eepage 0  

    这意味着、

    RAML0_L2      :origin = 0x008000,length = 0x001000??

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

    我认为您需要切换到基于闪存的链接器命令文件。 Cla1Prog 需要放置在 LS RAM 中、但在 RAML0_L3中似乎没有足够的空间来容纳 Cla1Prog 和.text、对吧? 您可能应该在闪存中放置.text。

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="123578" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034386/tms320f2806-16000-object-files-have-incompatible-formats/3879038 #3879038">我认为您需要切换到基于闪存的链接器命令文件。 Cla1Prog 需要放置在 LS RAM 中、但在 RAML0_L3中似乎没有足够的空间来容纳 Cla1Prog 和.text、对吧? 您可能应该在闪存中放置.text。[/quot]

    尊敬的先生:

    实际上、我没有更改闪存或 RAM 存储器的经验。 请详细说明我应该查找和修改哪个文件。 请解释  为什么 RAML0_L3中没有足够的空间。 需要考虑哪种闪存?

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

    您的错误消息似乎显示.text 大小为0x378b、Cla1Prog 大小为0x28ee。 即使将 L0、L1、L2和 L3组合在一起、仍然只有0x2000。

    如果您看一下基于闪存的 cmd 文件、如\device_support\f2806x\common\cmd、您会看到.text 可以适合单个闪存扇区(它们通常大小为0x4000)。

    我对 Cla1Prog 有点担心。 是否包含额外的代码? 还是您正在使用的真正0x28ee 代码字? 在 F28069程序 RAM 上、CLA 的代码大小限制为 RAML3、因此代码大小限制为0x1000。

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="123578" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034386/tms320f2806-16000-object-files-have-incompatible-formats/3881237 #3881237">您的错误消息似乎显示.text 大小为0x378b、Cla1Prog 大小为0x28ee。 即使将 L0、L1、L2和 L3组合在一起、仍然只有0x2000。

    如果您看一下基于闪存的 cmd 文件、如\device_support\f2806x\common\cmd、您会看到.text 可以适合单个闪存扇区(它们通常大小为0x4000)。

    我对 Cla1Prog 有点担心。 是否包含额外的代码? 还是您正在使用的真正0x28ee 代码字? 在 F28069程序 RAM 上、CLA 的代码大小限制为 RAML3、因此代码大小限制为0x1000。[/引用]

    尊敬的先生:

    我认为在我的自定义项目文件设置方面可能会出现问题。

    我们正努力解决这一问题超过2个月、我们解决了许多问题、但仍有许多错误正在改变。

    上周、我与之前负责的工程师进行了交谈。 他只是从网络文件导入整个项目并构建它、就像现在一样没有错误!

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

    有趣的是、它可以为您的同事提供无问题的解决方案。 也许可以查看您是否可以获得他的编译控制台输出的副本、并将其与您的进行比较、以查看相对路径和编译选项之间是否存在任何差异?

    惠特尼