- Артикул:00201459
- Автор: Агуров П.
- ISBN: 978-5-94157-202-6
- Тираж: 3000 экз.
- Обложка: Мягкая обложка
- Издательство: БХВ-Петербург (все книги издательства)
- Город: СПб
- Страниц: 576
- Формат: 70x100/16 (~168x240 мм)
- Год: 2006
- Вес: 1065 г
Изложены базовые сведения по интерфейсу USB для ПК: примеры USB-устройств и советы по их выбору, правила установки и конфигурирования устройств, методы решения возникающих проблем. Описаны кабели, разъемы, принципы питания устройств и другое аппаратное обеспечение. Приведено внутреннее устройство USB и его физическая реализация, обсуждены общие вопросы написания драйверов для операционной системы Microsoft Windws 2000/ХР с примерами на языке Borland Pascal и в среде Delphi. Рассмотрен процесс создания USB-устройства: от выбора микросхем и схемотехники до написания программы микроконтроллера и WDM-драйвера.
В книге содержится большое количество практических советов и примеров программ. Для удобства читателей все исходные коды приводятся на прилагаемом компакт-диске.
Содержание
Введение
Для кого эта книга
Что вы найдете в книге
Программные требования
Аппаратные требования
О программном коде
Краткое описание глав
Обозначения
Благодарности
Часть 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-СОМ и 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. Аппаратное обеспечение USB
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. Интернет-ресурсы к этой главе
Часть II. Внутренняя организация 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 FEA TURE
5.1.5. Запрос CLEAR_PORT_FEATURE
5.1.6. Запрос GET_BUS_STATE
5.1.7. Запрос GET_HUB_DESCRIPTOR
5.1.8. Запрос GET HUB_STATUS
5.1.9. Запрос GET_PORT_STATUS
5.1.10. Запрос SET_HUB_DESCRIPTOR
5.1.11. Запрос SET_HUB_FEA TURE
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. Идентификация HID-устройства
8.4.1. Идентификация загрузочных устройств
8.4.2. Дескриптор конфигурации HID-устройства
8.4.3. HID-дескриптор
8.4.4. Дескриптор репорта
8.5. Структура дескриптора репорта
8.5.1. Структура элементов репорта
8.5.2. Типы элементов репорта
8.5.3. Примеры дескрипторов
8.6. Запросы к НID-устройству
8.6.1. Запрос GET_REPORT
8.6.2. Запрос SET_REPORT
8.6.3. Запрос GET_IDLE
8.6.4. Запрос SET_IDLE
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. Спецификация PnP для USB
10.1. Общие сведения о системе Plug and Play
10.1.1. Задачи и функции Plug and Play
10.1.2. Запуск процедуры PnP
10.1.3. Программные компоненты PnP
10.2. Plug and Play для USB
10.2.1. Конфигурирование устройств USB
10.2.2. Нумерация устройств USB
10.2.3. PnP-идентификаторы устройств 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. Секция ххх. Add Reg и xxx.DelReg
10.4.7. Секция xxx.LogCon?g
10.4.8. Секция xxx.CopyF?es
10.4.9. Секция Strings
10.4.10. Связи секций
10.4.11. Создание и тестирование INF-файлов
10.4.12. Установка устройств с помощью INF-файла
10.5. Ветки реестра для USB
Глава 11. Функции BIOS
11.1. Сервис BIOS IAH
11.1.1. Функция В101Н - определение наличия PCI BIOS
11.1.2. Функция В102Н - поиск PCI-устройства по идентификаторам устройства и производителя
11.1.3. Функция В103Н - поиск PCI-устройства по коду класса
11.1.4. Функция В108Н - чтение регистра конфигурации (Byte)
11.1.5. Функция В109Н - чтение регистра конфигурации (Word)
11.1.6. Функция В10АН - чтение регистра конфигурации (DWord)
11.1.7. Функция В10ВН - запись регистра конфигурации (Byte)
11.1.8. Функция В10СН - запись регистра конфигурации (Word)
11.1.9. Функция B10DH - запись регистра конфигурации (DWord)
11.2. Пример использования
Часть ГУ. Создание 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 АТ89С5131
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 ХР
13.8. Устройство с несколькими репортами
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
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 и Close Handle, открытие и закрытие объекта
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. Функция GetOverlappedResidt. результат асинхронной операции
16.8.1. Возвращаемое значени
16.9. Функция DeviceloControl: прямое управление драйвером
16.9.1. Возвращаемое значение
16.10. Функция Query Dos Device, получение имени устройства по его 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_Helio\ проверка библиотеки
17.2. Функция HidD_GetHidGuid. получение GU1D
17.3. Функция HidD_GetPreparsedData\ создание описателя устройства
17.4. Функция HidD_FreePreparsedData: освобождение описателя устройства
17.5. Функция HidD_GetFeature\ получение FEATURE-репорта
17.6. Функция HidD_SetFeature: передача FEATURE-репорта
17.7. Функция HidD_GetNiunInputBuffers'. получение числа буферов
17.8. Функция HidD_SetNumInputBujfers. установка числа буферов
17.9. Функция HidD_GetAttributes, получение атрибутов устройства
17.10. Функция HidD_GetManufacturerString. получение строки производителя
17.11. Функция HidD_GetProductString. получение строки продукта
17.12. Функция HidD_GetSerialNumberString. получение строки серийного номера
17.13. Функция HidD_GetIndexedString. получение строки по индексу
17.14. Функция HidD_GetInputReport, получение INPUT-репорта
17.15. Функция HidD SetOutputReporr. передача OUTPUT-репорта
17.16. Функция HidP_GetCaps\ получение свойств устройства
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. Дескриптор передачи
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. Описание компакт-диска
Литература
Предметный указатель