在 ESP32 上保存大量数据
save large amount of data on ESP32
我有一个项目需要在我的 ESP32(NodeMCU) 上保存大量字节(最大 1080000)。
而且它不一定是永久性的。
这可能吗?最好的方法是什么。
在ESP32的flash上存储数据是很常见的。您应该选择哪种方法取决于数据大小、文件数量和写入频率。
无论如何,您必须为数据设置一个分区(与应用程序固件分开)。 https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html
如果你只需要写一个文件(并且只在末尾追加新数据),你可以使用分区API(上面的link)将原始数据写入闪存分区,但这不允许您重写部分数据或删除部分数据。您只能擦除整个数据分区并重新开始(顺便说一句,擦除一块闪存需要一点时间(几毫秒?)并消耗一点能量)。
我建议使用文件系统,因为如果您按照示例进行操作,ESP-IDF 会非常简单:
ESP-IDF 为频繁 read/written 的小变量提供 NVS 存储。
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html
以及用于写入频率较低的大文件的 FAT 文件系统。
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/fatfs.html
还有其他支持的文件系统,如 SPIFFS LittleFS、ESPFS,每个都有独特的优势和局限性。
我有一个项目需要在我的 ESP32(NodeMCU) 上保存大量字节(最大 1080000)。 而且它不一定是永久性的。
这可能吗?最好的方法是什么。
在ESP32的flash上存储数据是很常见的。您应该选择哪种方法取决于数据大小、文件数量和写入频率。
无论如何,您必须为数据设置一个分区(与应用程序固件分开)。 https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html
如果你只需要写一个文件(并且只在末尾追加新数据),你可以使用分区API(上面的link)将原始数据写入闪存分区,但这不允许您重写部分数据或删除部分数据。您只能擦除整个数据分区并重新开始(顺便说一句,擦除一块闪存需要一点时间(几毫秒?)并消耗一点能量)。
我建议使用文件系统,因为如果您按照示例进行操作,ESP-IDF 会非常简单:
ESP-IDF 为频繁 read/written 的小变量提供 NVS 存储。 https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html
以及用于写入频率较低的大文件的 FAT 文件系统。 https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/fatfs.html
还有其他支持的文件系统,如 SPIFFS LittleFS、ESPFS,每个都有独特的优势和局限性。