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.

[参考译文] EK-TM4C1294XL:永久性变量:存储在闪存或 EEPROM 中?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600702/ek-tm4c1294xl-permanent-variables-stored-in-flash-or-eeprom

器件型号:EK-TM4C1294XL

大家好!

并提前感谢您的支持。

我只是为了将一个小结构存储到永久性变量中。 用户将介绍这些数据、然后、这些数据应永久存储、然后在循环通电后、我需要能够再次读取这些数据。

我在一些树中阅读以使用闪存、我在 Tivaware 的实用程序库中看到 Flash_PB。 但我的问题是、在闪存中存储这个"永久变量"是否更好? 还是 EEPROM 中?  

我使用的是 TM4C1294XL Launchpad、它具有 Windows 7、CCS 7、编译器 TI v16.9.1LTS。

提前感谢我澄清这种误解。

Jordi

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

    我将努力使这篇文章成为未来读者的基础。 如您所知、闪存和 EEPROM 都是非易失性存储器-如"在未加电时、它们应保留相应的值"所示。

    第一个注释:如果您的数据对您的应用非常重要、那么您应该考虑使用外部器件来存储这些值。 这些 MCU 上的闪存和 EEPROM 都不是"永久的"。 您可能在下面的链接中看到了有关您最近评论的备注的讨论:
    e2e.ti.com/.../250463

    我更喜欢使用 FRAM:这种存储器具有很长的使用寿命、很长的使用寿命、并且在写入时只需很小的功率。 当然、它们更昂贵。 有些 TI MCU (MSP 系列)甚至内置 FRAM、因此如果您的项目不是很关心处理能力、如果您正在寻找小型解决方案、低功耗、请考虑这些因素。 其他外部 NV 存储选项包括外部 EEPROM 和闪存。

    对于一般的"系统配置"nV 参数、我特别使用内部 EEPROM。 为什么我选择这种闪存?

    -无需在工程的链接器设置上配置单独的存储区域、也无需使用 pragma 强制存储器区域。
    可以写入较小的内存块(要在闪存上写入几个字节,您需要将一个大块读取到 RAM 中,与新内容合并,然后将整个块写回闪存中)。
    -如果我不错、EEPROM 的整体处理速度更快、功耗也更低-但这并不是太关键、因为在产品的整体使用情况下、保存参数的操作非常罕见。

    在 TM4C 上、EEPROM 的写入寿命据说至少为500、000次。 如果您应用循环浏览不同页面的策略和其他技巧、则可以改进此功能。 我在数据表上快速搜索了闪存耐久性、但找不到它-如果我没有弄错的话、它实际上比这个要小。

    因此、可以在上面扣除使用闪存的缺点。 另一方面、闪存中的可用空间要大得多。 闪存的另一个优势是、您可以在调试器上"直接查看其内容"、或将该位置用作指针(这可能成为一个实际的缺点、因为它"受保护较少")。

    总之、我们使用 EEPROM 获得了出色的结果。 这里的配置结构甚至不是100字节。 随着 EEPROM 库的发展、您应该创建与某种"已确认"镜像存储相关的校验和验证、这样您就不会丢失有效数据。 老实说、在我们的情况下、我们现在所做的就是在保存结构并确认值匹配后重新读取 EEPROM。

    您现在做了更好的"标题选择"! 这可能引发一些有趣的评论。

    谢谢

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

    感谢您的评论、非常感谢。 我是这个领域的初学者、因此感谢大家对论坛的建议。

    我知道 EEPROM 的寿命、但由于这些参数仅用于存储某些设置、如果我考虑用户使用情况、则可能需要70年以上的时间才能丢失这些数据。 我想系统将在 EEPROM 使用寿命结束之前进行更改。 我将负责数据验证。

    我写这个问题是因为在讨论闪存时有很多地方和招待、但没有多少人谈论 EEPROM。 感谢您的澄清。 非常有趣。

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

    让我补充几点意见

    [引用 USER="Bruno Saraiva"]这些 MCU 上的闪存和 EEPROM 都不是"永久的"[/引用]

    这意味着您的程序也不是。 就保留而言、闪存/EE 的寿命与微控制器的使用寿命相匹配。 读/写周期是一个单独的问题。

    [引用 user="Bruno Saraiva"]我更喜欢使用 FRAM:这种存储器具有很长的寿命、极高的寿命、写入时只需很少的电量[/引用]

    它也比它快几个数量级。  FRAM 的最大写入时间为 ns、外部 EE 的最大写入时间为 ms、内部 TM4C "EE"的最大写入时间为秒

    这也是可靠性方面的积极改进、因为写入周期应从受保护的 NV 存储器开始、并在受保护的情况下结束。 FRAM 器件将不受写保护的存储器窗口保持在最短的时间内。

    [引用用户="Bruno Saraiva">TM4C、EEPROM 的写入寿命据说至少为500、000次。 如果您应用循环浏览不同页面的策略和其他技巧、则可以改进此功能。 我在数据表上快速搜索了闪存耐久性、但找不到它-如果我没有弄错的话、实际上比这要小。

    EE 实际上是使用 TM4C 上的闪存进行仿真的。 仿真会处理磨损矫正等详细信息。。 这将增加典型寿命。

    Robert