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.

[参考译文] TMS320F280049:包含相同文件且具有不同构建结果的工程

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1492212/tms320f280049-projects-containing-the-same-files-with-different-build-results

器件型号:TMS320F280049

工具/软件:

尊敬的 Champs:

我向客户询问此问题。

project1和 project2两个工程分别使用完全相同的 CCS 版本、完全相同的编译器、完全相同的源文件(.c、.cla、.h)、完全相同的 cmd 文件在同一台计算机上运行。

cmd 文件指定 FLASH_BANK0的分配如下:

  FLASH_BANK0_SEC1_2_3_4_5_6 :origin = 0x083040、length = 0x003FC0           /*片上闪存*/

  FLASH_BANK0_sec7_8_9_10 :origin = 0x087000、length = 0x005000   /*片上闪存*/

  FLASH_BANK0_SEC11_12_13_14_15 :origin = 0x08C000、length = 0x004000    /*片上闪存*/

.cinit:> FLASH_BANK0_SEC1_2_3_4_5_6 | FLASH_BANK0_SEC11_12_13_14_15、PAGE = 0、ALIGN (4)
.text:>> FLASH_BANK0_sec7_8_9_10 | FLASH_BANK0_SEC1_2_3_4_5_6 | FLASH_BANK0_SEC11_12_13_14_15、PAGE = 0、align (4)

但是 Project1构建成功。  project2失败、错误消息如下所示:

"../28004x_cla_flash_lnk.cmd"、第119行:错误#10099-D:程序将无法放入可用内存中、或者该段包含一个需要无法为该段生成的蹦床函数的调用站点。 对于".cinit 段(大小为0x339第0页)、定位/分块失败。  可用存储器范围:

  FLASH_BANK0_SEC1_2_3_4_5_6  大小      :0x3fc0未使用:0x2         最大空洞:0x2       

   FLASH_BANK0_SEC11_12_13_14_15  大小      :0x4000未使用:0x33f       最大孔:0x33b     

错误#10010:链接过程中遇到错误;未构建"QT2_AC_SIDE.OUT"

我要求客户比较这两个项目的地图文件、确实有所不同。

项目1:

 FLASH_BANK0_SEC1_2_3_00083040  00003fc0 00003d39  00000287 RWIX

 FLASH_BANK0_sec7_8_9_ 00087000  00005000 00000000   RWIX

 FLASH_BANK0_SEC11_12_ 0008c000  00004000 0000385f  000007a1 RWIX

项目2:

 FLASH_BANK0_SEC1_2_3_00083040  00003fc0 00003fbe 00000002   RWIX

 FLASH_BANK0_sec7_8_9_ 00087000  00005000 00000000   RWIX

 FLASH_BANK0_SEC11_12_ 0008c000  00004000 00003cc1  0000033f RWIX

Project1和 project2、哪个设置导致 FLASH_BANK0的分配不同吗? 如何找到它? 谢谢!

Julia

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

    尊敬的 Champs:

    是否有任何更新? 谢谢!

    Julia

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

    Julia、

    我正在将其重新分配给 SW 工具团队、他们应该能够在这里提供帮助。  很抱歉我们的答复有延误。

    此致、
    Matthew

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

    对于这两个版本、请发送以下命令:

    • 链接命令的文本(不是屏幕截图)、正如系统看到的那样、即将所有构建变量替换为其内容
    • 连接器命令文件
    • 链接器映射文件

    我不能保证这些信息将使我能够确定问题的原因。  但可能会这样。  我相信我能提出更好的问题。

    谢谢。此致、

    -乔治

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

    您好、George、

    你问的所有文件都发送给 Julia、她会将文件发送给你。

    请注意、28004x_cla_flash_lnk.cmd 是 project1和 project2均使用的链接器命令文件

    谢谢、

    Quentin

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

    感谢您提交我请求的文件。  我可以解释为什么构建的链接部分工作方式不同。  我无法告诉您解决问题的最佳方法。

    project1的链接器命令使用 driverlib 的 Release 变体...

    "C:/ti/c2000/C2000Ware_3_01_00_00/driverlib/f28004x/driverlib/ccs/Release/driverlib.lib"

    ...虽然 project2使用调试变体..

    "C:/ti/c2000/C2000Ware_3_01_00_00/driverlib/f28004x/driverlib/ccs/Debug/driverlib.lib"

    这种原因的差异在链接器映射文件的这些行中可以非常清楚地看到。  在此屏幕截图中、project1在左侧、project2在右侧。

    调试型号使用更多的代码、并添加了一些 RO (只读)段。

    我想告诉您如何更改 project2、因此它使用 driverlib 的 Release 变体。

    谢谢。此致、

    -乔治

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

    您好、George、

    我明白了。 非常感谢!

    Quentin