Павел Агуров - ИНТЕРФЕЙС USB практика использования и программирования + CD
USB 1.1/2.0, HID-УСТРОИСТВА
НАПИСАНИЕ USB-ДРАЙВЕРОВ
РАБОТА В DOS, WINDOWS 98/ME/NT/2000/XP
ПРИМЕРЫ НА ЯЗЫКЕ PASCAL
ПРИМЕРЫ РЕАЛИЗАЦИИ ДЛЯ ATMEL AT89C5131
РАБОТА С МИКРОСХЕМАМИ FTDI
Одна из лучших книжек по программированию USB, включает в себя описание аппаратного использования USB, так и программную часть. А также как с помощью резисторов (сопротивлений) определяется какое (по скорости) устройство подключено к USB
Для устройств USB 2.0 регламентировано три режима работы:
LOW-SPEED – USB 2.0 (10—1500 Кбит/c) - USB 1.1
FULL-SPEED – USB 2.0 (0,5—12 Мбит/с)
HIG-SPEED – USB 2.0 (25—480 Мбит/с)
USB 2.0 отличается от USB 1.1 введением режима HIG-SPEED.
Одноко есть еще один тонкий момент связан с обозначением
"USB 2.0". Согласно спецификации USB 2.0 пропускная способность этого
интерфейса составляет 480 Мбит/с, однако в спецификации заложена воз-
можность функционирования устройств в режимах FS и HS. Таким образом,
реальную пропускную способность 480 Мбит/с могут обеспечить только
устройства, способные работать в режиме HS.
"Основатели" USB рекомендуют использовать логотип "USВ 2.0" только для
HS-устройств, но многие производители используют его и для
FS-устройств, являющихся, по сути, обычными устройствами USB 1.1. Для из-
бежания путаницы между "USB 2.0" и "Hi-speed USB"
Изложены базовые сведения по интерфейсу USB для ПК: примеры
USB-устройств и советы по их выбору, правила установки и конфигуриро-
вания устройств, методы решения возникающих проблем. Описаны кабели,
разъемы, принципы питания устройств и другое аппаратное обеспечение.
Приведено внутреннее устройство USB и его физическая реализация, обсу-
ждены общие вопросы написания драйверов для операционной системы
Microsoft Windws 2000/XP с примерами на языке Borland Pascal и в среде
Delphi. Рассмотрен процесс создания USB-устройства: от выбора микро-
схем и схемотехники до написания программы микроконтроллера и WDM-
драйвера. В книге содержится большое количество практических советов и
примеров программ. Для удобства читателей все исходные коды приводятся
на прилагаемом компакт-диске.
Для пользователей ПК, разработчиков аппаратуры и программистов
Название книги: ИНТЕРФЕЙС USB практика использования и программирования
Автор: Агуров Павел Владимирович
Год выхода: 2004
Издание: БХВ-Петербург
Кол-во страниц: 576
Формат файла: DjVu
Размер файла: 9.2 мб
Часть I. Введение в USB
Глава 1. Что такое USB
1.1. История USB
1.2. Сравнение USB с другими интерфейсами
1.3. Основные понятия USB
1.3.1. Общая архитектура шины
1.3.2. Физическая и логическая архитектура шины
1.3.3. Составляющие USB
1.3.4. Свойства USB-устройств
1.3.5. Свойства хабов
1.3.6. Свойства хоста
1.4. Примеры USB-устройств
1.4.1. Мышь и клавиатура
1.4.2. Мониторы
1.4.3. Переходники USB-to-COM и USB-to-LPT
1.4.4. Сканеры
1.4.5. Модемы
1.4.6. Звуковые колонки
1.4.7. Флеш-диски
1.4.8. Хабы
1.4.9. Измерительная техника
1.4.10. Экзотические устройства
1.5. Сетевое соединение через USB
1.5.1. Конвертер USB-Ethernet
1.5.2. Прямое соединение через USB-порт
1.6. Передача данных
1.6.1. Принципы передачи данных
1.6.2. Механизм прерываний
1.6.3. Интерфейсы хост-адаптера
1.6.4. Возможность прямого доступа к памяти
1.6.5. Режимы передачи данных
1.7. Установка и конфигурирование USB-устройств
1.7.1. Настройки BIOS для USB
1.7.2. Устранение проблем
1.8. Ограничения USB
1.9. Если вы покупаете компьютер
1.9.1. HS и USB 2.0 — не одно и то же!
1.9.2. Системная плата
1.9.3. Корпус
1.9.4. USB для "старых" моделей компьютеров
1.10. Интернет-ресурсы к этой главе
2.1. Кабели и разъемы
2.1.1. Типы кабелей
2.1.2. Длина кабеля
2.1.3. Разъемы
2.2. Физический интерфейс
2.2.1. Кодирование данных
2.2.2. Идентификация устройств
2.3. Питание
2.3.1. Типы питания USB-устройств
2.3.2. Управление энергопотреблением
2.3.3. Вход в режим низкого энергопотребления
2.4. Интернет-ресурсы к этой главе
Часть П. Внутренняя организация USB
Глава 3. Внутренняя организация шины
3.1. Логические уровни обмена данными
3.1.1. Уровень клиентского ПО
3.1.2. Уровень системного драйвера USB
3.1.3. Уровень хост-контроллера интерфейса
3.1.4. Уровень шины периферийного устройства
3.1.5. Уровень логического USB-устройства
3.1.6. Функциональный уровень USB-устройства
3.2. Передача данных по уровням
3.3. Типы передач данных
3.4. Синхронизация при изохронной передаче
3.5. Кадры
3.6. Конечные точки
3.7. Каналы
3.8. Пакеты
3.8.1. Формат пакетов-маркеров IN, OUT, SETUP и PING
3.8.2. Формат пакета SOF
3.8.3. Формат пакета данных
3.8.4. Формат пакета подтверждения
3.8.5. Формат пакета SPLIT
Содержание
3.9. Контрольная сумма
3.9.1. Алгоритм вычисления CRC
3.9.2. Программное вычисление CRC
3.10. Транзакции
3.10.1. Типы транзакций
3.10.2. Подтверждение транзакций и управление потоком
3.10.3. Протоколы транзакций
Глава 4. Внутренняя организация устройства
4.1. Запросы к USB-устройствам
4.1.1. Конфигурационный пакет
4.1.2. Стандартные запросы к устройствам
4.1.3. Дескрипторы устройства
Глава 5. Внутренняя организация хоста и хабов
5.1. Хабы
5.1.1. Взаимодействие хост-контроллера с хабом
5.1.2. Дескриптор хаба
5.1.3. Запросы хабов
5.1.4. Запрос CLEAR_HUB_FEATURE
5.1.5. Запрос CLEAR_PORT_FEATURE
5.1.6. Запрос GET_BUSJSTATE
5.1.7. Запрос GET_HUB_DESCRIPTOR
5.1.8. Запрос GET_HUB_STATUS
5.1.9. Запрос GETJ>ORT_STATUS
5.1.10. Запрос SET_HUB_DESCR1PTOR
5.1.11. Запрос SET_HUB_FEATURE
5.1.12. Запрос SET_PORT_FEATURE.
5.2. Совместная работа устройств с разными скоростями
Глава 6. USB без ПК
6.1. Разъемы OTG
6.2. Типы OTG-устройств
6.3. Дескриптор OTG-устройства
6.4. Интернет-ресурсы к этой главе
Часть III. практика программирования
Глава 7. Поддержка USB в Windows
7.1. Модель WDM
7.2. Взаимодействие с USB-драйвером
Глава 8. HID-устройства -
8.1. Свойства HID-устройства
8.2. Порядок обмена данными с HID-устройстиом
8.3. Установка HID-устройства
8.4. Идентификация НID-устройства
8.4.1. Идентификация загрузочных устройств
8.4.2. Дескриптор конфигурации НID-устройства
8.4.3. HID-дескриптор
8.4.4. Дескриптор репорта
8.5. Структура дескриптора репорта
8.5.1. Структура элементов репорта
8.5.2. Типы элементов репорта
8.5.3. Примеры дескрипторов
8.6. Запросы к HID-устройству
8.6.1. Запрос GET_REPORT.
8.6.2. Запрос SET_REPORT
8.6.3. Запрос GETJDLE.
8.6.4. Запрос SETJDLE
8.6.5. Запрос GET_PROTOCOL
8.6.6. Запрос SET_PROTOCOL
8.7. Инструментальные средства
8.8. Взаимодействие с HID-драйвером
Глава 9. Введение в WDM
9.1. Драйверные слои
9.2. Символьные имена устройств
9.3. Основные процедуры драйвера WDM
9.3.1. Процедура DriverEntry
9.3.2. Процедура AddDevice
9.3.3. Процедура Unload
9.3.4. Рабочие процедуры драйвера
9.3.5. Обслуживание запросов IOCTL
9.4. Загрузка драйвера и обращение к процедурам драйвера
9.4.1. Процедура работы с драйвером
9.4.2. Регистрация драйвера
9.4.3. Обращение к рабочим процедурам
9.4.4. Хранение драйвера внутри исполняемого файла
9.5. Инструменты создания драйверов
9.5.1. NuMega Driver Studio
9.5.2. Jungo WinDriver
9.5.3. Jungo KernelDriver
Глава 10. Спецификация РпР для USB
10.1. Общие сведения о системе Plug and Play
10.1.1. Задачи и функции Plug and Play
10.1.2. Запуск процедуры РпР
10.1.3. Программные компоненты РпР
10.2. Plug and Play для USB
10.2.1. Конфигурирование устройств USB
10.2.2. Нумерация устройств USB
10.2.3. РпР-идентификаторы устройств USB
10.3. Получение списка USB-устройств
10.4. INF-файл
10.4.1. Структура INF-файла
10.4.2. Секция Version
10.4.3. Секция Manufacturer
10.4.4. Секция DestinationDirs
10.4.5. Секция описания модели
10.4.6. Секция xxx.AddReg и xxx.DelReg.
10.4.7. Секция xxx.LogConfig
10.4.8. Секция xxx.CopyFiles
10.4.9. Секция Strings
10.4.10. Связи секций
10.4.11. Создание и тестирование INF-файлов
10.4.12. Установка устройств с помощью INF-файла
10.5. Ветки реестра для USB
Глава 11. Функции BIOS
11.1. Сервис BIOS 1AH
11.1.1. Функция В101Н — определение наличия PCI BIOS
11.1.2. Функция В102Н — поиск PCI-устройства по идентификаторам
устройства и производителя
11.3. Функция В103Н — поиск PCI-устройства по коду класса
11.4. Функция В108Н — чтение регистра конфигурации (Byte)
11.5. Функция ВЮ9Н — чтение регистра конфигурации (Word)
11.6. Функция В10АН — чтение регистра конфигурации (DWord)
11.7. Функция В10ВН — запись регистра конфигурации (Byte)
11.1.8. Функция В10СН — запись регистра конфигурации (Word)
11.1.9. Функция B10DH — запись регистра конфигурации (DWord)
11.2. Пример использования
Часть IV. Создание USB-устройств
Глава 12. USB-периферия
12.1. Микросхемы Atmel
12.1.1. Микроконтроллеры с архитектурой MSC-51
12.1.2. Контроллеры хабов
12.1.3. Микропроцессоры-хабы с ядром AVR
12.1.4. Другие микросхемы Atmel
12.2. Микросхемы Cygnal
12.2.1. Микропроцессоры C8051F320 и C8051F321
12.2.2. Другие микросхемы Cygnal
12.3. Микросхемы FTDI
12.3.1. Микросхемы FT232AM и FT232BM
12.3.2. Микросхемы FT245AM и FT245BM
12.3.3. Микросхема FT2232BM
12.3.4. Микросхема FT8U100AX
12.3.5. Отладочные комплекты и модули
12.3.6. Драйверы
12.3.7. Дополнительные утилиты
12.3.8. Другие модули
12.4. Микросхемы Intel
12.5. Микросхемы Microchip
12.6. Микросхемы Motorola
12.7. Микросхемы Philips
12.7.1. Микросхемы USB
12.7.2. Хабы
12.7.3. Другие микросхемы Philips
12.8. Микросхемы Texas Instruments
12.9. Микросхемы Trans Dimension
12.10. Микросхемы защиты питания
12.11. Интернет-ресурсы к этой главе
Глава 13. HID-устройство на основе Atmel AT89C5131
13.1. Структурная схема АТ89С5131
13.2. USB-регистры АТ89С5131
13.2.1. Регистр USBCON
13.2.2. Регистр USBADDR
13.2.3. Регистр USBINT
13.2.4. Регистр USBIEN
13.2.5. Регистр UEPNUM
13.2.6. Регистр UEPCONX
13.2.7. Регистр UEPSTAX
13.2.8. Регистр UEPRST
13.2.9. Регистр UEPINT
13.2.10. Регистр UEPIEN
13.2.11. Регистр UEPDATX
13.2.12. Регистр UBYCTLX
13.2.13. Регистр UFNUML
13.2.14. Регистр UFNUMH
13.3. Схемотехника АТ89С5131
13.4. Инструменты программирования
13.4.1. Компилятор
13.4.2. Программатор
13.5. Программа для микропроцессора
13.5.1. Первая версия программы для АТ89С5131
13.5.2. Добавляем строковые дескрипторы
13.5.3. Добавление конечных точек
13.5.4. Создание HID-устройства
13.5.5. Обмен данными с HID-устройством
13.6. Чтение репортов в Windows
13.7. Дополнительные функции Windows XP
13.8. Устройство с несколькими репортами
Глава 14. Создание USB-устройства на основе ATMEL AT89C5131
14.1. He-HID-устройство
14.2. Создание драйвера с помощью Driver Studio
14.2.1. Несколько слово библиотеке Driver Studio
14.2.2. Другие классы Driver Studio
14.2.3. Создание шаблона драйвера с помощью Driver Studio
14.2.4. Доработка шаблона драйвера
14.2.5. Базовые методы класса устройства
14.2.6. Реализация чтения данных
14.2.7. Установка драйвера
14.2.8. Программа чтения данных
14.2.9. Чтение данных с конечных точек других типов
14.2.10. "Чистый" USB-драйвер
Глава 15. Использование микросхем FTDI
15.1. Функциональная схема FT232BM
15.2. Схемотехника FT232BM
15.3. Функции D2XX
15.4. Переход от СОМ к USB
15.4.1. Описание схемы преобразователя
15.4.2. Установка скорости обмена
Часть V. Справочник
Глава 16. Базовые функции Windows
16.1. Функции CreateFile и CloseHandle: открытие и закрытие объекта
16.1.1. Дополнительные сведения
16.1.2. Возвращаемое значение
16.1.3. Пример вызова
16.2. Функция ReadFile: чтение данных
16.2.1. Дополнительные сведения
16.2.2. Возвращаемое значение
16.2.3. Пример вызова
16.3. Функция WriteFile: передача данных
16.3.1. Дополнительные сведения
16.3.2. Возвращаемое значение
16.3.3. Пример вызова
16.4. Функция ReadFileEx: АРС-чтение данных
16.4.1. Возвращаемое значение
16.4.2. Дополнительные сведения
16.4.3. Пример вызова
16.5. Функция WriteFileEx. АРС-передача данных
16.5.1. Возвращаемое значение
16.5.2. Пример вызова
16.6. Функция WaitForSingleObject ожидание сигнального
состояния объекта
16.6.1. Возвращаемое значение
16.7. Функция WaitForMultipleObjects: ожидание сигнального
состояния объектов
16.7.1. Возвращаемое значение
16.8. Функция GetOverlappedResult результат асинхронной операции
16.8.1. Возвращаемое значение
16.9. Функция DeviceloControl: прямое управление драйвером
16.9.1. Возвращаемое значение
16.10. Функция QueryDosDevice: получение имени устройства
по его DOS-имени
16.10.1. Возвращаемое значение
16.10.2. Пример вызова
16.11: Функция Define Dos Device: операции с DOS-именем устройства
16.11.1. Возвращаемое значение
16.11.2. Пример вызова
Глава 17. Функции HID API.
17.1. Функция HidD_Hello: проверка библиотеки
17.2. Функция HidD_GetHidGuid. получение GUID
17.3. Функция HidD_GetPreparsedData: создание описателя устройства
17.4. Функция HidD_FreePreparsedData: освобождение описателя
устройства
17.5. Функция HidDjGetFeature: получение FEATURE-репорта
17.6. Функция HidD_SetFeature: передача FEATURE-репорта
17.7. Функция HidD_GetNumInputBuffers: получение числа буферов
17.8. Функция HidD_SetNumInputBujfers: установка числа буферов
17.9. Функция HidD_GetAttributes: получение атрибутов устройства
17.10. Функция HidDjGetManufactiirerString. получение строки производителя
17.11. Функция HidD_GetProductString. получение строки продукта
17.12. Функция HidD__GetSerialNumberString. получение строки серийного номера
17.13. Функция HidDjGetlndexedString. получение строки по индексу
17.14. Функция HidD_GetInputReporr. получение INPUT-репорта
17.15. Функция HidD_SetOutputReport передача OUTPUT-репорта
17.16. Функция HidP_GetCapy. получение свойств устройства
17.17. Функция HidP_MaxDataListLength: получение размеров репортов
Глава 18. Хост-контроллер UCH
18.1. Регистры управления хост-контроллером
18.1.1. Регистр команды USB (USBCMD)
18.1.2. Регистр состояния USB (USBSTS)
18.1.3. Регистр управления прерываниями (USBINTR)
18.1.4. Регистр номера кадра (FRNUM)
18.1.5. Регистр базового адреса кадра (FLBASEADD)
18.1.6. Регистр модификатора начала кадра (SOFMOD)
18.1.7. Регистр состояния и управления порта (PORTSC)
18.2. Структуры данных хост-контроллера UCH
18.2.1. Список кадров
18.2.2. Дескриптор передачи t
18.2.3. Заголовок очереди
18.3. Обработка списка дескрипторов UCH
Глава 19. Инструменты
19.1. Средства Microsoft Visual Studio
19.1.1. Depends
19.1.2. Error Lookup
19.1.3. GuidGen
19.2. Средства Microsoft DDK
19.2.1. DeviceTree
19.2.2. DevCon .-
19.2.3. Chklnf и Genlnf.
19.3. Средства CompuWare Corporation
19.3.1. Monitor
19.3.2. SymLink
19.3.3. EzDriverlnstaller
19.3.4. WdmSniff
19.4. Средства Syslnternals
19.4.1. WinObj
19.5. Средства USB Forum
19.5.1. HID Descriptor Tool
19.6. Средства HDD Software
19.7. Средства Sourceforge
Приложения
Приложение 1. Дополнительные функции
Приложение 2. Таблица идентификаторов языков (LangID)
Приложение 3. Таблица кодов производителей (Vendor ID, Device ID)
Приложение 4. Описание компакт-диска
Литература
Предметный указатель
Скачать книгу Агуров П.-Интерфейс USB практика использования ипрограммирования
Скачать CD-Disc к книге Агуров П.-Интерфейс USB практика использования ипрограммирования
1.Продолжение этой книги "Практика программирования USB"
|