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

Контроллеры на основе ESP8266
Ответить
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

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

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

Кто-то знает особенности их распределения во Flash? Может надо ставить длину кратную чему-то? Либо составлять между ними неиспользуемые промежутки?
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

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

Теперь сбои записи переменных изредка бывают и видны сразу, а внезапное исчезновение прекратилось.
Аватара пользователя
Phazz
Полковник
Сообщения: 3115
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 232 раза
Поблагодарили: 110 раз

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

Сообщение Phazz »

Я перетащил из flash памяти в SPIFFS. Получилось очень удобно, теперь после прошивки все изменения настроек остаются.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

Phazz писал(а): 18 авг 2019, 08:39 Я перетащил из flash памяти в SPIFFS. Получилось очень удобно, теперь после прошивки все изменения настроек остаются.
Не знаю, что не так я делаю, но впечатление что EEPROM (который во Flash) перезаписывается всегда "целиком", всем массивом 4096. Нельзя записать 2 параметра из 10. При сохранении нужно писать все 10 одновременно (8 - старыми параметрами). Как то уже приноровился, но периодически "стреляет".
Думаю, для SPIFFS файла это тоже актуально. Вы сколько их пишете? Для каждой переменной свой файл? Буду благодарен за теоретический совет. У меня в проектах сейчас 20-30 системных параметров, в основном строковых и возня с ними, конечно, утомляет...
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

[ref=#808080]Phazz[/ref], Примерчик не помешал бы...
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
Phazz
Полковник
Сообщения: 3115
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 232 раза
Поблагодарили: 110 раз

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

Сообщение Phazz »

[ref]ivanpost[/ref], пишу в один файл

Отправлено спустя 11 минут :
Вот пример
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя