OSDev

для всех
Текущее время: 09 май 2024, 19:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 14  След.
Автор Сообщение
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 22 сен 2008, 21:14 
Хм, как же ж вам объяснить, чего я хочу. Ну вот смотрите, к примеру делаю я эмуляцию ФС. Имеется файл прямого доступа. Чтение и запись осуществляется с помощью соответствующих функций языка C++. Вот, а теперь представьте, что вместо файла реальная флешка, а функциям этим взяться неоткуда. Вопрос, как их реализовать?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 22 сен 2008, 23:43 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Естественно, нужно реализовать системные функции чтения из файла самому.
Вот описание файловой системы http://express-os.narod.ru/docs/fatgen103-rus.rar
Сектора флешки читать через прерывание BIOS Int 13h, AH=42. Флешка доступна при любом способе загрузки, не обязательно именно с флешки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^3: Файловая система для флешки
СообщениеДобавлено: 22 сен 2008, 23:50 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Да, и чтобы окончательно всё понятно было: флешка работает точно так же как жёсткий диск (винчестер), и у ней также в первом секторе есть таблица разделов.
Просто работай с флешкой как с обычным винчестером, и всё, ни каких проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^4: Файловая система для флешки
СообщениеДобавлено: 23 сен 2008, 23:05 
>> Естественно, нужно реализовать системные функции чтения из файла самому.

Вот. Как это сделать? Есть примеры кода?


Вернуться к началу
  
 
 Заголовок сообщения: Re^5: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 01:38 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Я советую разобраться в документации и написать самому, потому что универсальной функции нет - поскольку конкретная реализация сильно зависит от того, в какой среде эта функция должна работать: 16-битный реальный режим процессора, 32-битный защищённый режим процессора, разнообразие компиляторов, плюс многообразие вариантов доступа к диску.
В принципе можно посмотреть исходники системы FreeDOS
http://freedos.sourceforge.net
http://sourceforge.net/projects/freedos


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^5: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 09:43 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
В любом случае ты должен знать структуру FAT16 и FAT32. Последовательное чтение из файла значительно проще реализовать, чем полномасштабную работу с файловой системой, где помимо существенно большего числа операций в обязательном порядке используется еще и кэширование. Я писал код для последовательного чтения файла только из корневого каталога. Алгоритм примерно такой:

1. Для поиска нужной файловой записи поочередно читаешь блоки корневого каталога. Для FAT32 уже на этом этапе выполняется работа с таблицей FAT. Вообще в этом алгоритме достаточно выполнять кэширование по единственному последнему блоку FAT. При использовании только коротких имен файлов достаточно читать блоки каталога по одному, т.к. размер файловой записи равен 32 байта, т.е. всегда кратен размеру блока. Длинные имена распределены по нескольким файловым записям, поэтому может случиться так, что отдельные фрагменты имени хранятся в разных блоках. В этом случае ты должен "собирать" имя в отдельном буфере или кэшировать несколько блоков каталога.

2. Если нужная запись найдена и проверена (как минимум нужно убедиться, что ты нашел именно файл), то из нее выбираешь начальный номер кластера и размер файла в байтах.

3. Ну и собственно последовательно читаешь блоки файла, опять кэшируя FAT по единственному последнему с помощью все того же кода, что использовался и при чтении каталога FAT32. Здесь следует заметить только то, что если буфер для файла жестко ограничен сверху, то фрагмент из последнего блока файла может потребоваться считать через кэш-буфер, т.к. сам последний фрагмент может умещаться в файловом буфере, а последний блок файла, в котором он содержится, - нет. Ну и здесь же имеет смысл проверить наличие терминатора в FAT-цепочке файла. Его присутствие будет говорить о непротиворечивости размера файла и его FAT-цепочки. Т.е. можно с большей долей уверенности говорить, что файл прочитан полностью, а файловая система хотя бы здесь не содержит логических ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 20:34 
Да не нужна мне сама файловая система. Знаю я как ее реализовать. Мне нужны функции записи в кластер и чтения с кластера


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 21:23 
Я уже называл номер функции BIOS, Int 13h, AH 42h. Если хочешь читать через порт напрямую, то лучше спросить в той конференции, которую посоветовал phantom-84.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 21:44 
Ага, ясно... А где можно достать полный список функций BIOS?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 24 сен 2008, 21:53 
В принципе нашел... Благодарю за помощь, попробую реализовать...


Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 14  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB