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.

[参考译文] MSP-EXP430FR5994:FRAM 问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1323162/msp-exp430fr5994-fram-problem

器件型号:MSP-EXP430FR5994

大家好、我测试一下我们的评估板 MSP-EXP430FR5994。 我在将变量保存到 FRAM 存储器中时遇到问题。

我使用了 pragma "#pragma NOINIT (x)"和"#pragma persistent (x)"和值保存到存储器中、以及何时将器件复位或关闭变量保存到存储器中。 但当我调试或升级固件时、值会消失。 我需要将其用于保存器件配置。 持久性设置为 tu 默认值(在我的示例中为10)、NOINIT 设置为0xFFFF。 是否有任何解决方案会将任何值保存到 FRAM 存储器中并在升级 FW 或调试之前保持相同值?  

#pragma NOINIT (rstCount)
#pragma 位置(rstCount、0x004400)
uint16_t rstCount;

#pragma PERSISTENT (rstCount2)
#pragma Retain (rstCount2)
uint16_t rstCount2 = 10;

uint16_t firstInit = 1;

int main (void){

  WDT_A_HOLD ();    

  //此处是任意时钟初始化、WDG 初始化、时钟初始化等

   

  firstInit = 1;

   while (1){  

   if (firstInit){

    firstInit = 0;

    rstCount++;  
    rstCount2++;

    //正数据 PO UART0  
   EUSCI_A_UART0_TRANSDATA (rstCount);

   }

 }

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

    我尝试将我的变量保存到"Information Memory"(Info A/B/C/D to address 001800h to 0019FFh) 、但在上电、调试和升级 FW 后、有一个值没有消失。 但此部件内存的大小只有4 x 128B。。。

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

    persistent 变量需要具备初始化工具、并且在加载代码时会始终加载该值。 (它存储为可加载段、与.text 不同。)

    您似乎想要 NOINIT。 此处的兴趣点:

    1) 1)您需要确保下载程序/调试器不会执行批量擦除。 在 CCS 中、你需要将"Properties->Debug->MSP430 Flash Settings"设置为"Erase and download necessary sections"(擦除和下载必要部分)[或者可能是"Replace writed memory locations"(更换已写入的内存位置)、我一直忘记]。

    2)由于它是 NOINIT,你需要一个机制来检测第一次(或者腐败,就这样)。 在这种情况下、我通常使用 CRC。

    [编辑:

    3) 3)对于 PERSISTENT、链接器会为您设置 MPU。 对于 NOINIT、它(通常)不是。 您可能需要调整链接器.cmd 和/或 MPU 编辑器("Build Settings->General->MPU"[TAB]

    ]

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

    您好、Bruce、非常感谢您的快速响应。

    是的,第1点是头奖:),现在它运行良好。 CRC 是一种很好的初次检测机制。  

    再次感谢您。 Tomas。