Отмечаем в 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 есть готовый и разный.