Файловая система FAT и множество записей - PullRequest
2 голосов
/ 01 сентября 2010

Я рассматриваю возможность использования файловой системы FAT для встроенного приложения для регистрации данных. Регистратор создаст только один файл, к которому он непрерывно добавляет 40 байтов данных каждую минуту. После пары лет использования это будет более миллиона циклов записи. Мой вопрос: изменяет ли система FAT таблицу размещения файлов при каждом добавлении файла? Как он отслеживает, где находится конец файла? Он просто помещает маркер EndOfFile в конец или сохраняет длину в таблице FAT? Если бы она меняла таблицу FAT каждый раз, когда я делаю запись, я бы испортил флэш-память всего за пару лет. Правильно ли использовать систему FAT для этого приложения?

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

Ответы [ 5 ]

3 голосов
/ 01 сентября 2010

FAT обновляет таблицу каталогов, когда вы изменяете файл (по крайней мере, так будет, если вы закроете файл, я не уверен, что произойдет, если вы этого не сделаете).Это не только размер файла, но и дата последнего изменения:

http://en.wikipedia.org/wiki/File_Allocation_Table#Directory_table

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

С другой стороны, если событие, о котором вы беспокоитесь, происходит только каждую минуту, то выдолжен быть в состоянии значительно ускорить это в тесте, чтобы увидеть, действительно ли записи в журнале за 2 года действительно портят ваше реальное оборудование.Может быть даже быстрее, чем пытаться найти соответствующие документы производителя ...

2 голосов
/ 01 сентября 2010

Нет, драйвер файловой системы флеш-памяти специально разработан для минимизации износа и распространения его по ячейкам памяти.Воспользовавшись почти нулевым временем поиска.У вас низкие скорости передачи данных, это будет продолжаться долго.Указание ежегодной замены носителя является простым способом минимизации риска.

0 голосов
/ 09 сентября 2010

Проверяли ли вы, что происходит с согласованностью файловой системы FAT в случае сбоя питания или сброса вашего устройства?

Когда ваше устройство испытывает такой сбой, вы не должны терять только ту запись журнала, которую вы только что записали.Старые записи должны оставаться в силе.

Нет, FAT - это не то, что нужно, если вам нужно прочитать данные обратно.

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

0 голосов
/ 01 сентября 2010

Большие флеш-чипы делятся на подстраницы, кратные степени 264 (256 + 8), которые кратны степени двойки, страницам, кратным степени двойки, и блокам, которые являются степень двойки этого. Пустая страница будет читаться как все FF. Можно написать страницу одновременно; наименьшая единица, которую можно написать, это подстраница. Как только подстраница написана, она не может быть переписана, пока весь блок, содержащий ее, не будет удален. Обратите внимание, что на меньших чипах флэш-памяти можно записывать байты страницы по отдельности, при условии, что запись выполняется только в пустые байты, но на многих больших чипах это невозможно. Я думаю, что в чипах нынешнего поколения размер подстраницы составляет 528 байт, размер страницы - 2048 + 64 байта, а размер блока составляет 128 КБ + 4096 байт.

Карта MMC, SD, CompactFlash или другая подобная карта (в основном все, что угодно, кроме SmartMedia) объединяет флэш-чип с процессором для обработки записей в стиле ПК. По сути, происходит следующее: когда записывается сектор, контроллер находит пустую страницу, записывает новую версию этого сектора вместе с 16-ю байтами информации «заголовка», указывающей, что это за сектор, и т. Д. Затем контроллер сохраняет карта расположения всех разных страниц информации.

Карта SmartMedia напрямую предоставляет интерфейс флэш-памяти и использует камеру, кард-ридер или другое устройство, использующее ее для выполнения такого управления данными в соответствии со стандартными методами.

Обратите внимание, что для отслеживания местонахождения всех 4 000 000 страниц на 2-гигабайтной карте потребуется либо 12-16 мегабайт ОЗУ, либо использование 12-16 мегабайт флэш-памяти в качестве вторичной таблицы поиска. Использование последнего подхода будет означать, что каждая запись на флэш-страницу также потребует записи в справочную таблицу. Я совсем не удивлюсь, если такой подход используют медленные флеш-устройства (чтобы отслеживать только около 16 000 «косвенных» страниц).

В любом случае, наиболее важным наблюдением является то, что время записи флэш-памяти непредсказуемо, но обычно вам не нужно беспокоиться об износе флэш-памяти.

0 голосов
/ 01 сентября 2010

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

...