Как установить начальное значение eeprom при перепрошивке ESP32

Поскольку я использую EEPROM для сохранения данных, таких как подготовка Wi-Fi (SSID и пароль), я хотел бы убедиться, что при первом запуске ESP32 он находит начальный '\0' для SSID, чтобы он не попадал в блок кода подключения Wi-Fi.

Для этого мне нужно установить начальные значения в EEPROM при прошивке прошивки.

Я использую платформу IO.

Как это сделать?

, 👍1

Обсуждение

Вероятно, вам лучше использовать SPIFFS и файл "eeprom.bin". Текущая схема разделения ESP не предусматривает выделенного раздела для eeprom, подобного arduino,а ESP32 не имеет EEPROM..., @Sim Son

вы можете установить/стереть SPIFFS с файлами по умолчанию при загрузке., @dandavis

во-первых, esp32 сам запоминает учетные данные Wi-Fi. вам не нужно его хранить. пример https://github.com/jandrassy/lab/blob/master/ConfigurationAP/ConfigurationAP.ino, @Juraj


1 ответ


1

ESP32 не имеет реального EEPROM; вместо этого данные хранятся во внешней флэш-памяти в разделе энергонезависимой памяти (NVS). Проблема в том, что структура этого раздела является проприетарной. Только SDK знает, "где что найти" в NVS, и любой доступ к этому разделу осуществляется с помощью SDK.

К сожалению, библиотека EEPROM.h использует раздел NVS для хранения своих значений. Поскольку способ хранения данных в NVS является закрытым исходным кодом, вы не можете создать флэш-образ, который гарантированно будет работать в разных скетчах или разных версиях SDK. Таким образом, если вам нужно загрузить готовые энергонезависимые данные, библиотека EEPROM.h практически бесполезна.

Удобная альтернатива-поместить эти данные в файл и сохранить его в файловой системе, такой как SPIFFS.h. Таким образом, вы сами определяете, как хранятся и доступны данные, поэтому гораздо менее вероятно, что вы столкнетесь с проблемами, когда основной опыт изменится.

Загрузка данных происходит прямолинейно с помощью esptool.py.

,