Глава 1, Введение в драйверы устройств

Предыдущая  Содержание  Следующая V*D*V

Глава 1

 

Одно из главных преимуществ свободных операционных систем, таких как Linux, это то, что их внутренности открыты для просмотра всем. Эти операционные системы, когда-то тёмная и мистическая область, чей код был доступен только небольшому числу программистов, могут быть теперь легко изучены, поняты и модифицированы кем угодно, если он обладает необходимым уровнем знаний. Linux помог демократизировать операционные системы. Ядро Linux, тем не менее, представляет собой большой и сложный набор кода, и потенциальные исследователи ядра нуждаются в точке входа, где они могут обращаться к этому коду не будучи подавленными его сложностью. Часто такую точку входа создают драйверы устройств.

 

Драйверам устройств отводится особая роль в ядре Linux. Это прекрасные “чёрные ящики”, которые заставляют специфичную часть оборудования соответствовать строго заданному программному интерфейсу; они полностью скрывают детали того, как работает устройство. Действия пользователя сводятся к выполнению стандартизированных вызовов, которые не зависят от специфики драйвера; перевод этих вызовов в специфичные для данного устройства операции, которые исполняются реальным оборудованием, является задачей драйвера устройства. Этот программный интерфейс таков, что драйверы могут быть собраны отдельно от остальной части ядра и подключены в процессе работы, когда это необходимо. Такая модульность делает драйверы Linux простыми для написания, так что теперь доступны сотни драйверов.

 

Есть много причин быть заинтересованным в написании драйверов устройств для Linux. Количество нового оборудования, которое становится доступным (и устаревает!) гарантирует, что создатели драйверов будут заняты в обозримом будущем. Отдельные люди могут нуждаться в знаниях о драйверах, чтобы получить необходимый уровень доступа к устройству, которое представляет для них интерес. Разработчики оборудования, создавая драйвер для Linux для своей продукции, могут добавить большое и растущее количество пользователей Linux в качестве потенциальных покупателей. А открытая природа системы Linux означает, что если автор драйвера пожелает, исходник драйвера может быть быстро распространён среди миллионов пользователей.

 

Эта книга научит вас, как писать ваши собственные драйверы и как исследовать необходимые области ядра. Мы избрали независимый от устройства подход; предлагаемая техника программирования и интерфейсы представлены, где возможно, без привязки к какому-либо конкретному устройству. Каждый драйвер уникален; как разработчику драйвера, вам необходимо хорошо знать работу своего устройства. Но большинство принципов и основных техник одинаковы для всех драйверов. Эта книга не может научить вас работать с вашим устройством, но она даст ту необходимую информацию, на основе которой вы сможете сделать ваше устройство рабочим. Поскольку вы учитесь писать драйверы, вы узнаете много вообще о ядре Linux; это может помочь понять вам, как работает ваш компьютер и почему всё происходит не так быстро, как вы ожидаете, или выполняется не совсем так, как вы хотите. Мы вводим новые идеи постепенно, начиная с очень простых драйверов и основываясь на них; каждое новое понятие сопровождается примером кода, который не нуждается в каком-то специальном оборудовании для тестирования.

 

В этой главе нет ничего по написанию кода. Тем не менее, мы вводим некоторые основные концепции ядра Linux, и позже, когда мы начнём программирование, вы будете рады, что познакомились с ними.

 

Предыдущая  Содержание  Следующая