• Система автоматизации с открытым исходным кодом на базе 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.
Но, судя по сообщениям, проблема у ТС в чем-то другом - и выразить её он не может.
Наверно что-то сИкретное :)
 
Сверху Снизу