arduino - ESP32 NVS 获取存储值失败,出现 ESP_ERR_NVS_NOT_FOUND (0x1102)
问题描述
开发板:ESP32-WROOM,16MB Flash 大小
如标题:读取写入 ESP32 板 NVS 分区的值失败,错误代码 4354 (0x1102) 对应于 ESP_ERR_NVS_NOT_FOUND。
官方 ESP API 页面上的错误: ESP_ERR_NVS_NOT_FOUND = Id namespace doesn't exist yet and mode is NVS_READONLY
我不明白为什么,因为我使用正确的命名空间和NVS_READWRITE标志进行了初始化。
编码:
esp_err_t ret = 0;
nvs_handle handler = 0;
ret = nvs_flash_init_partition("nvs");
log_e("nvs_flash_init_partition CODE: %d", ret);
delay(500);
ret = nvs_open_from_partition("nvs", "tele", NVS_READWRITE, &handler);
log_e("nvs_open CODE: %d", ret);
delay(500);
ret = nvs_set_u8(handler, "kk", 7);
log_e("nvs_set_u8 CODE: %d", ret);
delay(500);
ret = nvs_commit(handler);
log_e("nvs_commit CODE: %d", ret);
delay(500);
int8_t max_buffer_size = 256;
ret = nvs_get_i8(handler, "kk", &max_buffer_size);
log_e("nvs_get_u8 CODE: %d", ret);
log_e("nvs_get_u8 STORED: %d", max_buffer_size);
delay(500);
ret = nvs_flash_deinit_partition("nvs");
log_e("nvs_flash_deinit_partition CODE: %d", ret);
nvs_close(handler);
注意:我也毫不拖延地尝试过:同样的结果。
输出:
begin(): nvs_flash_init_partition CODE: 0
begin(): nvs_open CODE: 0
begin(): nvs_set_u8 CODE: 0
begin(): nvs_commit CODE: 0
begin(): nvs_get_u8 CODE: 4354
begin(): nvs_get_u8 STORED: 0
begin(): nvs_flash_deinit_partition CODE: 0
分区:
# 乐鑫 ESP32 分区表 # 名称、类型、子类型、偏移量、大小、标志 nvs,数据,nvs,0x9000,16K, otadata,数据,ota,0xd000,8K, phy_init,数据,phy,0xf000,4K, 工厂,应用程序,工厂,0x10000,8M, ota_0,app,ota_0,0x810000,1M, ota_1,app,ota_1,0x910000,1M,
难道我做错了什么?我错过了什么吗?
谢谢!
更新:似乎测试板闪存已损坏。我尝试了另一个,代码运行良好。
解决方案
在nvs_set_u8()的文档中查看此注释:
请注意,在调用 nvs_commit 函数之前,不会更新实际存储。
nvs_commit()
所以在之后立即添加一个调用nvs_set_u8()
:
ret = nvs_commit(handler);
log_e("nvs_commit CODE: %d", ret);
推荐阅读
- python - 如何使用基于日期的 Python 将数据导入多个 CSV 文件
- amazon-web-services - s3图片文件按大小排序
- html - Bootstrap - 当宽度改变时,div 中的元素分成 2 行
- python - Python - 按值和按引用函数参数
- php - 强制下载图像作为响应流明 + 干预图像
- ios - 在设置它的框架之前给 UIImageView 插入
- spring-boot - 为 REST 端点 REQUEST url 生成的 Swagger 无效主机名
- django - 如何减去两个日期并获得注释中的天数?
- javascript - 将所有其他插件/扩展组织到 main.js [VueJs]
- javascript - 使用 Lodash 展平嵌套对象