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.

[参考译文] TMS320F28388D:链接器无法在部分找到数据结构

Guru**** 2601915 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1074072/tms320f28388d-linker-cannot-locate-data-structure-in-section

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

大家好,

我们的情况非常奇怪,链接器无法将大小为0x98的结构链接到大小 为0x98的输出部分。

链接器输出如下所示:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要一个不能通过对齐为该 section.placement 生成的 trampoline。对 xxx 大小0x98page0的阻止失败。 可用内存范围 MEM_xxx 大小0x98未使用:0x98最大孔:0x98

我们计划查找该部分的存储器定义如下:

#define LEN_xxx 0x98

MEM_xxx:原点= 0x0C0000 - LEN_xxx,长度= LEN_xxx

一些重要事实:

如果相反,大小为0x98的数据结构使用大小为0x98的数组,则链接工作正常

如果我们对 LEN_xxx 使用0xA0和0xB0,并且数据结构作为输入部分,则链接将不起作用

如果我们对 LEN_xxx 使用0xC0,并且数据结构作为输入部分,则链接工作正常。 链接完成后,当我们检查地图文件时,我们可以清楚地观察到结构的大小符合预期,为0x98。

新出现的问题包括:

1 -为什么链接对数组有效,而不是对相同大小的数据结构有效

2 -当定位数据为0x98时,为什么链接对更大的书帖尺寸(0xC0)有效,而不对0xA0或0xB0有效。

如果您中的任何人一开始就知道定位为什么不起作用,请告诉我。

我们使用 的编译器是代码作曲家工作室10.2附带的编译器

谢谢你,

尤根

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="512049" url="~ë/support/intrles/c2000-intraters-group/c2f/c2000-intraters-forum/1074072/tms320f28388d-linker --neco-locate-data-structure-in 节"]我们有一种非常奇怪的情况,即链接器无法将0x98大小的结构链接到输出部分 [引用/节]。

    我认为这种数据结构是在一个 C 文件中定义的。  对于该 C 文件, 请按照文章 “如何提交编译器测试用例”中的说明进行操作。  虽然我不确定,但我相信我可以用它来重现问题。

    谢谢,此致,

    乔治

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

    e2e.ti.com/.../Test_5F00_logistics.c

    你好,乔治,

    非常感谢您的意见。 请找到附加到此消息的解压缩文件。 它内部有所有需要的数据。

    如果您对本主题有任何更新,请告诉我,因为它是我们项目的障碍。

    谢谢你,

    尤根

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

    感谢您的测试案例。  不幸的是,我无法重现该问题。  请提交链接器命令文件。  因此论坛将接受它,请将文件扩展名.txt 添加到它。  此外,通过复制和粘贴命令文本,可以准确显示链接器的调用方式。  这种额外的细节可能会让我重现问题。

    谢谢,此致,

    乔治