Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 85

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 166 >> Следующая

ffl CJ W_04aS&Pid_20cO ¦ «Ив KQJZ
W Cj Vid.05SfbPid.c420 ; lAJParentldPreflx REGJZ
ffl Ci Vld_05SfbPldj:42uaM_ aaservice REGJiZ
W Q W_055f№d_c420&Mi_—' ЙЙШМитЬег REG.DWORD
ffl 1st Vid.067bbPid.2303 l*S fjj Vid_0ea0e.Pid_2168 ':¦ t ffl (a Vld_0ea0&Pid_6803 ,1
CQf^erM*EYJ.«AJ*Ap^
Рис. 10.9. Ветка реестра корневых хабов
Ветка Device Parameters содержит КЛЮЧ SymbolicName, значение КОТОРОГО
равно символьному имени (см. разд. 9.2) соответствующего устройства.
Функции BIOS
Перепрошьем Ваш BIOS так, что родная мать не узнает!
Объявление
Одним из аргументов в пользу использования СОМ-интерфейсов является поддержка СОМ на уровне BIOS. Использование функций BIOS может потребоваться при программировании в DOS, например, при программировании промышленного компьютера (контроллера). Такие компьютеры имеют встроенный клон DOS, практически полностью совместимый с обычным DOS. В этой главе мы опишем функции BIOS для работы с USB.
11.1. Сервис BIOS 1AH
Для работы с РСІ-шиной (и, соответственно, с шиной USB) используются следующие функции BlH прерывания 1АН:
? В101Н — определение наличия PCI BIOS;
? В102Н — поиск PCI-устройства по идентификаторам устройства и производителя;
? В103Н — поиск РСІ-устройства по коду класса;
? В108Н — чтение регистра конфигурации (байт, Byte);
? В109Н — чтение регистра конфигурации (слово, Word);
? BlOAH — чтение регистра конфигурации (двойное слово, DWord);
? BlOBH — запись регистра конфигурации (байт, Byte);
? BlOCH — запись регистра конфигурации (слово, Word);
? BlODH — запись регистра конфигурации (двойное слово, DWord).
Основное назначение этих функций — работа с конфигурационным пространством, общий вид которого показан на рис. 11.1. Наиболее интересными полями являются поля, позволяющие определить тип устройства:
? vendor id (Word, смещение 0) — код фирмы-производителя устройства (см. приложение 3);
252
Часть III. Практика программирования
? Device id (Word, смещение 2) — код устройства;
? class code (DWord, смещение 8) — код класса устройства (табл. 11.1).
Device ID Vendor ID 0OH
Status Code 04H
Class Code Revision ID 08H
BITS Header Туре Latency Timer Cache Line Size OCH
Определяется типом устройства
Определяется пользователем
Рис. 11.1. Конфигурационное пространство устройства PCI
Для вызова конкретной функции ее номер задается в регистре АХ. Для операций чтения и записи регистров номер шины (контроллера) задается в регистре ВН. В зависимости от функции могут указываться входные параметры в регистрах BH, AL, CH, CL и др. При успешном выполнении функции флаг переноса CF сбрасывается в 0, в случае ошибки — устанавливается в 1. После выполнения функций регистры ЕАХ, ЕВХ, ЕСХ, EDX и флаги могут измениться.
Следует отметить, что выполнение описанных функций сервиса IAH может потребовать до 1 Кбайт стека.
11.1.1. Функция В101Н-определение наличия PCI BIOS
Функция BlOlH позволяет проверить наличие поддержки РО-функций. Входных параметров у этой функции нет, необходимо только занести в регистр AX номер функции.
На выходе заполняются следующие регистры:
? АН = ООН, если существует поддержка PCI;
? EDX = 20494350Н (символы " PCI" в обратном порядке, в старшем байте записан пробел);
? EDI = адрес точки входа в защищенном режиме;
? CS = дескриптор защищенного режима (ring 0) для доступа к полному адресному пространству;
? AL = аппаратные характеристики PCI;
Глава 11. Функции BIOS
253
? BH = старшая часть номера версии PCI в формате BCD;
? BL = младшая часть номера версии PCI в формате BCD;
? CL = номер последней PCI-шины в системе (нумерация начинается с нуля);
? CF — результат выполнения:
• 0 — функция выполнена успешно;
• 1 — ошибка.
Присутствие PCI BIOS соответствует трем условиям: функция BlOlH выполнилась успешно, в регистре АН записан 0, в регистре EDX записана правильная сигнатура.
11.1.2. Функция В102Н -поиск РСІ-устройства по идентификаторам устройства и производителя
Для поиска РСІ-устройства заданного типа используется функция В102Н Входными регистрами этой функции являются:
? AX = В102Н, номер функции;
? CX — идентификатор устройства (0—65535);
? DX — идентификатор изготовотеля (0—65534);
? SI — порядковый номер устройства заданного типа (начиная с 0) После выполнения будут заполнены следующие регистры'
? BH — номер шины, к которой подключено устройство (0—255);
? BL — номер устройства и функции:
• [7:3] номер устройства;
• [2:0] номер функции;
? АН — код возврата:
• 00H — выполнение успешно;
• 83Н — ошибочное значение DX;
• 86Н — устройство не найдено;
? CF — результат выполнения:
• 0 — функция выполнена успешно;
• 1 — ошибка.
254
Часть III. Практика программирования
Для поиска всех устройств выбранного типа в регистр SI заносится 0 и производится последовательный вызов функции поиска. При каждом вызове значение SI инкрементируется. Выполнение производится до получения кода ошибки 86Н.
11.1.3. Функция В103Н —
поиск РСІ-устройства по коду класса
Для поиска РСІ-устройства заданного класса используется функция В103Н. Входными регистрами этой функции являются:
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100