• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Скорость чтения SPIFF

CodeNameHawk

Moderator
Команда форума
Лучше подскажите, существует ли механизм вызова прерывания при изменении содержимого файла по WiFi?
Я не слышал о таком.
Потому как только что реализовал опрос каждого параметра через каждые 200 циклов
А смысл ? Когда переворачиваешь все с ног на голову, все видится иначе.
WiFi сам ничего не пишет, это делает процессор в подпрограмме из какой то библиотеки, а в нее можно дописать то что нужно или просто выставить флаг - получены новые данные - нужны действия.
 

CodeNameHawk

Moderator
Команда форума
Понял, почему вы так рветесь читать содержимое файла, вы кажется, что данные туда сами запишутся.
 

ART_HA

Member
Я не слышал о таком.
И это очень плохо. :(
Потому как я сделал опрос данных каждые 2 сек, для ввода параметров это приемлемо.
Но вот паузы в выходном сигнале длительностью 80 мсек мне не нравятся.
Главным образом потому, что я не знаю как потребитель этого сигнала среагирует на такую ИМХО большую паузу.
 

pvvx

Активный участник сообщества
Отмечаем в Flash неиспользуемую область. Типично это 2 мегабайта.

2 мегабайта = 2*1024*1024 = 2097152 байта.

Гарантированное кол-во перезаписей у самой ужасной SPI-Flash – 10 тысяч циклов.

Через это кол-во перезаписей производитель не гарантирует сохранение записанных данных на 25 лет. Итоговое кол-во перезаписей в реальности к миллиону, если не требуется хранение данных более 25 лет. Так же любой производитель SPI-Flash требует периодическое возобновление ячеек Flash путем перезаписи. Иначе никакой гарантии о 25 лет хранения в специальных условиях не идет (+25С и прочее).

Если дописывать ваши 8 байт каждую секунду, тогда Flash “протрется” через

10000*(2*1024*1024/60/60/24/365)/8 = 83.125 лет.

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

Чтение по указателю 8 байт из qio-spi-flash на 80 МГц занимает значительно менее 1 мкс (сильно зависит от ваших подвигов в программировании, т.к. непрерывный поток ESP8266 из qio-spi-flash примерно равен 25 мегабайт в сек при правильном программировании).

При записи нового блока, при переходе границы – стираете следующий сектор, а в предыдущем, уже заполненном прописываете в начало сектора uint32 = 0 (метку, что сектор заполнен для упрощения поиска конца при следующем холодном старте).

Код на такой круговой буфер в Flash есть готовый и разный.
 

pvvx

Активный участник сообщества
Это, в разных вариантах, давно xалявно валяется на github.
Но, судя по сообщениям, проблема у ТС в чем-то другом - и выразить её он не может.
Наверно что-то сИкретное :)
 
Сверху Снизу