Системные переменные в Esp8266. Пропадают из Flash

При перезапуске или отключении питания.

Контроллеры на основе ESP8266
Ответить
Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Системные переменные в Esp8266. Пропадают из Flash

#1

Сообщение ivanpost » 01.08.2019{, 16:08}

В продолжение к моей предыдущей теме про потерю имени сети.

Выяснена закономерность, какая то переменная стабильно стирается из EEPROM (который Flash) при выключении-включении.
Сначала это было имя точки доступа, теперь все перешло на имя сервера MQTT. Не зависит от платы и типа платы.
Сначала такие проблемы были когда не правильно зарезервировал место для строковых СИСТЕМНЫХ переменных.
Но теперь все 10 раз проверил. Длинны взял с запасом...

Кто-то знает особенности их распределения во Flash? Может надо ставить длину кратную чему-то? Либо составлять между ними неиспользуемые промежутки?

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Системные переменные в Esp8266. Пропадают из Flash

#2

Сообщение ivanpost » 18.08.2019{, 00:12}

Сам отвечу, как минимизировал потери:
1. В "EEPROM" пишу только самые нужные переменные, в т.ч. системные, касающиеся точки доступа и клиента оставляю без сохранения.
2. В строковых переменных оставил некоторый запас по длинне, а то выяснялось, что строка оказывалась длиннее выделенного места.
3. Главное. Esp "не любит" хаотичного чтения-записи системных переменных, например, при приеме одной строки из UART на лету велась запись. В результате, какие то переменные начинали писаться, а в это время нужно было записывать новые. Да еще в это же время шло считывание. Это работало не стабильно. Теперь все храню в переменных и произвожу запись связанной группы переменных в ситемные параметры в одной плате. Так же считываю системные параметры в переменную периодически (не в каждом цикле) и в коде уже использую эти простые переменные.

Теперь сбои записи переменных изредка бывают и видны сразу, а внезапное исчезновение прекратилось.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Системные переменные в Esp8266. Пропадают из Flash

#3

Сообщение Phazz » 18.08.2019{, 08:39}

Я перетащил из flash памяти в SPIFFS. Получилось очень удобно, теперь после прошивки все изменения настроек остаются.

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Системные переменные в Esp8266. Пропадают из Flash

#4

Сообщение ivanpost » 30.06.2020{, 21:15}

Phazz писал(а):
18.08.2019{, 08:39}
Я перетащил из flash памяти в SPIFFS. Получилось очень удобно, теперь после прошивки все изменения настроек остаются.
Не знаю, что не так я делаю, но впечатление что EEPROM (который во Flash) перезаписывается всегда "целиком", всем массивом 4096. Нельзя записать 2 параметра из 10. При сохранении нужно писать все 10 одновременно (8 - старыми параметрами). Как то уже приноровился, но периодически "стреляет".
Думаю, для SPIFFS файла это тоже актуально. Вы сколько их пишете? Для каждой переменной свой файл? Буду благодарен за теоретический совет. У меня в проектах сейчас 20-30 системных параметров, в основном строковых и возня с ними, конечно, утомляет...

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Системные переменные в Esp8266. Пропадают из Flash

#5

Сообщение AlexCrane » 30.06.2020{, 22:20}

Phazz, Примерчик не помешал бы...
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Системные переменные в Esp8266. Пропадают из Flash

#6

Сообщение Phazz » 02.07.2020{, 11:03}

ivanpost, пишу в один файл

Отправлено спустя 11 минут :
Вот пример
Вложения
Параметры Spiffs.zip
(309.52 КБ) 72 скачивания

Ответить

Вернуться в «ESP8266»