Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Разработка драйвера, распознающего USB-устройство как виртуальный COM-порт в системе Windows NT

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Архитектура ввода/вывода Windows NT. Внутренняя организация шины USB. Сущностная характеристика драйверной модели WDM. Точки входа разрабатываемого драйвера, размещение кода в памяти, установка драйвера в системе. Реализация кода драйвера на языке C.
Краткое сожержание материала:

Размещено на

Курсовой проект

по дисциплине «Системное программное обеспечение»

Разработка драйвера, распознающего USB-устройство как виртуальный COM-порт в системе Windows NT

Задание

Разработать драйвер, распознающий USB-устройство как виртуальный COM-порт в системе Windows NT. Драйвер должен организовать потоковый ввод-вывод массивов данных(Bulk Data Transfer).

Введение

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

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

Современные операционные системы могут динамически загружать и выгружать драйвера, получать их из сети(internet), осуществлять взаимодействие между драйверами разного уровня, используя их как своеобразные библиотеки.

В соответствии с заданием к курсовому проекту необходимо разработать фильтр-драйвер на языке C, обеспечивающий обмен информацией между компьютером и внешним USB-устройством. Обеспечить поддержку виртуального преобразования USB-COM(VUSB) с микроконтроллерами FTDI и семейства основных микроконтроллеров ввода-вывода компании Atmel (AT8U2 и выше)

Основные требования, предъявляемые к драйверу:

· Разрабатываемый драйвер должен обрабатывать запросы на чтение и запись, приходящие к устройству;

· Драйвер должен обеспечивать поддержку окончания обработки всех IRP пакетов в стеке перед отключением устройства;

· Пакеты, которые не обрабатываются фильтр-драйвером должны передаваться вниз по стеку основным драйверам;

· Драйвер не должен приводить к сбоям в работе операционной системы;

· Обеспечить поддержку подключения нескольких USB-устройств использованием подсистемы PnP.

1. Основная часть

1.1 Архитектура Windows NT

windows драйвер код шина

Архитектура Windows NT соответствует классическим представлениям о проектировании операционных систем. Наиболее распространены реализации данной ОС для платформы Intel x86 в одно- или многопроцессорных конфигурациях, однако существуют также версии для DEC Alpha и MIPS. Данная операционная система использует защищённый режим центрального процессора, реализует механизмы виртуальной памяти и многозадачности.

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

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

Рис. 1 Архитектура ввода/вывода Windows NT

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

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

Обобщённая классификация драйверов Windows NT может быть представлена следующим образом:

· Драйверы режима ядра:

o Унаследованные драйверы;

o Драйверы файловой системы;

o Видеодрайверы;

o Драйверы PnP(Plug And Play):

§ Драйверы WDM.

· Драйверы пользовательского режима:

o Драйверы виртуальных устройств.

1.2 Шина USB

Спецификация USB была разработана консорциумом компаний, включая Intel и Microsoft. Целью нового стандарта было обеспечение организации недорогой среднескоростной шины в таких областях применения, как передача цифровых изображений, компьютерная телефония и мультимедийные игры. Текущими версиями спецификации USB является версии 1.1 и 2.0 (во вторую заложены более высокие скоростные характеристики).

Предельная скорость передачи данных по шине USB спецификации 1.1 составляет 12 Мбит/с (Full Speed). Медленные устройства используют низкую скорость передачи - 1,5 Мбит/с (Low Speed). Стандарт USB версии 2.0 поддерживает физическую скорость передачи до 480 Мбит/с (High Speed). Данные передаются последовательно по паре проводников. Питание для некоторых устройств доступно по отдельным проводникам питания и заземления (для устройств с небольшим энергопотреблением).

Устройства USB могут быть подключены 5-метровым кабелем (а практически - и более длинным). Использование USB-хаба (hub - концентратор) позволяет увеличить дальность размещения устройств от хост-контроллера, а так же количество устройств, подключаемых к одной шине USB. Последовательно можно подключить до пяти хабов, обеспечив длину соединения 30 метров. К хост-контроллеру можно подключить до 127 устройств, шинный адрес которых устанавливается динамически при подключении устройств.

Рис. 2. Сеть USB-устройств

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

1.2.1 Внутренняя организация шины USB

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

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

Рис. 3. Взаимодействие компонентов USB

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

· уровень клиентского программного обеспечения в хосте - обычно представляется драйвером устройства USB, обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой;

· уровень системного программного обеспечения USB в хосте (USBD, Universal Serial Bus Driver) - управляет нумерацией устройств на шине, управляет распределением пропускной способности шины и мощности питания, обрабатывает запросы пользовательских драйверов;

· хост-контроллер интерфейса шины USB (HCD, Host Controller Driver) - преобразует запросы ввода/вывода в структуры данных, по которым хост-контроллер выполняет физические транзакции, работает с регистрами хост-контроллера.

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

· буфер памяти, называемый клиентским буфером;

· пакет IRP, указывающий тип необходимой операции....

Другие файлы:

Реализация системы управления реального времени в ОС Windows
Использование драйвера режима ядра и управляющего приложения для создания системных потоков. Имитация обработки данных и организация задержек. Разрабо...

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

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

Драйвер клавиатуры, реализующий функции музыкального синтезатора на клавиатуре для Windows NT 5
Архитектура Windows NT 5. Приоритеты выполнения программного кода. Описание формата MIDI-данных. Установка драйвера в системе. Выбор средств разработк...

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