Jump to content
    

Файловая система

Задача такая: есть FLash( или EEPROM) малого размера (до 32кбайт), на которой хочу реализовать ФС, и в будущем для переносить эту ФС на память большого размера.

 

Хотелось бы равномерно использовать память при записи/стирании (максимально использовать ресурс перезаписи ячеек), чтобы число записей в каждую ячейу было приблизительно одинаковым.

 

Поддержка "транзакций", т.е. запись считается завершенной если пройден полный цикл операций f_open ... f_close.

 

Возможность отслеживания испорченных ячеек( в физическом смысле), т.е способы учета этих ячеек.

 

Если кто занимался или использовал в проектах разьясните какие траблы могут возникнуть.

Сейчас нахожусь на этапе определения структуры файловой системы.

 

Посоветуйте какие-нибудь способы организации ФС.

 

Подскажите ссылки на инфу.

 

Спасибо.

Share this post


Link to post
Share on other sites

Подскажите...

Подскажите, а чем Вы руководствались создавая тему в ветке компилятора IAR?

Будте внимательнее. Тема перенесена.

Share this post


Link to post
Share on other sites

Подскажите, а чем Вы руководствались создавая тему в ветке компилятора IAR?

Будте внимательнее. Тема перенесена.

 

 

Пардон , грубо ошибся извините.

Share this post


Link to post
Share on other sites

Ввиду малого объёма я наверное попробовал-бы реализовать что-то типа кольцевого списка (буфера) с указателями чтения и записи. А в качестве единиц хранимой информации использовать записи (блоки информации с фиксированными полями). Потом всю эту структуру можно разместить в обычном файле любой файловой системы. Конкретных проектов небыло, но вот такие вот мысли посетили...

Share this post


Link to post
Share on other sites

Ввиду малого объёма я наверное попробовал-бы реализовать что-то типа кольцевого списка (буфера) с указателями чтения и записи. А в качестве единиц хранимой информации использовать записи (блоки информации с фиксированными полями). Потом всю эту структуру можно разместить в обычном файле любой файловой системы. Конкретных проектов небыло, но вот такие вот мысли посетили...

 

В принципе такой тип хранения данных уже используется, и он пригоден для данных располагающихся последовательно (т.е. данные ложатся и забираются последовательно и упорядочено).

 

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

Может есть способ и я ошибаюсь , то извините.

 

Хочется сделать ФС чтобы её можно было-бы поставить на память как малого ,так и болього размера(что-бы был общий подход к размещению информации) .

Share this post


Link to post
Share on other sites

Ну навскидку - бьете на сектора (кластеры). Для каждого кластера храните число "стираний". Если файл создается\расширяется, выделяете ему наименее поюзанный кластер.

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

А вообще, надо подумать - насколько сильно заморачиваться. Если сильно - надо посмотреть на готовые файловые системы - наверное есть порты и для МК. По крайней мере можно почитать, как они устроены.

Share this post


Link to post
Share on other sites

... Если сильно - надо посмотреть на готовые файловые системы - наверное есть порты и для МК. По крайней мере можно почитать, как они устроены.

 

 

Вот с этого поподробнее, то что выше это понятно.

Хотелось бы парочку ссылок , если не трудно.

Share this post


Link to post
Share on other sites

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

Эту инфу также нельзя хранить в строго определённом месте, потому что она будет меняться после каждой записи.

Share this post


Link to post
Share on other sites

Я только что начал пытать вот эту

 

http://elm-chan.org/fsw/ff/00index_e.html

Хорошо она пытается. Я переносил в CodeVisionAVR 10мин шаманства и оно заработало, причём довольно резво, правда на М128 @18.432MHz :)

Пологаю, что и с ИАРом проблем не будет.

Share this post


Link to post
Share on other sites

А файлы - аналоги комповых? Т.е. могут иметь разный размер? И вообще есть у блоков данных какие-нить границы в размерах?

Share this post


Link to post
Share on other sites

А файлы - аналоги комповых? Т.е. могут иметь разный размер? И вообще есть у блоков данных какие-нить границы в размерах?

Если вопрос ко мне, то ответ - ДА. Там реализовано от FAT12 до FAT32.

Share this post


Link to post
Share on other sites

Вопрос быть может не в тему, но не хочу плодить лишних сущностей.

 

Насколько я знаю в нулевом секторе диска располагается таблица разделов. Хотел бы спросить, во-первых, как она правильно называется, во-вторых, где можно найти ее описание.

Share this post


Link to post
Share on other sites

Насколько я знаю в нулевом секторе диска располагается таблица разделов. Хотел бы спросить, во-первых, как она правильно называется, во-вторых, где можно найти ее описание.
В нулевом секторе (насколько я знаю) хранится master boot record (MBR). Таблица разделов (partition table) хранится следом.

Share this post


Link to post
Share on other sites

Вопрос быть может не в тему, но не хочу плодить лишних сущностей.

 

Насколько я знаю в нулевом секторе диска располагается таблица разделов. Хотел бы спросить, во-первых, как она правильно называется, во-вторых, где можно найти ее описание.

Можно посмотреть во FreeBSD:

/usr/include/sys/disklabel.h

 

/*

* Each disk has a label which includes information about the hardware

* disk geometry, filesystem partitions, and drive specific information.

* The label is in block 0 or 1, possibly offset from the beginning

* to leave room for a bootstrap, etc.

*/

 

http://www.freebsd.org/cgi/cvsweb.cgi/src/...pe=text%2Fplain

Edited by Kekek

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...