Плата: ESP32-WROOM с размером флэш-памяти 16 МБ
Как заголовок: чтение значений, записанных в раздел NVS платы ESP32, завершается ошибкой с кодом 4354 (0x1102), который соответствует ESP_ERR_NVS_NOT_FOUND.
Ошибка на официальной странице ESP API: ESP_ERR_NVS_NOT_FOUND = пространство имен Id еще не существует, а режим - 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
Перегородки:
# Espressif ESP32 Partition Table # Name, Type, SubType, Offset, Size, Flags nvs,data,nvs,0x9000,16K, otadata,data,ota,0xd000,8K, phy_init,data,phy,0xf000,4K, factory,app,factory,0x10000,8M, ota_0,app,ota_0,0x810000,1M, ota_1,app,ota_1,0x910000,1M,
Я делаю что-то неправильно? Я что-то упускаю?
Спасибо!
ОБНОВЛЕНИЕ: Похоже, флэш-память тестовой платы была повреждена. Я пробовал с другим, и код работал нормально.