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.

[参考译文] CCS/MSP430G2553:在不擦除用户程序的情况下将数据存储在闪存存储器中

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/767612/ccs-msp430g2553-store-data-in-flash-memory-without-erase-user-program

器件型号:MSP430G2553
主题中讨论的其他器件:MSP430WARE

工具/软件:Code Composer Studio

你(们)好

我需要将数据(3或4字 maxi)存储在 MSP430G 的非易失性存储器中。 当我的应用程序上的某些参数发生变化时、我需要将它们存储在用户程序中。 (然后在开机后读取)

如何做到这一点,并确保写入这些数据,并确保不会过度写入我的用户程序? (假设我的用户程序不使用所有范围的闪存)

此致

Olivier

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Olivier、您好!
    您需要在链接器命令文件中定义一个不允许编译放置代码的专用段。
    此地址空间用于擦除和编程所用的指针。 理想情况下、您为其定义一个专用段、以便在写入之前仅擦除此段。
    msp430ware 示例"msp430g2xx3_flashwrite_01.c"中提供了闪存写入示例
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    信息存储器是实现此目的的好地方。  它与主存储器块分离。  INFOA 用于校准数据、但是您可以单独擦除和写入 INFOB、INFOC 和 INFOD、它们各为64字节。  您可以在查找最后一组被写入的位置(即0xFF 被擦除的字节之前)后、写入连续的参数集而不擦除参数集、而不是在每次更改参数时擦除这些参数集。  那么、您只需在 INFOB 几乎被填满时擦除并重新开始。  但是、当您将新固件刷写到主存储器时、INFOB 通常会被擦除、因此在这种情况下、先前的会话参数将会丢失。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我理解正确,则在 INFOD ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我会说用户代码通常不是为 INFOB 编写的 可以将代码放在那里、但我相信大多数编码器不会这样做。 我认为 TI 的信息存储器用途就是您描述的用途-在运行之间存储值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我同意 Geroge Info D- B 的建议、主要用于存储校准数据或序列号、通常由客户用于您想使用的目的。

    但是、您必须注意信息 D 细分市场、在该细分市场中、TI 正在编程一条生产记录、该记录表明已通过测试。 因此、我建议在将数据编程到段之前始终进行段擦除。

    本主题中的指导是否有助于解决您的问题? 如果是、请将其标记为已解决、以便可以关闭此主题。