Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Разработка драйвера устройства

Замечание 1

Разработка драйвера устройства — это разработка компьютерной программы, управляющей строго определенным типом устройства, которое подключено к настольному или переносному компьютеру.

Общие сведения о драйверах

При решении обширной совокупности задач появляется часто необходимость сконфигурировать устройство согласно необходимым задачам пользователя. К сфере подобных задач относится разработка драйверов, что является чрезвычайно актуальным в современной действительности, в которой информация считается одним из самых важных ресурсов.

Одним из элементов системы является драйвер, который выполняет протоколирование информационного обмена между компьютером и определенным внешним устройством на универсальной последовательной шине USB. В современных операционных системах имеется возможность динамической загрузки и выгрузки драйверов, получения их из сети Интернет, осуществления взаимодействия между драйверами разного уровня, применяя их как своеобразные библиотеки.

К драйверу предъявляются следующие основные требования:

  1. Драйвер обязан выполнять обработку запросов на чтение и запись информации, приходящих к устройству.
  2. Драйвер обязан обеспечить поддержку окончания обработки всех пакетов в стеке перед отключением устройства.
  3. Пакеты, которые не могут быть обработаны фильтр-драйвером должны транслироваться вниз по стеку основным драйверам.
  4. Драйвер не должен вызывать сбои в работе операционной системы.
  5. Драйвер должен обеспечивать поддержку подключения нескольких USB-устройств применением подсистемы PnP.

Разработка драйвера устройства

Архитектурная организация операционной системы Windows полностью согласуется со стандартными представлениями о формировании операционных систем. Исполняемый код в Windows обладает двумя уровнями привилегий, а именно:

  1. Уровень кода пользовательского режима.
  2. Уровень кода режима ядра.

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

«Разработка драйвера устройства» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Пользовательские приложения не должны обладать возможностью по ошибке или преднамеренно внести коррективы в критические таблицы операционной системы или в области памяти иных приложений. Кроме того, данные ограничения не разрешают пользовательским приложениям напрямую осуществлять управление внешними устройствами, так как каждое из них выступает как разделяемый ресурс.

В операционной системе Windows осуществление обмена информационными данными и управление доступом к внешнему устройству как к разделяемому ресурсу возложено на драйвер этого устройства. Ввод и вывод данных в драйверах устройств реализуется при помощи IRP-пакетов (Input/Output Request Packet). Запросы на ввод и вывод данных, которые посылают приложения или другие драйверы, должны обрабатываться драйвером устройства, а затем запросившей программе в том же пакете отправляется статус завершения операции. Архитектурная организация ввода и вывода Windows изображена на рисунке ниже.

Архитектурная организация ввода и вывода Windows. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Архитектурная организация ввода и вывода Windows. Автор24 — интернет-биржа студенческих работ

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

Классификацию драйверов Windows в обобщенном случае можно представить в следующем виде:

  1. Драйверы, выполняемые в режиме ядра, к которым относятся унаследованные драйверы, драйверы, принадлежащие файловой системе, драйверы видеоустройств, драйверы системы PnP (Plug And Play).
  2. Драйверы WDM.
  3. Драйверы пользовательского режима, в частности, драйверы виртуальных устройств.

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

Весь набор операций по трансляции данных по шине USB должен инициироваться хостом. Периферийным устройствам не разрешается самим начинать процедуру обмена данными, они способны лишь реагировать на команды хоста. Система USB подразделяется на три логических уровня с заданными правилами взаимодействия. Устройство USB должно содержать следующие составляющие:

  1. Интерфейсная составляющая.
  2. Логическая составляющая.
  3. Функциональная составляющая.

Хост тоже подразделяется на следующие составляющие:

  1. Интерфейсная составляющая.
  2. Системная составляющая.
  3. Программное обеспечение.

Каждая составляющая призвана решать лишь определенный круг задач. Процесс логического и реального взаимодействия между ними показан на рисунке ниже.

Процесс логического и реального взаимодействия. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Процесс логического и реального взаимодействия. Автор24 — интернет-биржа студенческих работ

Следовательно, процедура обмена данными между прикладной программой и шиной USB осуществляется за счет передачи буферов памяти через следующую совокупность уровней:

  1. Уровень клиентского программного обеспечения в хосте, который, как правило, должен предоставляться драйвером устройства USB.
  2. Уровень системного программного обеспечения USB в хосте (USBD, Universal Serial Bus Driver).
  3. Уровень хост-контроллера интерфейса шины USB (HCD, Host Controller Driver), преобразующий запросы ввода и вывода в структуры данных, по которым хост-контроллер исполняет физические транзакции, работает с регистрами хост-контроллера.
Дата написания статьи: 22.07.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot