2010-07-14 2 views
7

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

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

Приятными для использования были бы простые схемы выравнивания/журналирования износа и функции резервирования и надежности данных. Простое ведение журнала связано с тем, что большинство низкоуровневых флеш-чипов, с которыми я работаю, самые счастливые, когда вы пишете с одного конца на другой и начинаете сверху. Резервирование/надежность данных может использоваться и проверять биты четности или дополнительные дополнительные копии.

Любые предложения?

+0

NAND или NOR флэш? Я предполагаю NAND, так как вы заботитесь о выравнивании одежды? Если это NOR, вам не нужно беспокоиться ни о какой из перечисленных проблем, по крайней мере для большинства ситуаций. –

+0

Таблицы на самом деле не говорят о NAND vs NOR. На самом деле для нескольких устройств, с которыми я работаю, я не уверен, что это строгое выравнивание, которое мне нужно. Техническое описание запрашивает сквозные перезаписи, каждый х записывает в сектор, так что на самом деле может быть какая-то внутренняя операция для дефрагментации. – Digikata

+0

FAT выглядит как ближайший с точки зрения подхода файловой системы, так что пока это отмечено как ответ. Тем не менее, я также смотрю на UBIFS и все еще открыт для написания своего собственного, так как FAT soln не идеален (нет уровня износа или CRC ..) – Digikata

ответ

3

Посмотрите мои question.

Я узнал, что fat16 (12) и ELM-Petit FAT File System Module - это апартаменты, которые соответствуют моим потребностям. Требуется только для процедур записи/чтения кода сектора.

3

JFFS2 - очевидный кандидат. Я использовал его с MIPS и SuperH, но только с NAND. Это дает отличные результаты в отношении износа и производительности. Нет, это полномасштабная файловая система, которая, кажется, не то, что вы описываете, но, честно говоря, я не думаю, что вы найдете единственное решение для чего вы хотите. Но это может быть решение simeplest: JFFS2 + {SQLite | Protobuf | Berkeley DB}

Я надеюсь, что я ошибаюсь, и вы его нашли. :-)

+0

Я посмотрел JFFS2 и не знал, сколько работы было в магазине для использования без RTOS во встроенной системе. Я предполагаю, что JFFS2 больше, чем я хочу - хотя мне кажется, что мне нужно посмотреть и посмотреть, можно ли использовать SQLite et al. непосредственно на вспышке без промежуточного уровня файловой системы, обрабатывая раздел флеш-памяти как отдельный файл. – Digikata

+1

@ Digikata Возможно, просто используя структуру данных на диске, в виде связанного списка, который вы перебираете, ища последний идентификатор версии. Вы можете пропустить все FS и другие вещи. – Gianni

+0

Yup, это было направление, которое я созерцал для свертывания собственного формата. – Digikata

2

Как Роберт и Mtr Я могу порекомендовать FatFs Generic File System Module. Я использую его на Cortex-M3 с 3 логическими устройствами (USB, SD-Card и внешней вспышкой). Особенно f_mkfs был очень полезен, чтобы заставить FileSystem к внешней Flash. «Единственное», что я должен был написать себе, - это функции ввода/вывода диска низкого уровня. Если вам не нужны все функции, предоставляемые модулем FatFs, уменьшение размера модуля довольно просто с помощью config.h (не помню имя: D).

Edit: я выбрал FAT, как это может быть использовано Win & Linux ...

Смежные вопросы