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.

[参考译文] TMS320F28P650DH:LFU 解决方案是否仅支持 C++或 c?

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1563236/tms320f28p650dh-does-lfu-solution-supports-c-or-c-only

器件型号:TMS320F28P650DH


工具/软件:

尊敬的专家:

LFU 解决方案是否仅支持 C++或 c?

此致、

挂起

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

    挂起、

    我认为编译器支持具有 C 和 C++的 LFU。

    我已添加编译器 SME 进行确认。

    谢谢、

    Sira

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

    挂起、

    LFU 实现支持 c 和 C++。  C++是否有问题?

    此致、
    GREG

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

    Greg 和团队

    客户已离线跟进此问题、请:

    “  

    我需要您在 LFU 函数方面的进一步帮助。 我们正在考虑一个问题:您知道一个类的所有变量都在闪存中放在一起、它们的地址是连续的。 如果我们在进行固件升级时向一个类添加新变量、LFU 编译器将如何处理新变量? 因为根据 LFU 的数据表、所有旧变量都不会重新分配。 只会为新变量分配地址。 但对于类、所有变量都应该放在一起。  

    欢迎并 感谢提供进一步的投入。

    CY、

    Chris

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

    Chris、

    对于 LFU、在新的 LFU 可执行文件中、attribute (preserve) 变量与输入参考可执行文件位于同一地址。 对于标有 attribute (update) 的新变量、编译器将它们全部分组到.TI.update 输出段中、用户必须将其添加到其链接器 cmd 文件中。

    为了将新变量放置在 旧变量附近、他们需要使用位置属性(而不是更新属性)标记这些变量。 但这意味着不会对这些新变量执行 LFU warm_init、在这种情况下、它们需要手动初始化以进行热初始化切换。

    它们还应使用具有最新 LFU 更新的 22.6.2.LTS。

    谢谢
    GREG

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

    Greg、感谢您的快速答复和进一步澄清。  我还通过电子邮件离线跟进客户。  在关闭此主题之前、让我们再给一天时间...等待进一步的反馈/确认。

    谢谢!

    -克里斯

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

    Greg、

    此外:

    非常感谢您的支持。 我只是想更清楚地说明这一点。 例如、我有两个 A 类和 B 类、第一个版本都有许多变量。 它们的地址是连续的。 当我升级固件并想要为 A 类添加一个新变量时、B 类的起始地址将 以正常固件升级方式从 000180a0 更改为 000180a4。 由于这个新变量、A 类之后的所有代码都将重新分配。 但对于 LFU、所有保留变量将与旧版本保持相同地址。 这意味着 A 类和 B 类应保留其旧地址、而不是为 A 类的新变量保留空间。那么 LFU 将如何处理 A 类的这个新变量? 如果它稳定到.TI.update 输出段、如何链接到目标 A 类? 如果不是、解决方案是什么? 我不清楚您提到的 location 属性。 我在下载的有关 LFU 的任何文档中都找不到此属性。 您能给我发送一个文件链接来解释这一点吗? 谢谢你。

     

    第一个版本:

    A 类

    公开:

    悬空 f_A1;

    悬空 f_A2;

    ……μ s

    };

     

    B 类

    公开:

    悬空 f_b1;

    悬空 F_B2;

    ……μ s

    };

     

    地址:

    1  0001808e objA                                           
    1  000180a0 objB  

     

    升级版本:

    A 类

    公开:

    悬空 f_A1;

     

    悬空 f_anew;

     

    悬空 f_A2;

    ……μ s

    };

     

    B 类

    公开:

    悬空 f_b1;

    悬空 F_B2;

    ……μ s

    };

     

    1  0001808e objA                                           
    1  000180a4 objB  

     “

    此致、

    Chris

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

    有关属性(位置)的详细信息、请参阅用户指南 spru514 pdf。  

    LFU 不能同时保留旧固件的地址、而能在没有空间的情况下插入新变量。 您需要以某种方式在存储器映射中分配空洞以适应相邻的增长。   

    不过、LFU 可确保旧固件中的变量保持在同一地址、这样热初始化状态转换无需重新初始化这些变量。

    您也可以将 A 类和 B 类中的所有变量标记为属性 (update)、在这种情况下、它们将在新固件中移动、并且在切换期间也会进行热初始化。