nvs_flash: Version compatibility check for nvs storage

This change adds a check for compatibility between the nvs version
found on nvs flash and the one assumed by running code during nvs
initialization. Any mismatch is reported to the user using new error
code ESP_ERR_NVS_NEW_VERSION_FOUND.
This commit is contained in:
Sagar Bijwe
2018-07-25 18:55:05 +05:30
parent eaa48f380a
commit a3b5a23b87
44 changed files with 74 additions and 47 deletions

View File

@@ -157,6 +157,11 @@ static const esp_err_msg_t esp_err_msg_table[] = {
# ifdef ESP_ERR_NVS_PART_NOT_FOUND
ERR_TBL_IT(ESP_ERR_NVS_PART_NOT_FOUND), /* 4367 0x110f Partition with specified name is not found
in the partition table */
# endif
# ifdef ESP_ERR_NVS_NEW_VERSION_FOUND
ERR_TBL_IT(ESP_ERR_NVS_NEW_VERSION_FOUND), /* 4368 0x1110 NVS partition contains data in new format
and cannot be recognized by this version of
code */
# endif
// components/ulp/include/esp32/ulp.h
# ifdef ESP_ERR_ULP_BASE

View File

@@ -83,8 +83,8 @@ TEST_CASE("wifi stop and deinit","[wifi]")
//init nvs
ESP_LOGI(TAG, EMPH_STR("nvs_flash_init"));
esp_err_t r = nvs_flash_init();
if (r == ESP_ERR_NVS_NO_FREE_PAGES) {
ESP_LOGI(TAG, EMPH_STR("no free pages, erase.."));
if (r == ESP_ERR_NVS_NO_FREE_PAGES || r == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_LOGI(TAG, EMPH_STR("no free pages or nvs version mismatch, erase.."));
TEST_ESP_OK(nvs_flash_erase());
r = nvs_flash_init();
}