工具/软件:
尊敬的专家:
LFU 解决方案是否仅支持 C++或 c?
此致、
挂起
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.
工具/软件:
尊敬的专家:
LFU 解决方案是否仅支持 C++或 c?
此致、
挂起
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、
此外:
“
非常感谢您的支持。 我只是想更清楚地说明这一点。 例如、我有两个 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)、在这种情况下、它们将在新固件中移动、并且在切换期间也会进行热初始化。