Цитата(kada @ Sep 6 2007, 17:31)

Выделить несколько страниц для хранения FAT и тем самым создать круговой буфер. В начале FAT предусмотреть некий маркер, по которому можно определить что данная страница содержит в себе валидную FAT. Для чтения из FAT находится страница с маркером. Для записи новой информации в FAT копируется текущая FAT в следующую страницу памяти. В старой затирается маркер. В новой меняются необходимые данные. Вместо маркеров можно использовать индекс номера текущей страницы с валидной FAT. Безусловно, по скорости такое решение далеко не лучший вариант. Зато несложное в реализации путем доработки исходников той же FatFS от ChaN`а
После реального опыта работы с FatFS без внешнего ОЗУ любые движения по перезаписи нескольких копий FAT видится крайне напряжными. Тем более в случае краха FAT'а крайне сложно будет вытянуть данные имея n+1 несинхронизированных копий FAT.
Для реализации же файловых систем, экономно расходующих ресурс циклов перезаписи давно существуют другие решения. Например jffs, jffs2, jffs3 (правда примеров их реализации для Meg'и мне не известно).
Кстати, после более-менее осмысленного применения различных файловых систем в своих девайсах интересует горзадо более актуальный вопрос fail safe систем. Есть некотрые мысли, если кому-то интересно можно продолжить обсуждение в этой ветке или создать новую.
Цитата(Kovrov @ Oct 9 2007, 11:46)

Вот такой вопрос волнует в последнее время..
применяете ли вы, уважаемые колеги, какие нибудь методы контроля за записью или чтением в буфер
дата флеш?
Вопрос встал достаточно ощутимо после того, как попалась дфлешка с полуживым SPI..
и наблюдался такой глюк:
читаю полностью страничку памяти 528 байт
в ней заранее записаны нули..
и при чтении нет нет да промелькнет где то еденичка..
вчера всю голову сломал- думал что это: наводки или косяки в программе.
пока не заменил дфлеш.
Конечно применям.

Недаром размер страницы 528 байт - есть лишние 16 байт для хранения контрольной суммы или исправляющего кода. Очень актуально не только при битом SPI. Плюс верификация записи.
Цитата(alcosar @ Sep 6 2007, 10:48)

Сам ФАТ нужно хранить в ОЗУ либо мк, либо DataFlash. В мк мало ОЗУ. В DataFlash во время записи используются оба буфера, чтобы ускорить запись.
ФАТ в ОЗУ хранить может и не получится... он (ФАТ) может быть и достаточно большой

))
Для реально ускорения работы с DF я применял массив из 4 м/с DF с параллельной записью/чтением буфферов (типа страйпинга в райдах).
Но на самом деле FAT на Meg'e это больше мучений, чем пользы, ИМХО.
Сообщение отредактировал alsenin - Oct 11 2007, 05:36