2.7 KiB
Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
---|
NVS Partition Image Generation on Build Example
(See the README.md file in the upper level 'examples' directory for more information about examples.)
This example demonstrates how to use the NVS image generation tool nvs_partition_gen.py to automatically create a NVS partition image from the contents of a CSV file during build, with an option of automatically flashing the created image on invocation of idf.py -p PORT flash
. For more information, see description of nvs_partition_gen.py
on the ESP-IDF Programming Guide under API Reference > Storage API > NVS Partition Generator Utility.
The following gives an overview of the example:
-
There is a file
nvs_data.csv
from which the NVS partition image will be created. -
The function
nvs_create_partition_image
is used to specify that a NVS image should be created during build for thenvs
partition. It is called from the main component's CMakeLists.txt.FLASH_IN_PROJECT
specifies that the created image should be flashed on invocation ofidf.py -p PORT flash
together with app, bootloader, partition table, etc. For both build systems, the image is created on the example's build directory with the output filenamenvs.bin
. -
Upon invocation of
idf.py -p PORT flash monitor
, application loads and finds there is already a valid and pre-filled NVS partition in thenvs
partition with values same as those innvs_data.csv
file. The application is then able to read those values.
How to use example
Build and flash
To run the example, type the following command:
idf.py -p PORT flash monitor
(To exit the serial monitor, type Ctrl-]
.)
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
Example output
Here is the example's console output:
...
I (357) example: Opening Non-Volatile Storage (NVS) handle
I (357) example: Done
I (357) example: Reading values from NVS
255
-128
65535
4294967295
-2147483648
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Fusce quis risus justo.
Suspendisse egestas in nisi sit amet auctor.
Pellentesque rhoncus dictum sodales.
In justo erat, viverra at interdum eget, interdum vel dui.
I (387) example: Reading values from NVS done - all OK
The logic of the example is contained in a single source file, and it should be relatively simple to match points in its execution with the log outputs above.