gpt4 book ai didi

esp32 - 在 ESP32/ESP-IDF 中——什么时候使用 EEPROM vs NVS vs SPIFFS?

转载 作者:行者123 更新时间:2023-12-05 09:02:48 48 4
gpt4 key购买 nike

我对 ESP32 微 Controller 的生产工作还很陌生,我想从已经来过几次的人那里了解一些背景和细微差别。所以这个问题更多的是关于这类事情,而不是“我如何编写 X”之类的问题。

我当前的项目需要大量数据存储。

  • 需要较少存储的较大数据 block
  • 需要更频繁更新的较小数据 block
  • 特定于给定设备但不会用 C 编码的出厂设置(如序列号、电路板版本等)。
  • 等等

我熟悉将数据存储在“blob”中,并且我熟悉使用 Protocol Buffer 对数据进行编码/解码。

考虑到所有这些,我试图了解 ESP32 上各种存储选项之间的差异,以及何时使用它们。

  • 电子舞会
  • NVS
  • SPIFFS/LittleFS
  • 其他选项...

哪些用例让您选择这些选项中的一个而不是另一个?

最佳答案

ESP32 上没有 EEPROM,只有闪存。

NVS是一个简单的非 volatile 键值存储,具有不同的数据类型(8-64 位整数、字符串、blob)。它使用起来相当方便,确实磨损均衡并支持闪存加密(尽管有点麻烦)。我会用它来存储出厂设置和任何其他相当小的东西(字符串有 4000 字节的限制,blob 有 508,000 字节的限制)。如果设备需要经常写入,您可能需要创建一个单独的、专用的、只读的 NVS 分区来存储设备属性(串行、硬件信息),以保证在写入期间不会因电源故障而受到破坏。

ESP IDF 支持 SPIFFS 和 FAT 文件系统。

SPIFFS重量轻,在磨损均衡和可靠性方面要好得多。我会用它来存储任何更大的文件。不幸的是,它不支持闪存加密。

FAT文件系统可能是最糟糕的选择,因为它本身对 Flash 并不友好,也不可靠。 Espressif 在 FAT 和闪存之间构建了某种层以适应磨损均衡。 FAT 的唯一关键优势是它支持闪存加密。

不幸的是,还有一些我没有使用过的第三方选项。

与往常一样,考虑您的写入将在闪存中导致的页面删除次数 - 这可以让您估计在达到芯片生命周期之前可以写入多少次。

关于esp32 - 在 ESP32/ESP-IDF 中——什么时候使用 EEPROM vs NVS vs SPIFFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70826170/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com