OSDev
http://osdev.ru/

Как пишутся драйвера?
http://osdev.ru/viewtopic.php?f=5&t=1839
Страница 2 из 2

Автор:  v.g.a. [ 10 июн 2018, 20:22 ]
Заголовок сообщения:  Re: Как пишутся драйвера?

Цитата:
Например сетевой драйвер, драйвер видеокарты, и драйвер клавиатуры.
Где искать информацию?
По каким ключевым словам?

Самостоятельно разработать драйвер можно. Требуется документация от производителя устройства. Ну и наличие самого устройства для тестирования.
Например, требуется драйвер для сетевой карты на основе чипа Intel 82545EM, которая эмулируется в VMWARE (e1000).
Документация находится по поиску
Цитата:
8254x Family of Gigabit Ethernet Controllers Software Developer’s

Первая ссылка в яндексе на pdf. В этом файле есть всё, что требуется:)
Требуется хорошее знание английского языка, объём самой документации большой, т.к. в ней описывается целое семейство сетевых адаптеров.
На самом деле простой рабочий драйвер написать реально за неделю - другую. Лично мне было очень интересно поработать с сетевым адаптером на уровне регистров. Написал небольшую программу под DOS, которая выводила информацию о полученных кадрах Ethernet.
Вообще в виртуальной машине удобно работать с "железом".

Автор:  v.g.a. [ 10 июн 2018, 20:40 ]
Заголовок сообщения:  Re: Как пишутся драйвера?

Для реальной, не эмулируемой сетевой карты Intel 82545EM драйвер требует модификации, т.к. может будет работать, а может и не будет. Причина - различные ошибки в чипе (errata). На сайте Intel можно скачать файл с описанием этих ошибок, для этого семейства сетевых адаптеров обнаружено несколько десятков ошибок. Драйвер модифицируется для обхода этих ошибок, пишутся workarounds. Как пример, можно посмотреть код драйвера e1000 в Linux. Также требуется тестирование драйвера на сетевых картах с чипом Intel 82545EM.
Лично для себя разрабатывать драйвера для реального железа считаю неперспективным. Можно использовать драйвера с открытым исходным кодом (Linux). Но требуется их модификация для встраивания в свою ОС.

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