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.

[参考译文] TMS320F280039C:TMS320F280039:LFU 应用程序的新工程编译器错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1657244/tms320f280039c-tms320f280039-new-project-compiler-error-for-lfu-application

器件型号: TMS320F280039C

我正在创建新主题、因为我无法再回复上一个问题帖子、并且原始问题尚未解决。
此外、在我试图弄清楚如何在这个旧主题中做出回应时、不小心点击了“举报为辱骂性“按钮、对此我深表歉意。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1528295/tms320f280039-new-project-compiler-error-for-lfu-application?tisearch=e2e-sitesearch&keymatch=LFU#

对于问题:

1.很抱歉、我无法提供我们的工程文件用于您的分析。 如果您需要、我只能共享与源代码无关的配置文件或其他文档。

2.我不能将该变量更改为唯一、因为这是我们在实际项目实现中使用的确切体系结构。  

那么、是否有任何替代解决方案可以解决此错误?

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

    Yuan、

    我正在为跟踪此问题创建一个 bug、但重现问题。  

    对于链接器错误 10478 问题、两个文件名相同但文件夹不同的源文件中是否也存在同名静态变量的两个实例?
    或者、两个具有不同文件名的不同源文件中是否存在同名静态变量?

    关于权变措施、您可以重命名其中一个变量以避免重复输出。
    或使用__attribute__((update)) 标记一个变量。  但这意味着该变量不会被保留、而会被移动到.TI.update 段。   根据变量在 LFU 热切换时的状态、您可能需要在调用_TI_auto_init_warm () 后手动更新它、这只会根据源代码值而不是最新的运行时值进行初始化。   

    注意:我只能在两个同名文件中再现同名静态变量的情况。 如果是这种情况、则 LFU 已经无法支持、因为当前实现无法区分每个同名文件的编译地址、说明其在参考可执行文件中匹配的地址。  它应该会发出如下所示的警告:

    warning #30017-D: For lfu compile of "test1.c", the reference executable's
    symbol table has multiple file entries with same file name. If two same-name
    files have duplicate-same-name static variables that are lfu "preserved",
    then the compiler will assign both static variables with the same address.
    This could result in linker placement errors.

    此致、
    GREG

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

    尊敬的 GregM:

    两个具有不同文件名的不同源文件中的同名静态变量。

    我们     在 1.c 文件 s_pTimeTickVar     =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;

    并     在 2.c 文件 s_pTimeTickVar     =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;

    并     在 3.c 文件 s_pTimeTickVar    =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;

    ...

    和在     12.c 文件中定义 extern TIMETICK_VAR_T g_tTimeTickVar。

    我们将采用这种方法来引用在不同.c 源文件中的特定文件中定义的全局变量。因此、我们无法轻松修改某个变量、因为该变量在许多位置被引用。 此外、在 LFU 过程中应保留这些变量。

    ......

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

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

    Yuan、

    您是否能够共享参考可执行文件的链接器映射文件?  -lfu=Ref.out

    如果我可以确认上述变量的布局和位置 、那么可能有一种解决方法、即使用虚拟变量获取链接器以避免创建重复的集合、这会导致 10478 错误 检查以避免创建两个同名集合。

    如果你愿意直接向我发送,我会发送一个朋友的请求。

    谢谢、
    GREG

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

    您好 GregM

    我请 Terry (FAE) 通过电子邮件向您发送文件。 请查看您的收件箱。 谢谢!

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

    Yuan、

    我已经查看过其他解决方法、但没有一种方法适用于我的简单测试用例。

    我会向您的 FAE 发送一个 alpha 链接器、以便您可以测试修复程序。

    那么我们可以在 22.6.4.LTS 中发布上述内容、该版本应在几周内发布。

    此致、
    GREG

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

    嗨、Greg

    您能否告知何时可以将 alpha 链接器发送到 FAE? 如果不解决此问题、我们就无法继续调试 LFU 函数。

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

    Yuan、

    我刚刚发送给您的 FAE。 我发送了一个 25.12 版本的 alpha 编译器安装程序(主要是 25.11.2.LTS)。 如果这样可以解决您的问题、请告诉我、我们可以在您确认后的一周内发布 22.6.4.LTS 中的修复程序、因为我相信您使用的是 22.6.2.LTS  

    此致、
    GREG

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

    嗨、Greg

    我得到了它并成功完成了编译。 我计划使用编译后的文件来调试 LFU 函数。 谢谢!