OSDev
http://osdev.su/

Драйверы
http://osdev.su/viewtopic.php?f=26&t=532
Страница 1 из 1

Автор:  Станислав [ 21 апр 2012, 04:48 ]
Заголовок сообщения:  Драйверы

Если вы знаете, какой драйвер нужен системе или как написать драйвер, или функцию драйвера, то пишите. Хорошие варианты обсудим, хорошие функции добавим обязательно.
Приоритетные драйвера для системы (из открытых спецификаций от Интел):
дисков(Ahci) сделан
флешек(Ehci) доделываю
звука (HDA) начат
APIC начат
Сеть
RTL8111B_8168B сделан
Видео

Для доработки системы будет очень полезная информация о вашем удачном опыте общения с железяками, пишите всё, что вспомните.

Автор:  phantom-84 [ 21 апр 2012, 09:45 ]
Заголовок сообщения:  Re: Драйверы

Что дрова для IDE-режима уже не нужны?

Автор:  Станислав [ 21 апр 2012, 10:26 ]
Заголовок сообщения:  Re: Драйверы

Драйвер IDE в системе работал до написания драйвера Ahci. Он был убран из системы на совсем, хотя они друг другу не мешают, т.к. определяются по класскоду и если есть один, то другого нету. А вот например сетевуха и видюха и несколько других устройств PCI - PCI имеют один класскод, хотя различны так же по device vendor. Я заметил, что если класскод различен, то контроллер общий для всез устройств от разных производителей, а если один, то приходится расматривать каждое устройство в отдельности определяя его по производителю и номеру модели.
Все стройства работающие на одном контроллере и имеющие один класскод могут работать на одном драйвере, эта система универсальна. Это диски, флешки и звук. Видео и сетевые устройства имеют свои драйвера, также мышки и веб камера и другие юсб устройства имеют дополнительные драйвера находяшиеся на одном контроллере. Нужен ещё драйвер для APIC который работает одинаково на всех ПК.
Впринципи всё так и работает на системе Linux, Windows и уже сделано, но читать открытые драйвера из Линукса я ещё не умею и так же считаю, что писать драйвер лучше по спецификациям. Я скопирывал все открытые спецификации Интел и изучаю их.
Пишу драйвера, как и всю систему на ФАСМ а не на С+. Колибри так же написана на АСМ и уже реализована работа сети, это настройка сетевухи на получение и отправку покетов (для нормальной жизни сетевухи порой достаточно только этой функции), так же настроен формат покетов TCP IP и так же приём html, но браузер пишется на С+, а я планирую написать браузер так же на АСМ.

Автор:  Станислав [ 28 июл 2012, 17:26 ]
Заголовок сообщения:  Re: Драйверы

Доделал работу с USB контроллер EHCI теперь создаёт объекты устройств, пронумеровывает, запрашивает дискриптор устройства и конфигурации, и строковый о устройстве. Теперь вывожу пораметры устройства его свойства и название.
В драйвере AHCI тоже создаётся объект и для сдрома и для винта, объект винта создаёт объекты файловых систем, но инфу о себе ещё не выводит, т.к. не доразбирал запрос инфы с винта через ATA.
Флешки после доработки чтения сектора станут тоже создавать объекты файловых систем и автоматом добавятся в обзорах файлов.
Бинарник обнавил и кто рискнёт загрузиться с флешки увидет инфу о ЮСБ устройствах и т.д. .
Вложение:
1.jpg
1.jpg [ 50.31 КБ | Просмотров: 8083 ]

Автор:  Станислав [ 01 авг 2012, 14:37 ]
Заголовок сообщения:  Re: Драйверы

С устройствами ЮСБ получается два этапа, первый это создание объекта устройство и его конфигурирование, что включает в себя запрос дескриптора устройства, нумерации, дескриптора конфигурации, посылка конфигурации, запрос юнитов(у картридера их несколько), а потом уже драйвер персонально для типа устройства.
Для флешки достаточно просто добавить три функции, INQUIRY, READ10, WRITE10 и в идеале обработку ошибок.
Кстати на подготовленный объект ЮСБ с сообщениями от прерываний не так и трудно писать драйвера, будь то веб камера или мышка.

Автор:  Станислав [ 25 сен 2012, 06:04 ]
Заголовок сообщения:  Re: Драйверы

Настраивал цепочку для pci прерывания и заметил, что номера прерываний от pic меньше номеров от ioapic на 6, тем самым облегчил переход.
У меня теперь устройства настраивают прерывания нормально, например если на 11 прерывании 3 устройства, то они спокойна встают в цепочку и настраиваются все на 17ое прерывание. При нулевом объекте на 17ом прерывании добавляю в поле адрес объекта и включаю прерывание, а потом уже(поле становится не нулевым) в имеющийся объект ставлю цепочку. Цепочка двухсторонняя и устройство из цепочки может выйти(при его удалении).
При вызове прерывания вызываются обработчики всех объектов в цепочке, а обработчики проверяют свои биты событий устройства и если они 1 то обрабатывают события.
Вот удача то привалила небольшая. На моём ноутбуке такая схема будет работать хорошо, не знаю как на других.

Автор:  Станислав [ 31 окт 2012, 10:44 ]
Заголовок сообщения:  Re: Драйверы

Для ATA дисков контроллера AHCI сделал идентификацию, чтение сектора в свободной команде и запись, для ATAPI тоже по мелочи.
Сдромы по scasi работают, функции совершенно другие получаются, хотя эти команды знаю от работы с флэшкой.

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