[Previous] [Next]

Советы по работе с аппаратурой

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

Архитектура шины

Шинная архитектура, в которую должно вписаться новое устройство, будет иметь определяющее значение для конструкции нового драйвера — сможет ли он опираться на лежащие ниже в стеке драйверы или вынужден будет реализовывать весь физический интерфейс заново. Должны быть понятны все особенности, касающиеся автоматического распознавания и конфигурирования нового устройства. Следует рассчитывать на то, что новое устройство будет участвовать в общих механизмах PnP и обмена сообщениями об изменениях энергоснабжения, предлагаемых Windows 2000/XP/Server 2003.

Регистры управления

Должна быть известна схема адресации, а также размер регистров устройства. Следует полностью проанализировать назначение каждого регистра управления, каждого регистра состояния и каждого регистра данных, так же как и возможные варианты их содержимого. Необходимо рассмотреть варианты возможного необычного поведения, например:

Получение информации о состоянии устройства и об ошибках

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

Поведение, связанное с использованием прерываний

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

Механизмы передачи данных

Драйверы для работы с устройствами, поддерживающими программируемый ввод/вывод, сильно отличаются от драйверов, реализующих методы DMA передачи данных. Некоторые устройства поддерживают оба механизма ввода/вывода. В случае DMA устройств, следует выяснить, требуется реализация DMA механизма, в котором устройство выступает в роли 'bus master', или механизма, когда устройство выполняет действия по сценарию 'bus slave'. Следует определить, имеются ли ограничения на интервал адресов физического буфера памяти, который может быть задействован при этих операциях.

Используйте интеллект нового устройства

Некоторые периферийные устройства содержат собственные процессоры, которые выполняют операции диагностики и управления. Эти процессоры могут работать под управлением встроенного программного кода (прошитого в ПЗУ), но возможно, что драйвер самостоятельно выполняет загрузку управляющего кода в оперативную память устройства в момент его инициализации (как это имеет место при работе с весьма интересными микросхемами USB контроллеров фирмы Cypress).

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

Тестирование аппаратуры

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

Базисные тесты. Прежде всего, следует удостовериться, что все устройства и все соединительные кабели являются совместимыми и их подключение выполнено правильно и надежно. Например, неэкранированный кабель USB будет удовлетворительно работать с USB 1.1 (Low и Full Speed), но, возможно, будет причиной сбоев при работе на скорости Hi Speed в USB 2.0. Что касается подключения внешних устройств к параллельному порту, то совершенно одинаковые внешне кабели LPT могут создавать совершенно разные условия подключения, а при попытке повысить скорость передачи в режимах EPP или ECP некачественные кабели могут быть причиной экзотических сбоев.

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

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

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