Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Файловая система
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
Серёга_1
Задача такая: есть FLash( или EEPROM) малого размера (до 32кбайт), на которой хочу реализовать ФС, и в будущем для переносить эту ФС на память большого размера.

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

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

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

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

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

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

Спасибо.
zltigo
Цитата(Серёга_1 @ Aug 29 2007, 11:42) *
Подскажите...

Подскажите, а чем Вы руководствались создавая тему в ветке компилятора IAR?
Будте внимательнее. Тема перенесена.
Серёга_1
Цитата(zltigo @ Aug 29 2007, 12:00) *
Подскажите, а чем Вы руководствались создавая тему в ветке компилятора IAR?
Будте внимательнее. Тема перенесена.



Пардон , грубо ошибся извините.
Deka
Ввиду малого объёма я наверное попробовал-бы реализовать что-то типа кольцевого списка (буфера) с указателями чтения и записи. А в качестве единиц хранимой информации использовать записи (блоки информации с фиксированными полями). Потом всю эту структуру можно разместить в обычном файле любой файловой системы. Конкретных проектов небыло, но вот такие вот мысли посетили...
Серёга_1
Цитата(Deka @ Aug 29 2007, 12:51) *
Ввиду малого объёма я наверное попробовал-бы реализовать что-то типа кольцевого списка (буфера) с указателями чтения и записи. А в качестве единиц хранимой информации использовать записи (блоки информации с фиксированными полями). Потом всю эту структуру можно разместить в обычном файле любой файловой системы. Конкретных проектов небыло, но вот такие вот мысли посетили...


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

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

Хочется сделать ФС чтобы её можно было-бы поставить на память как малого ,так и болього размера(что-бы был общий подход к размещению информации) .
Непомнящий Евгений
Ну навскидку - бьете на сектора (кластеры). Для каждого кластера храните число "стираний". Если файл создается\расширяется, выделяете ему наименее поюзанный кластер.
Надо где-то хранить эту инфу + цепочки кластеров, составляющих файл. Желательно позаботиться, чтобы эта инфа не слетела в случае ошибки памяти - т.е. ее надо дублировать.
А вообще, надо подумать - насколько сильно заморачиваться. Если сильно - надо посмотреть на готовые файловые системы - наверное есть порты и для МК. По крайней мере можно почитать, как они устроены.
Серёга_1
Цитата(Непомнящий Евгений @ Aug 29 2007, 14:21) *
... Если сильно - надо посмотреть на готовые файловые системы - наверное есть порты и для МК. По крайней мере можно почитать, как они устроены.



Вот с этого поподробнее, то что выше это понятно.
Хотелось бы парочку ссылок , если не трудно.
prottoss
Я только что начал пытать вот эту

http://elm-chan.org/fsw/ff/00index_e.html
_Sam_
Цитата
Надо где-то хранить эту инфу + цепочки кластеров, составляющих файл. Желательно позаботиться, чтобы эта инфа не слетела в случае ошибки памяти - т.е. ее надо дублировать.

Эту инфу также нельзя хранить в строго определённом месте, потому что она будет меняться после каждой записи.
bloodden
Цитата(prottoss @ Aug 29 2007, 14:58) *
Я только что начал пытать вот эту

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

Хорошо она пытается. Я переносил в CodeVisionAVR 10мин шаманства и оно заработало, причём довольно резво, правда на М128 @18.432MHz smile.gif
Пологаю, что и с ИАРом проблем не будет.
Deka
А файлы - аналоги комповых? Т.е. могут иметь разный размер? И вообще есть у блоков данных какие-нить границы в размерах?
bloodden
Цитата(Deka @ Sep 5 2007, 10:18) *
А файлы - аналоги комповых? Т.е. могут иметь разный размер? И вообще есть у блоков данных какие-нить границы в размерах?

Если вопрос ко мне, то ответ - ДА. Там реализовано от FAT12 до FAT32.
Aesthete Animus
Вопрос быть может не в тему, но не хочу плодить лишних сущностей.

Насколько я знаю в нулевом секторе диска располагается таблица разделов. Хотел бы спросить, во-первых, как она правильно называется, во-вторых, где можно найти ее описание.
Сергей Борщ
Цитата(Aesthete Animus @ Jan 7 2008, 17:29) *
Насколько я знаю в нулевом секторе диска располагается таблица разделов. Хотел бы спросить, во-первых, как она правильно называется, во-вторых, где можно найти ее описание.
В нулевом секторе (насколько я знаю) хранится master boot record (MBR). Таблица разделов (partition table) хранится следом.
Kekek
Цитата(Aesthete Animus @ Jan 7 2008, 17:29) *
Вопрос быть может не в тему, но не хочу плодить лишних сущностей.

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

Можно посмотреть во 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
vvs157
Цитата(Сергей Борщ @ Jan 7 2008, 18:52) *
В нулевом секторе (насколько я знаю) хранится master boot record (MBR). Таблица разделов (partition table) хранится следом.
Partition Table расположена в конце MBR (начиная со смещения 1BEH и до конца - то есть до сигнатуры AA55H) На флоппи дисках MBR вообще отсутствует - диск начинается сразу с Boot Record, так как на флоппиках не может быть нескольких разделов
makc
См. небольшую подборочку по журналируемым файловым системам. На их основе я в свое время сделал свою компактную журналируемую файловую систему для работы на Flash серии AT45DB*.
desh
Цитата
Я только что начал пытать вот эту

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


А вот у меня не получается ее скачать в течении длительного времени.
Если у кого есть возможность выложить ее, буду очень признателен.
Непомнящий Евгений
Дайте мыло - скину. Она маленькая.
desh
desh@front.ru
vazhko
Если можно, и мне, пожалуйста

vazhko@mail.ru
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.