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.

[参考译文] 编译器/MSP430FR2433:C++对象实例在 FRAM 中持续存在?

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/829016/compiler-msp430fr2433-c-object-instances-persistent-in-fram

器件型号:MSP430FR2433

工具/软件:TI C/C++编译器

我希望在 FRAM 中保留 A 类的两个实例。
该类拥有(具有 A)另一个 B 类的实例,该实例也应保留。
我需要持久性、因为我使用的是 LPM4.5。

当我尝试初始化持久性类实例时,我的一个断言将失败。


B 类{
专用:
int 值;
public:
void init(){
值= 0;
assert (value ==0);//<<<< 断言失败
}
空增量(){value++;}
int get(){return value;}
;

A 类{private
:
b b;
公开:
//只将委托给 B 拥有的实例
void init(){b.init();}
void increment(){b.increment();}
int get(){return b.get();}
};


//未初始化、linker.cmd 将 TI.noinit 段置于 FRAM
#pragma NOINIT
A;
#pragma NOINIT
A;#pragma NOINIT A;

#pragma PERSISTENT
static int myCounter = 0;

main()...省略 




我的 main()反复睡眠 LPM4.5并唤醒。
在冷启动时,我调用 a.init (),它将委托给 B.init。
B.init 中的断言失败。

(在不是冷启动的唤醒时、我会同时递增 myCounter 和实例 a
然后比较它们的值。
以确保它们都是持久的。
但我从未如此遥远。)

我正在使用 CCS 8.1.2 (我尝试升级、但在 Eclipse 中升级失败、我需要重新安装?)。
在 Linux 上。
EXP430FR2433 Launchpad

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

    现在没关系。  我忘记解锁 FRAM 以进行写入。  我将很快重新测试。

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

    您好、Lloyd、

    感谢您使用 MSP430器件。

    您的问题现在已经消失了、听起来不错。 当您遇到任何技术问题或疑问时、请随时回来或在 E2E 上提出新问题。