OSDev
http://osdev.su/

Разработка драйвера FAT32
http://osdev.su/viewtopic.php?f=7&t=405
Страница 1 из 1

Автор:  Kriks87 [ 20 мар 2011, 15:29 ]
Заголовок сообщения:  Разработка драйвера FAT32

Всем доброго времени суток! Я новичок, поэтому заранее извиняюсь, если мой вопрос кому-то покажется глупым или ламерским. Имеется самописное ядро ОС, которое содержит менеджер памяти, умееть обрабатывать аппаратные и программные прерывания. Также данное ядро содержит драйвер IDE дисков, который предоставляет функции идентификации IDE дисков и чтения/записи сектора диска. Для этого ядра необходимо разработать драйвер для взаимодействия с файловыми системами (создание, запись, чтение файла, вывод списка файлов и т.д.). Для начала была взята файловая система FAT32 ввиду своей простоты. Одним словом, мне необходимо реализовать простейшие функции для работы с FAT32, предоставляемые данным ядром. Подскажите, каким образом должно осуществляться взаимодействие разрабатываемого драйвера FAT32 с драйвером IDE диска, к примеру, при реализации функции создания файла? Подскажите, существуют ли какие-то готовые решения драйверов FAT32 с открытыми исходниками или может быть кто-то уже занимался подобной проблемой? Подскажите также, какие статьи/книги можно почитать для прояснения данной задачи. Всем большое спасибо!

Автор:  SII [ 20 мар 2011, 17:52 ]
Заголовок сообщения:  Re: Разработка драйвера FAT32

Уж исходники Линуха, в т.ч. поддержки ФАТ32, точно открыты, как и спецификация FAT32. Ну а подсказать, как организовать взаимодействие и т.п., невозможно в принципе: это зависит от внутреннего устройства системы, от используемой в ней модели ввода-вывода и т.п.

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

Думаю, Вам лучше для начала попробовать более-менее разобраться в драйверной модели Винды (WDM -- не путать с объектно-ориентированной WDF, появившейся в Висле и на самом деле являющейся надстройкой над WDM: без знания последней невозможно по-настоящему понять, как именно реализован ввод-вывод).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/