eav1978
Mar 26 2008, 19:13
Подскажите, как лучше организовать запись данных во флешку AT45DB321. Запись нужно проводить 1 раз в минуту во временный буфер(допустим в 1-ю страницу). Каждый час данные из временного буфера будут переписываться в часовой архив который будет начинаться со 2-й или 3-й страницы. Писаться будет по 88 байт, т.е. по 6 записей на страницу. Часовой архив ведется не менее 4-х лет.
rezident
Mar 26 2008, 19:39
Вопрос не оригинальный. Для увеличения ресурса Flash-памяти при журналировании обычно используют циклическую запись с временными метками. Т.е. пишите последовательно по всей памяти DataFlash, сопровождая начало каждой записи меткой времени (в формате UNIX это 32-битное число) и завершая запись LRC или CRC8, например, для контроля ее целостности.
Getmanov
Mar 26 2008, 19:42
Зачем писать в первую страницу. Пишите в буфер микросхемы, их там аж два.
Допустим раз в час переписывайте буфер в нужную страницу, а в первом байте пишите номер записи, через час читаете последнюю записанную страницу во второй буфер и определяя по номеру записи смещение, дописываете данные из первого буфера. Записываете во флеш.
Использовать в качестве буфера первую (или любую другую страницу) не рекомендую, сталкивался, что при частой записи одной и той же страницы с ней через время могут возникнуть проблемы.
eav1978
Mar 26 2008, 20:07
Буфер разве энергонезависимый?
rezident
Mar 26 2008, 20:21
Цитата(eav1978 @ Mar 27 2008, 01:07)

Буфер разве энергонезависимый?
Буфер у DataFlash это ОЗУ, естественно при пропадании питания информация в нем пропадет. А разве у вас в устройстве не предусмотрено сигнала аварии, возникающего при снижении питания ниже нормы? Вообще ваше устройство с сетевым питанием или с батарейным или сетевое с резервным питанием?
Harbour
Mar 27 2008, 05:34
supervisor/cpu+flash через диод буферируем кондером - при емкости в 10 мкф можно ОЗУ за это время 10 раз сбросить
Getmanov
Mar 27 2008, 14:16
Цитата(eav1978 @ Mar 26 2008, 22:07)

Буфер разве энергонезависимый?
А где хоть слово про энергонезависимость. Поставьте батарейку, при таком количестве циклов записи флеш сколько проживёт?
За год 525600 циклов, гарантированно дают 100000, вот и думайте.
galjoen
Mar 27 2008, 18:02
Цитата(Getmanov @ Mar 27 2008, 17:16)

гарантированно дают 100000, вот и думайте.
Даже 10000. Т.к. после этого надо другие страницы в этом-же блоке перезаписать. Т.е. если с момента записи страницы в этом блоке было более 10000 записей в другие страницы - эта страница м.б. запорчена. А реализовывать счётчики кол-ва записей страниц - это такой гемор. Думаю, что никто этого не делает. Введение-же циклической записи эту проблему само-собой снимает.
У АТ45DBххх максимум 50 тыс циклов перезаписи (информация получена напрямую с Атмела) пару лет назад, когда критичные данные начали портиться по причине многократной записи в одну и ту же страницу.
Для минимизации рисков ни в коем случае не надо писать в одну и ту же страницу.
Цитата(eav1978 @ Mar 26 2008, 21:13)

Подскажите, как лучше организовать запись данных во флешку AT45DB321...
Я поднимал похожую тему, правда с более конкретным вопросом:
Хранение указателя на конец данных в AT45xx DataFlash, Как лучше организовать?Почитайте, может какую хорошую идею для вашего случая почерпнете.
Свою проблему я решил немного иначе, чем мне советовали. Может быть, когда весь прибор до конца доделаю и испытаю, то отпишу подробно про свой алгоритм работы.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.