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:闪存 API 库发生链接器错误

Guru**** 2562250 points
Other Parts Discussed in Thread: TMS320F28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1247243/tms320f28388d-linker-error-with-flash-api-liibrary

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

我正在尝试将 TMS320F28388D 上的闪存 API 与 TI Clang v.2.12.2.LTS 编译器结合使用。
在 C28内核上一切都很顺利、我很快就能够擦除和写入闪存扇区。

CM/M4内核是问题开始的位置。 使用 C2000Ware_4_03_00_00中的 include 和 lib 看起来不错、用 M4型号替换 C28。 但是-在构建时、链接器会抱怨:
错误:文件
"C:/[...]/driverlib_cm4/Debug/driverlib_cm4.lib "的 Tag_abi_vfp_args 属性值"0"不同于之前看到的属性("1");组合不兼容的文件
另外还有两个误差、与之非常类似。


我发现此标签对应于 CCS 项目设置 CCS Build/Arm Compiler/Processor Options/-mfloat-ABI (硬或软)。
armofd 工具不会显示1的来源、我们的所有模块都明确设置为0 (CCS 工程设置中的" soft")。 然而、该工具显示闪存 API 的标签被设定为3、这意味着它应该与所有内容相匹配。 (armofd 输出可能会令人困惑、因为通常没有明确写入0、因为这是默认值)
我们使用了几个第三方库(driverlib_cm4.lib、freertos.lib、lwip.lib)和我们自己的一些库。 但即使在这些设置上、armofd 也不会显示1设置、包括所有*。o。
遗憾的是、即使将链接器设置为详细的诊断、也不会告知它在何处看到1个标签。

我们发现、在#include "F021_F2838x_cm.h"周围省略 extern "C"声明可以摆脱链接器 Tag_abi_vfp_args 错误。
但一旦我真的使用闪存 API 中的函数,就找不到闪存 API 中的任何内容("未解析的符号保持"),甚至不是最简单的 Fapi_getFsmStatus()。 此外、由于我们使用 C++、因此我希望需要 C 链接(C++名称改编肯定会干扰符号解析)。
将闪存库或路径字符串修改为无效的设置会使链接器大声疾呼:找不到库-因此两者看起来都正确、并打开正确的文件。 (是的,我没有链接 C28库;-)


这很奇怪–不使用闪存 API 函数进行链接就足以让链接器看到它不喜欢的东西。 但是、当被告知使用闪存 API 函数时、系统将找不到任何函数。

有人对于闪存 API 和 lwip 都遇到了相同的问题:
TMS320F28388D:LWIP 问题- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛
但最终还没有解决方案。

有人能对此提供一些说明吗?

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

    尊敬的 Christian:

    我们将于7月14日查看并回复您。

    谢谢。此致、

    瓦姆西

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

    尊敬的 Christian:

    我们的编译器团队正在审查这一点。  我会在下周中与您再谈他们的评论。

    谢谢。此致、

    瓦姆西

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

    尊敬的 Christian:

    请将鼠标悬停在我的名字上来向我发送朋友的请求。  我们希望离线就此与您进行讨论、以便进一步了解。

    谢谢。此致、
    瓦姆西

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

    尊敬的 Christian:

    请注意:由于维护原因、E2E 论坛将在7月24日之前不可用。  

    谢谢。此致、
    瓦姆西

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

    尊敬的 Christian:

    我之所以要关闭这个职位、是因为我在过去3周没有收到您的回复。

    如果您还有其他问题、请打开新帖子。

    谢谢。此致、

    瓦姆西

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

    尊敬的 Vamsi:

    这一直被搁置,因为我不得不照顾一个不同的最优先的客户问题,直到这个星期结束,我在暑假.

    我尚未处理此链接器错误。 我仍在寻求任何类型的帮助。

    此致

    克里斯

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

    尊敬的 Christian:

    好的、当您回到办公室时、可以回到这里。

    谢谢。此致、

    瓦姆西    

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

    尊敬的 Vamsi:

    现在、我又回到了 M4内核上的 TMS320F28388D 闪存库问题。

    与此同时、我更新到 CCS 12.4、但即使使用更高版本的 TI Clang v2.1.3.LTS 编译器、其行为也没有改变。
    --------
    仍然存在的问题是、将项目与 M4 TI 闪存库和一些其他库链接起来会使 ARM 链接器发出错误消息:

    错误:文件
    "C:/[...]/driverlib_cm4/Debug/driverlib_cm4.lib "
    具有与之前看到的值("1")不同的 Tag_ABI_VFP_args 属性值"0";
    组合不兼容的文件

    令人讨厌的是,它不会告诉我*在哪里*它看到了一个"1"。
    我使用 armofd 工具分析了指向链接器的所有其他内容、并且它显示"0"(或者根本没有任何内容、因为"0"是默认值)、这是预期值。

    我的问题是:如何找出链接器在何处看到该"1"属性?
    它是否只是一个报告错误、其中链接器对来自闪存库的"3"属性感到困惑、该属性在形式上与所有其他属性("0")不同?

    是否可能会有一些"0"实际上不是由 armofd 显示的扭曲?
    它"说"为默认值、因此编译器可能不会显式设置它(实际上确实如此)。
    如果由于某种原因它不是默认值、则根本不显示 Tag_abi_vfp_args 属性值的 armofd 输出可能意味着任何事情。
    --------
    奇怪的是,同一个链接器还会发出三条警告,其中*do*表示两个参与方发生冲突:

    警告:目标文件具有不兼容的 wchar_t 类型
    ("C:/ti/C2000Ware_4_03_00_00/libraries/flash_api/f2838x/cm/lib/F2838x_CM_FlashAPI.lib "=--wchar_t=16、
    "./ChannelUpdater.o"=--wchar_t=32)
    (ChannelUpdater.o 是我们自己的模块之一)
    我希望它也能为该错误这样做。

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

    尊敬的 Christian:

    如上所述、请将鼠标悬停在我的姓名上向我发送朋友请求。   我可以提供从我们的编译器团队收到的建议。

    谢谢。此致、
    瓦姆西

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

    尊敬的 Christian:

    正如离线讨论过的、我暂时关闭这个帖子。  您可以在准备好后向我发送项目。

    谢谢。此致、
    瓦姆西