The ESP32 does not have a real EEPROM; instead, the data is stored in the external flash in the non-volatile storage (NVS) partition. The problem is, that the structure of this partition is proprietary. Only the SDK knows "where to find what" within NVS and any access to this partition is done using the SDK.
Unfortunately, the EEPROM.h
library uses the NVS partition to store its values.
As the way how data is stored within NVS is closed source, you can't build a flash image that is guaranteed to work in different sketches or different versions of the SDK.
So, if you need to upload pre-made non-volatile data, the EEPROM.h
library is practically useless.
A convenient alternative is to put that data in a file and store that file in a filesystem like SPIFFS.h
.
This way, you define how data is stored/accessed yourself, so it's much less likely you run into problems when the core experiences changes.
Data upload is straight forward using esptool.py
.