NVS - Non-volatile storage
非易失性存储(NVS)库主要用于在闪存中存储键值对。本节介绍 NVS 使用的一些概念。
底层存储
目前,NVS 通过 spi_flash_{read|write|erase}
API 使用主闪存的一部分。该库使用具有 data 类型和 nvs 子类型的所有分区。应用程序可以通过 nvs_open
API 选择使用带有标签 nvs 的分区或通过 nvs_open_from_part
API 使用指定名称的任意分区。
如果 NVS 分区被截断(例如,更改分区表布局时),则应擦除其内容。ESP-IDF 构建系统提供
make erase_flash
以擦除闪存芯片的所有内容。
NVS 最适合存储许多小值,而不是 “string” 和 “blob” 类型的大值。如果需要存储大的 blob 或字符串,请考虑使用在损耗均衡库之上的 FAT 文件系统提供的功能。
键值对
NVS 在键值对上操作。键是 ASCII 字符串,最大键长度当前为 15 个字符。值可以具有以下类型之一:
- 整形: uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t
- 以0结尾的字符串
- 可变长的二进制数据(blob)
字符串值目前限制为 4000 字节。这包括空终止符。Blob