mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
nvs_util: Fix to support write of multiple singlepage big blob data
Closes https://github.com/espressif/esp-idf/issues/3011 (cherry picked from commit ce4944edf01b2a4c997eafe36b66d71f98f2fe29)
This commit is contained in:
parent
3ec0f415a5
commit
76e4ea7f68
@ -158,7 +158,7 @@ You can also provide the format version number (in any of the two modes):
|
||||
You can run the utility in this format by setting the version parameter to v2, as shown below.
|
||||
A sample CSV file is provided with the utility::
|
||||
|
||||
python nvs_partition_gen.py --input sample_multipage_blob.csv --output partition_multipage_blob.bin --size 0x3000 --version v2
|
||||
python nvs_partition_gen.py --input sample_multipage_blob.csv --output partition_multipage_blob.bin --size 0x4000 --version v2
|
||||
|
||||
|
||||
**Multipage Blob Support Disabled (v1):**
|
||||
|
@ -379,9 +379,14 @@ class Page(object):
|
||||
total_entry_count = data_entry_count + 1 # +1 for the entry header
|
||||
|
||||
# Check if page is already full and new page is needed to be created right away
|
||||
if encoding in ["string", "hex2bin", "binary", "base64"]:
|
||||
if (self.entry_num + total_entry_count) >= Page.PAGE_PARAMS["max_entries"]:
|
||||
raise PageFullError()
|
||||
if version == Page.VERSION1:
|
||||
if encoding in ["string", "hex2bin", "binary", "base64"]:
|
||||
if (self.entry_num + total_entry_count) >= Page.PAGE_PARAMS["max_entries"]:
|
||||
raise PageFullError()
|
||||
else:
|
||||
if encoding == "string":
|
||||
if (self.entry_num + total_entry_count) >= Page.PAGE_PARAMS["max_entries"]:
|
||||
raise PageFullError()
|
||||
|
||||
# Entry header
|
||||
entry_struct = bytearray(b'\xff')*32
|
||||
|
@ -11,4 +11,6 @@ dummyBase64Key,data,base64,MTIzYWJj
|
||||
hexFileKey,file,hex2bin,testdata/sample.hex
|
||||
base64FileKey,file,base64,testdata/sample.base64
|
||||
stringFileKey,file,string,testdata/sample.txt
|
||||
blobFileAKey,file,binary,testdata/sample_blob.bin
|
||||
blobFileBKey,file,binary,testdata/sample_blob.bin
|
||||
binFileKey,file,binary,testdata/sample_multipage_blob.bin
|
||||
|
|
@ -11,4 +11,6 @@ dummyBase64Key,data,base64,MTIzYWJj
|
||||
hexFileKey,file,hex2bin,testdata/sample.hex
|
||||
base64FileKey,file,base64,testdata/sample.base64
|
||||
stringFileKey,file,string,testdata/sample.txt
|
||||
blobFileAKey,file,binary,testdata/sample_blob.bin
|
||||
blobFileBKey,file,binary,testdata/sample_blob.bin
|
||||
binFileKey,file,binary,testdata/sample_singlepage_blob.bin
|
||||
|
|
1
components/nvs_flash/nvs_partition_generator/testdata/sample_blob.bin
vendored
Normal file
1
components/nvs_flash/nvs_partition_generator/testdata/sample_blob.bin
vendored
Normal file
@ -0,0 +1 @@
|
||||
start0000000000000000000000start0123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef00000000000000000123456789abcdef0000000000000000end00000000000000000000000000end
|
@ -1994,14 +1994,14 @@ TEST_CASE("Recovery from power-off during modification of blob present in old-fo
|
||||
TEST_ESP_ERR(p3.findItem(1, ItemType::BLOB, "singlepage"), ESP_ERR_NVS_NOT_FOUND);
|
||||
}
|
||||
|
||||
static void check_nvs_part_gen_args(char const *part_name, char const *filename, bool is_encr, nvs_sec_cfg_t* xts_cfg)
|
||||
static void check_nvs_part_gen_args(char const *part_name, int size, char const *filename, bool is_encr, nvs_sec_cfg_t* xts_cfg)
|
||||
{
|
||||
nvs_handle handle;
|
||||
|
||||
if (is_encr)
|
||||
TEST_ESP_OK(nvs_flash_secure_init_custom(part_name, 0, 3, xts_cfg));
|
||||
TEST_ESP_OK(nvs_flash_secure_init_custom(part_name, 0, size, xts_cfg));
|
||||
else
|
||||
TEST_ESP_OK( nvs_flash_init_custom(part_name, 0, 3) );
|
||||
TEST_ESP_OK( nvs_flash_init_custom(part_name, 0, size) );
|
||||
|
||||
TEST_ESP_OK( nvs_open_from_partition(part_name, "dummyNamespace", NVS_READONLY, &handle));
|
||||
uint8_t u8v;
|
||||
@ -2085,7 +2085,7 @@ TEST_CASE("check and read data from partition generated via partition generation
|
||||
|
||||
TEST_ESP_OK(nvs_flash_deinit());
|
||||
|
||||
check_nvs_part_gen_args("test", "../nvs_partition_generator/testdata/sample_singlepage_blob.bin", false, NULL);
|
||||
check_nvs_part_gen_args("test", 3, "../nvs_partition_generator/testdata/sample_singlepage_blob.bin", false, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -2100,7 +2100,7 @@ TEST_CASE("check and read data from partition generated via partition generation
|
||||
"--output",
|
||||
"../nvs_partition_generator/partition_multipage_blob.bin",
|
||||
"--size",
|
||||
"0x3000",
|
||||
"0x4000",
|
||||
"--version",
|
||||
"v2",NULL));
|
||||
} else {
|
||||
@ -2112,7 +2112,7 @@ TEST_CASE("check and read data from partition generated via partition generation
|
||||
|
||||
SpiFlashEmulator emu("../nvs_partition_generator/partition_multipage_blob.bin");
|
||||
|
||||
check_nvs_part_gen_args("test", "../nvs_partition_generator/testdata/sample_multipage_blob.bin",false,NULL);
|
||||
check_nvs_part_gen_args("test", 4, "../nvs_partition_generator/testdata/sample_multipage_blob.bin",false,NULL);
|
||||
|
||||
}
|
||||
|
||||
@ -2266,7 +2266,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
"--output",
|
||||
"../nvs_partition_generator/partition_encrypted.bin",
|
||||
"--size",
|
||||
"0x3000",
|
||||
"0x4000",
|
||||
"--encrypt",
|
||||
"True",
|
||||
"--keyfile",
|
||||
@ -2286,7 +2286,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
cfg.tky[count] = 0x22;
|
||||
}
|
||||
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, 4, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
|
||||
}
|
||||
|
||||
@ -2303,7 +2303,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
"--output",
|
||||
"../nvs_partition_generator/partition_encrypted_using_keygen.bin",
|
||||
"--size",
|
||||
"0x3000",
|
||||
"0x4000",
|
||||
"--encrypt",
|
||||
"True",
|
||||
"--keygen",
|
||||
@ -2333,7 +2333,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
cfg.tky[count] = buffer[count+32] & 255;
|
||||
}
|
||||
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, 4, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
|
||||
|
||||
}
|
||||
@ -2350,7 +2350,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
"--output",
|
||||
"../nvs_partition_generator/partition_encrypted_using_keyfile.bin",
|
||||
"--size",
|
||||
"0x3000",
|
||||
"0x4000",
|
||||
"--encrypt",
|
||||
"True",
|
||||
"--keyfile",
|
||||
@ -2380,7 +2380,7 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
|
||||
cfg.tky[count] = buffer[count+32] & 255;
|
||||
}
|
||||
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
check_nvs_part_gen_args(NVS_DEFAULT_PART_NAME, 4, "../nvs_partition_generator/testdata/sample_multipage_blob.bin", true, &cfg);
|
||||
|
||||
childpid = fork();
|
||||
if (childpid == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user