OSDev

для всех
Текущее время: 29 апр 2024, 18:00

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 06:10 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
Пишу драйвер для сидюка. пока что работаю только с ATAPI, но это прошлый век. у меня на компе сидюк сидит на SCSI, соответственно на моем компе я не смогу тестировать ось, ибо нужно где-то раздобыть IDE. только виртуалка. поэтому как-то нужно включать поддржку нескольких интерфейсов (ATA\ATAPI\SATA\SCSI). только как я понятия не имею... хотелось бы инкапсулировать в драйвере контроллер сидюка (т.е. ядро дает запрос на чтение и номер сидюка, а драйвер сам определяет какой контроллер и, соответственно, читает именно с него). первая мысль, пришедшая в голову - искать сидюк на всех контроллерах, складывать о них информацию в некую таблицу,а при операциях чтение\записи брать от туда инфу и работать с ним. тогда нужно будет пихать функции для работы с каждым контроллером в один файл (процедуры вида ReadCDATAPI\ReadCDSCSI... будут в одном файле и будут вызываться в зависимости от контроллера). может есть идеи получше? и еще вопрос: почему на борще не пашет 48h функция 13h прерывания?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 14:49 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Ядру по идее вообще должно быть пофиг, какой/какие там контроллеры. Оно лишь транслирует обращения к функциям драйвера. Драйверы лучше делать независимыми друг от друга. Так будет значительно проще их впихнуть в том числе и в один файл. Например, если мне нужно разместить в одном файле несколько драйверов, я просто в инициализационную/деинициализационную функцию файла включаю вызовы инициализационных/деинициализационных функций соотв. драйверов. Собираю статистику по результату инициализации каждого драйвера в битовом массиве (или в массиве адресов процедур), чтобы знать какие драйверы в файле нужно потом деинициализировать, а какие нет. Если по итогам инициализации массив оказался обнуленным, сразу сообщаю ядру, что данный файл нужно выгрузить. Логика может быть и более сложной, но это когда хочешь учесть зависимости драйверов друг от друга. Обычно до этого не доходит. В лучшем случае нужно просто указать правильный порядок запуска драйверов.

В боксе "пашет" функция 48h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 18:04 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
phantom-84 писал(а):
В боксе "пашет" функция 48h.

у меня не пашет...
Заюзаю тогда таблицу со свойствами найденных устройств. от туда буду брать инфу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 19:42 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
а как узнать по номеру устройства на каком контроллере оно сидит и его номер? вот к примеру хард имеет номер 80h, как по этому номеру из биоса вытащить интерфейс+номер диска? типа IDE, канал 1, диск 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 19:58 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Вариант 1.
Через функцию 48h
Подробнее.
http://docviewer.yandex.ru/?url=ya-disk ... d457e4a88a
Вариант 2.
Записываешь на диск магическое число(гуид) и ищешь его на дисках.
Вариант 2.1 Читаешь геометрические параметры диска если совпадают то читаешь по сектор но пока не найдёшь отличий. Имеется в виду читаешь через int и через порты и сравниваешь результат.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 20:38 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
Благодарю :) НО! как я уже говорил у меня борщ не знает про 48h...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 20:48 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
И в чем не работа заключается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 21:05 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
ошибку дает. в структуре на выходе одни нули.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 03 июл 2013, 23:01 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Ищи ошибку в коде. У меня все работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: драйвер для CD-ROM
СообщениеДобавлено: 04 июл 2013, 13:45 

Зарегистрирован: 25 фев 2013, 22:01
Сообщения: 63
оказыается 48h функция дает инфу только о девайсях в номерах 80h-0FFh, а у меня сидюк с номерм 0e0h


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

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


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

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


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

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