Может кто-нибудь предложить небольшую флеш-файловую систему для встроенных проектов - PullRequest
10 голосов
/ 09 марта 2011

Я использую 32-битный процессор AVR с 512 Кбайт флэш-памяти. Мне нужна небольшая файловая система, которая будет компилировать до 20 Кбайт памяти программ и предложит некоторые функции выравнивания износа, поскольку приложение будет записывать / регистрировать довольно постоянный поток данных.

В статье Википедии об этом перечислено много вариантов, но большинство из них выглядят как довольно тяжёлые файловые системы Linux (честно говоря, я не знаю, насколько они будут компилироваться) Wiki Список файловых систем

Лучшее, что я нашел из Переполнения стека, ссылается на Petit FAT , который предоставляет масштаб (~ 5Kbyes скомпилировано) и базовую функциональность, которая мне нужна, но не предлагает никакого выравнивания износа, поскольку он основан на FAT система.

Есть ли у кого-нибудь рекомендуемые файловые системы или хорошая статья, чтобы помочь мне добавить выравнивание износа в систему Petit FAT

Кроме того, при поиске, как я могу остановить все вопросы Adobe Flash, появляющиеся в результатах, всякий раз, когда я использую слово «flash» в своем поисковом запросе

Ответы [ 5 ]

5 голосов
/ 27 января 2015

Я создал простую, но устойчивую файловую систему журналирования, которая называется log_fs .Он является частью библиотеки Piconomix FW.

Он был написан для Adesto AT45D DataFlash, но я уверен, что он может быть переназначен для любого устройства Serial Flash.Он по своей природе имеет хорошую степень выравнивания износа, поскольку обрабатывает выделенные страницы как большой круговой буфер.

Чтобы запустить шины, я создал пример Приложение для регистрации давления и температуры

Он имеет интерфейс CLI, так что вы можете просматривать файловую систему AT45D DataFlash и log_fs .

Обновление 2017-02-14: Мой алгоритм определения начала и конца внелетучий кольцевой буфер был смертельно дефектен.Я исправил алгоритм, проблемы с упаковкой и выравниванием структуры, а также улучшил API и расширил документацию.

4 голосов
/ 09 марта 2011

Petit FAT - это файловая система, не зависящая от носителя.Его можно использовать с Flash, интерфейсом SD-карты, жестким диском, RAM-диском и т. Д. Выравнивание износа слоя трансляции Flash (FTL) оставлено в виде отдельного слоя или модуля.

Google Уровень износа FTL для некоторых хороших статей.

Существуют некоторые сторонние флэш-файловые системы для ST Microelectronics .

3 голосов
/ 23 июня 2017

Прошло много времени с того момента, как этот вопрос был изначально опубликован, и с 2011 года в игру было внесено несколько новых разработок.

SPIFFS

Одним из них является SPIFFS (Файловая система SPI Flash) .Я использовал это в нескольких проектах.

У него низкий уровень износа и очень низкий объем памяти.В моем случае SPIFFS использует 16 КБ флэш-памяти и 2 КБ ОЗУ для обслуживания 1 МБ флэш-памяти SPI с 4 файлами.

YAFS

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

Оценки памяти можно найти на сайте YAFS под названием «Объем памяти Yaffs» .

2 голосов
/ 17 марта 2011

Бесплатные легкие флэш-файловые системы, которые реализуют выравнивание износа, немногочисленны.

С учетом сказанного я заметил, что вы используете чип Atmel. Фактическая файловая система расположена на чипе или на внешней флеш-микросхеме? Если он находится на чипе Atmel DataFlash, вы можете рассмотреть возможность использования пакета программ DataFlash. Он содержит файловую систему с выравниванием износа и является бесплатным. Вы должны подписать соглашение с Atmel. Вот пресс-релиз с упоминанием программного обеспечения. Нечто заслуживающее внимания.

1 голос
/ 28 марта 2011

Я бы вручную раскрутил несколько файловых систем флеш-памяти, которые включали различные компромиссы между оперативной памятью, требованиями к свободному пространству, эффективностью хранения и размером блока стирания. Устройства флэш-памяти NAND стали настолько смехотворно большими и дешевыми, что один подход, о котором я думал, но на самом деле не использовал, состоял бы в том, чтобы хранить каждый байт в 16 битах, чтобы позволить случайное чтение байтов с кодом, исправляющим ошибки ( *) и размещать вещи в размерах стираемых блоков, игнорируя большие объемы памяти. Даже если в конечном итоге используется только небольшая доля от общего размера чипа, в последний раз, когда я смотрел на цены, NAND-вспышки были настолько дешевле, чем NOR-вспышки, что, вероятно, можно было бы, например, используйте 1/16 флэш-устройства емкостью 1 ГБ дешевле, чем флэш-память NOR 64 МБ.

(*) Например, после каждого байтового значения b, вычислить t = (b ^ (b * 2) ^ (b * 8) ^ (b * 32)) и затем выполнить вывод ((t & 255) ^ ( t >> 8) ^ 255). Это позволит обнаруживать и исправлять все одно- и двухбитные ошибки (битовая комбинация для записанного 0xFF будет такой же, как и для пустого устройства, поэтому двухбитовые ошибки пустых слов будут читаться как 0xFF).

...