Как установить начальное значение eeprom при перепрошивке ESP32
Поскольку я использую EEPROM для сохранения данных, таких как подготовка Wi-Fi (SSID и пароль), я хотел бы убедиться, что при первом запуске ESP32 он находит начальный '\0' для SSID, чтобы он не попадал в блок кода подключения Wi-Fi.
Для этого мне нужно установить начальные значения в EEPROM при прошивке прошивки.
Я использую платформу IO.
Как это сделать?
1 ответ
ESP32 не имеет реального EEPROM; вместо этого данные хранятся во внешней флэш-памяти в разделе энергонезависимой памяти (NVS). Проблема в том, что структура этого раздела является проприетарной. Только SDK знает, "где что найти" в NVS, и любой доступ к этому разделу осуществляется с помощью SDK.
К сожалению, библиотека EEPROM.h
использует раздел NVS для хранения своих значений.
Поскольку способ хранения данных в NVS является закрытым исходным кодом, вы не можете создать флэш-образ, который гарантированно будет работать в разных скетчах или разных версиях SDK.
Таким образом, если вам нужно загрузить готовые энергонезависимые данные, библиотека EEPROM.h
практически бесполезна.
Удобная альтернатива-поместить эти данные в файл и сохранить его в файловой системе, такой как SPIFFS.h
.
Таким образом, вы сами определяете, как хранятся и доступны данные, поэтому гораздо менее вероятно, что вы столкнетесь с проблемами, когда основной опыт изменится.
Загрузка данных происходит прямолинейно с помощью esptool.py
.
- ESP32: лучший способ встраивания сертификатов
- заставить EEPROM.h использовать пользовательский раздел eeprom
- Esp32: загрузить файл eeprom
- Как постоянно считывать/записывать переменные на Arduino Due (без EEPROM/shield)?
- Не могу прошить ESP 32 Wroom
- Arduino EEPROM сохраняет старые данные после прошивки новой программой
- EEPROM.get возвращает неверные данные
- Можно ли загружать и запускать код из EEPROM во время загрузки?
Вероятно, вам лучше использовать 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