На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 6 / Отладка драйверов устройств Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Отладка драйверов устройств

После того, как драйвер установлен в системе, он уже не может быть отлажен с помощью MS-DOS (из-за проблемы реентерабельности). Однако отлаживать драйверы необходимо, так как подобно практически всем программам трудно ожидать от драйвера правильной работы после первого запуска. К решению задачи отладки драйверов можно подойти с трех сторон.


Во-первых, разрабатывайте драйвер по технологии "сверху вниз" - заставьте работать основную часть программы, а затем добавляйте более сложные блоки. Не пытайтесь сделать в первую очередь обработчики IOCTL. Процедурами, правильной работы которых Вы должны добиться в первую очередь, являются программы СТРАТЕГИЙ и ПРЕРЫВАНИЙ, а также процедура инициализации INIT. В блоковых драйверах Вы должны также добиться правильной работы команды MEDIACHECK и, если только Вы не установили NONIBM бит в слове атрибутов, команды BUILDBPB. С помощью такого набора функций Вы, конечно, не сможете выполнять операции ввода/вывода, однако MS-DOS сможет по крайней мере успешно загрузить этот драйвер.


Другой подход, который может помочь в отладке драйверов, заключается в использовании функций BIOS для вывода информации, определяющей текущее состояние драйвера. Знание места, до которого дошел драйвер, прежде чем аварийно завершиться очень помогает при отладке. Если у Вас нет ROM-BIOS, на который можно положиться, Вы можете встроить в драйвер различные подпрограммы вывода. Например, отлаживая драйвер RDISK (приведенный в конце этой главы), авторы встроили в драйвер средства вывода на дисплей идентифицирующего символа для каждой обрабатываемой команды ("I" для ПРЕРЫВАНИЙ, "S" для СТРАТЕГИЙ, "i" для INIT и т.д.). Это представляло действительную помощь когда драйвер загружался и был доступен с помощью прерываний прямого доступа к диску, но "сваливался" при попытке чтения директория диска. Взаимодействие между драйвером и системой может быть одной из самых сложных проблем и, к несчастью, обычно может быть отлажено только после загрузки драйвера.


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


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


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


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz