Файловая система FAT и множество записей
Я рассматриваю возможность использования файловой системы FAT для встроенного приложения регистрации данных. Регистратор создаст только один файл, к которому он непрерывно добавляет 40 байтов данных каждую минуту. После пары лет использования это будет более миллиона циклов записи. МОЙ ВОПРОС: система FAT изменяет таблицу размещения файлов каждый раз, когда файл добавляется? Как он отслеживает, где находится конец файла? Он просто помещает маркер EndOfFile в конец или сохраняет длину в таблице FAT? Если бы она меняла таблицу FAT каждый раз, когда я делаю запись, я бы испортил флэш-память всего за пару лет. Правильно ли использовать FAT-систему для этого приложения?
Моя другая мысль состоит в том, что я мог бы просто хранить необработанные байты данных на карте памяти и ставить маркер EndOfFile в конце моих данных каждый раз, когда я делаю запись. Это менее желательно, потому что это означает, что единственный способ получить данные из регистратора - через последовательные передачи, а не через ПК и кард-ридер.
5 ответов
FAT обновляет таблицу каталогов при изменении файла (по крайней мере, если вы закроете файл, я не уверен, что произойдет, если вы этого не сделаете). Это не только размер файла, но и дата последнего изменения:
http://en.wikipedia.org/wiki/File_Allocation_Table
Если ваш контроллер флеш-памяти не выполняет прозрачное выравнивание износа, а ваш флеш-драйвер не перемещает вещи в попытке выровнять износ, тогда, я думаю, вы можете вызвать износ. Обратитесь к своему руководству, но если вы используете потребительское оборудование, я бы подумал, что все где-то имеет выравнивание износа.
С другой стороны, если событие, о котором вы беспокоитесь, происходит только каждую минуту, то вы должны быть в состоянии значительно ускорить это в тесте, чтобы увидеть, действительно ли записи в журнале за 2 года действительно портят ваше реальное оборудование. Может быть даже быстрее, чем пытаться найти соответствующие документы производителя...
Нет, драйвер файловой системы флэш-памяти специально разработан, чтобы минимизировать износ и распространить его по ячейкам памяти. Воспользовавшись почти нулевым временем поиска. Ваша скорость передачи данных низкая, это будет продолжаться долго. Указание ежегодной замены носителя является простым способом минимизации риска.
Проверяли ли вы, что происходит с согласованностью файловой системы FAT в случае сбоя питания или сброса вашего устройства?
Когда ваше устройство испытывает такой сбой, вы не должны терять только ту запись журнала, которую вы только что записали. Старые записи должны оставаться в силе.
Нет, FAT - это не то, что нужно, если вам нужно прочитать данные.
Вы должны дополнительно рассмотреть, что происходит, если флэш-память заполнена данными. Как вы получаете место для новых данных? Вам необходимо определить требования для этого пункта.
Если ваша единственная операция - добавление к одному файлу, может быть проще отказаться от файловой системы и использовать флэш-устройство в качестве ленты данных. Вы должны принять во внимание тип вспышки и размер ее блока.
Большие флеш-чипы разделены на подстраницы, кратные степени 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 "косвенных" страниц).
В любом случае, самое важное наблюдение заключается в том, что время записи на флэш-память не предсказуемо, но обычно вам не нужно беспокоиться об износе флэш-памяти.