Commit Graph

150 Commits

Author SHA1 Message Date
Laukik Hase
c9f7bcd452 feat(esp_tee): Support the nvs_flash for the ESP-TEE build 2025-05-04 18:03:28 +05:30
Radek Tandler
0b8f661c08 Merge branch 'bugfix/storage_nvs_key_overwrite' into 'master'
fix(nvs): fixed erasing of old values if new data type is not the same

Closes IDFGH-14832

See merge request espressif/esp-idf!37888
2025-04-10 20:01:35 +08:00
radek.tandler
d9bc77e422 fix(nvs): fixed erasing of old values if new data type is not the same
Closes https://github.com/espressif/esp-idf/issues/15559
2025-04-10 10:55:51 +02:00
Martin Vychodil
decbd36008 Merge branch 'contrib/github_pr_15656' into 'master'
fix(nvs_flash): removed usage of 'using namepsace std' in a header file (GitHub PR)

Closes IDFGH-14947

See merge request espressif/esp-idf!38086
2025-03-28 22:02:19 +08:00
Tomáš Rohlínek
be6e24370f fix(storage/nvf_flash): fixup additions from PR 2025-03-28 12:57:33 +01:00
Adam Múdry
4a6b99bc4a feat(nvs): Optimize read-only NVS loading 2025-03-27 12:42:04 +01:00
Adam Múdry
d8ebca368c feat(nvs): Allow read-only NVS partitions smaller than 0x3000
E.g. for factory settings data

Closes https://github.com/espressif/esp-idf/issues/15317
2025-03-27 15:50:27 +08:00
timoxd7
fc418cc782 fix(nvs_flash): removed usage of 'using namepsace std' in a header file 2025-03-26 13:35:33 +01:00
harshal.patil
cadd6b8bcc feat(nvs_flash): Support reading encrypted NVS partitions in the bootloader 2025-01-29 18:51:29 +05:30
harshal.patil
37de702e97 feat(nvs_flash): Enable the usage of mbedtls from ROM for bootloader NVS decryption
Bootloader NVS decryption uses hardware ROM APIs to decrypt the NVS contents,
but for targets that do not support AES hardware we could benefit by using the
software mbedtls library that is present in the ROM directly.
2025-01-29 18:51:29 +05:30
harshal.patil
7c3832ff2a feat(nvs_flash): Add a minimal XTS-AES layer for the bootloader 2025-01-29 18:51:29 +05:30
harshal.patil
4c38499303 fix(esp_partition): Support reading unencrypted partitions by the bootloader
- When flash encryption is enable to support reading a partition that is not
marked as "encrypted", the `esp_partition_read()` API of bootloader build
should be redirected to the `bootloader_flash_read()` API.
2025-01-29 18:51:28 +05:30
Alexey Lapshin
888b5f7e8d feat(newlib): add picolibc support 2024-12-02 21:35:56 +07:00
radek.tandler
c445ec134b feat(nvs_flash): Implemented basic nvs_flash support for bootloader 2024-11-14 11:56:45 +01:00
Sonika Rathi
d5da858cd9 refactor: remove dependency on spi_flash include for sector size 2024-09-26 13:01:24 +08:00
radek.tandler
b937cb7549 fix(storage/nvs): Fixed hadling of inconsistent values in NVS entry header
feat(storage/nvs): Added test cases for damaged entries with correct CRC
2024-08-20 10:57:24 +02:00
radek.tandler
ffaf1d2968 feat(nvs_flash): Added Kconfig option contolling NVS heap allocation source
NVS configuration is extended with Kconfig option controlling RAM area for
NVS heap allocation. Either Internal RAM or SPIRAM can be chosen.
Tests were extended to check memory consumption from Internal and SPIRAM pool with respect
to the Kconfig option chosen.
Documentation was extended with notes related to NVS behavior in various situations.
2024-06-06 08:25:51 +02:00
Adam Múdry
8e43afef3b fix(nvs): Fix possible collision with app trace sysview defines
Global.h defines U8, I8, U16, etc. symbols, which are also used in NVS
as a part of custom enum class and this can cause a compilation error
during macro expansion, when sysview is enabled and FreeRTOS.h is included in NVS
2024-04-12 13:46:51 +02:00
Ivan Grokhotkov
10cc15b150 fix(storage): applied spelling fixes by codespell pre-commit hook 2024-03-28 13:00:54 +01:00
radek.tandler
508d9a6a22 fix(nvs): Fixed Page::findItem performance degradation
Wrong condition gating the hash map use causing performance degradation was corrected

The condition enabling use of hash map when page is searched for Item was modified
to correct the bug introduced by commit addressing delete of any BLOB_INDEX Items.
This correction returns the performance of findItem to the state before previous change.
2024-03-07 19:47:33 +01:00
radek.tandler
fc6951e193 fix(nvs): Improved lockig mechanism for initialization phase 2024-02-24 07:55:32 +01:00
radek.tandler
635e6b154e fix(nvs): eraseMultiPageBlob to robustly delete all related BLOB_DATA records and respect VER_ANY 2024-02-24 07:55:32 +01:00
radek.tandler
cad09ea461 fix(nvs): corrected findItem to return BLOB_DATA when chunkIndex = CHUNK_ANY 2024-02-24 07:55:22 +01:00
radek.tandler
d879ec5248 fix(nvs): added check and erase of mismatched BLOB_DATA on init 2024-02-22 15:15:10 +01:00
Ivan Grokhotkov
5b53fb07fb fix(nvs): prevent out of bounds write if blob data is inconsistent 2024-02-22 15:15:10 +01:00
radek.tandler
8740888967 feat(nvs_flash): Added function nvs_find_key
Closes https://github.com/espressif/esp-idf/issues/12155
2023-12-08 17:12:00 +01:00
Adam Múdry
e151184da7 refactor: Remove -Wno-format from storage related components 2023-10-22 17:56:41 +00:00
Adam Múdry
ab1eb37fe8 feat(partition_table): Add read-only partition flag and functionality 2023-10-11 00:01:05 +02:00
radek.tandler
4f659b70e1 fix(nvs_flash): fixed failing nvs_page test 2023-09-26 15:05:20 +00:00
radek.tandler
e8992f500c fix(nvs_flash): nvs_set with same key and different data type
Function now always rewrites old value under same key
regardless existing data type. Users requiring old API behaviour
can enable it by kconfig option CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY
2023-09-26 15:05:20 +00:00
radek.tandler
f693b78f93 feature(nvs_flash) : added support iteration over namespace by index - review changes 2023-08-29 16:05:02 +02:00
Ivan Grokhotkov
92ff04ebea nvs: use 'handle' argument name for consistency 2023-08-29 13:59:34 +02:00
Cody P Schafer
f2af1c5305 nvs: support iteration over namespace by index
Users of the nvs API are likely to have `nvs_handle_t` in all cases, but
not all of them carry around the partition name and namespace name (as
they aren't needed after creating an `nvs_handle_t`).

Allow this common case to use nvs iteration without them tracking
additional data by using the `nvs_handle_t` to locate the namespace
index and the partition name by introducing an alterate to
`nvs_entry_find` called `nvs_entry_find_in_handle`, which operates
similarly except that it is given a `nvs_handle_t` instead of partition
and namespace strings.

This is somewhat more limited than the `nvs_entry_find` API as one
cannot examine all keys in a given partition.
2023-08-29 13:59:34 +02:00
radek.tandler
3ffb8f8ffd nvs: nvs_get_stats fixed test, improved comment 2023-08-08 08:43:19 +02:00
radek.tandler
ac6c03fad1 change(nvs_flash): nvs_get_stats extended, API documentation improved 2023-08-08 08:43:19 +02:00
KonstantinKondrashov
e72061695e all: Removes unnecessary newline character in logs
Closes https://github.com/espressif/esp-idf/issues/11465
2023-06-09 03:31:21 +08:00
Laukik Hase
c1bed366ba nvs_flash: Add support for HMAC-based NVS encryption keys protection scheme
- This features allows the NVS encryption keys to be derived and protected using
  the HMAC peripheral. Since the encryption keys are derived at runtime, they
  are not stored anywhere in the flash and hence this feature does not require
  a separate `nvs_keys` partition.
2023-05-23 13:55:52 +05:30
Jakob Hasse
e6ca481623 bugfix(nvs_flash): fixed potential memory leak in nvs::Storage::init() 2022-12-15 15:37:21 +08:00
Jakob Hasse
91f04aa877 refactor(nvs): custom allocator for all objects allocated in NVS 2022-12-05 18:59:33 +01:00
Ivan Grokhotkov
7a1e19edf1 nvs_flash: replace strncpy + manual null termination with strlcpy
Since libbsd is now a build dependency on Linux, strncpy can be
replaced with the safer and less verbose strlcpy.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov
bee241b0e2 nvs_flash: remove leftover ESP_ERROR_CHECKS
Similar to the asserts, these are replaced by error checks.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov
02661081be nvs_flash: make nvs_flash_init usable for Linux target
Since the partition API is now supported for Linux target builds,
this function can now be used.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov
bfb6f31872 nvs_flash: remove unnecessary check that the data pointer is in DROM
spi_flash driver knows how to write data from cache (DROM or PSRAM)
into flash, so the extra check in nvs_flash is unnecessary.
Besides, the hardcoded address limit (0x3ff00000) is wrong for some
of the newer chips.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov
08e41973f0 nvs_flash: update intrusive_list for compatibility with C++17
std::iterator is deprecated since C++17, the code produces a warning
when compiled with clang and libc++.
2022-08-17 12:20:36 +02:00
Cao Sen Miao
a690a87829 spi_flash: Remove legacy spi_flash drivers 2022-07-01 11:01:34 +08:00
Ivan Grokhotkov
87180907f7 Merge branch 'bugfix/nvs_part_ptr_wrong_init' into 'master'
bugfix (nvs_flash): Fix nvs_flash_init_partition_ptr

Closes IDFGH-7503 and IDFGH-7152

See merge request espressif/esp-idf!18503
2022-06-23 21:23:39 +08:00
Djordje Nedic
bbc3add0e3 tools: overhaul csv handling for mfg_gen and nvs_partition_gen
This fixes the issue where multiline strings and strings with delimiters inside the nvs input csv file were incorrectly parsed, and adds back the ability to add comment lines anywhere in the CSV file.

The issue stems from the move away from the python built in csv module to manual parsing, which was made after moving away from using the csv module to parse mfg data.

This reverts back to using the csv module for parsing and writing csv data in both mfg_gen and nvs_partition_gen, fixes the original issue in mfg_gen and improves code quality which makes the code more readable and maintainable.

Closes https://github.com/espressif/esp-idf/issues/7175
2022-06-15 12:31:49 +00:00
ioio
a759e00958 bugfix (nvs_flash): Fix nvs_flash_init_partition_ptr
Added unit test case.

Closes https://github.com/espressif/esp-idf/pull/8755

Signed-off-by: Jakob Hasse <jakob.hasse@espressif.com>
2022-06-15 10:38:56 +08:00
Anton Maklakov
25cee26784 Merge branch 'bugfix/storage-warnings' into 'master'
nvs: minor warning fixes

See merge request espressif/esp-idf!18313
2022-05-31 13:46:13 +08:00
Anton Maklakov
b3a6c3bcb5 nvs: suppress -Wstringop-truncation warning 2022-05-30 13:11:25 +07:00