Материал просмотрен 676 раз(а)

Хорошая книга, многое объясняет. Пригодится тем, кто хочет понять как происходит передача данных по шине USB.

Обложка:

Обложка

Обложка

Ссылка:

https://yadi.sk/d/HO2o4GArfUN9X

Содержание

Введение 1
Для кого эта книга : 2
Что вы найдете в книге 2
Программные требования 3
Аппаратные требования 4
О программном коде 4
Краткое описание глав 4
Обозначения 6
Благодарности 7
ЧАСТЬ I. ВВЕДЕНИЕ В USB 9
Глава 1. Что такое USB 11
1.1. История USB 11
1.2. Сравнение USB с другими интерфейсами 14
1.3. Основные понятия USB 16
1.3.1. Общая архитектура шины 16
1.3.2. Физическая и логическая архитектура шины 16
1.3.3. Составляющие USB 18
1.3.4. Свойства USB-устройств 18
1.3.5. Свойства хабов 19
1.3.6. Свойства хоста 20
1.4. Примеры USB-устройств 20
1.4.1. Мышь и клавиатура., 21
1.4.2. Мониторы 21
1.4.3. Переходники USB-to-COM и USB-to-LPT 22
1.4.4. Сканеры 23
1.4.5. Модемы 23
1.4.6. Звуковые колонки 24
1.4.7. Флеш-диски 25
1.4.8. Хабы 28
1.4.9. Измерительная техника 28
1.4.10. Экзотические устройства 29
1.5. Сетевое соединение через USB 30
1.5.1. Конвертер USB-Ethernet 31
1.5.2. Прямое соединение через USB-порт 31
1.6. Передача данных 31
1.6.1. Принципы передачи данных 32
1.6.2. Механизм прерываний 32
1.6.3. Интерфейсы хост-адаптера 32
1.6.4. Возможность прямого доступа к памяти 34
1.6.5. Режимы передачи данных 34
1.7. Установка и конфигурирование USB-устройств 35
1.7.1. Настройки BIOS для USB 38
1.7.2. Устранение проблем 41
1.8. Ограничения USB 45
1.9. Если вы покупаете компьютер 46
1.9.1. HS и USB 2.0 — не одно и то же! 46
1.9.2. Системная плата 47
1.9.3. Корпус 48
1.9.4. USB для “старых” моделей компьютеров 48
1.10. Интернет-ресурсы к этой главе 49
Глава 2. Аппаратное обеспечение USB 51
2.1. Кабели и разъемы 51
2.1.1. Типы кабелей 52
2.1.2. Длина кабеля 53
2.1.3. Разъемы 53
2.2. Физический интерфейс 55
2.2.1. Кодирование данных 57
2.2.2. Идентификация устройств 58
2.3. Питание 59
2.3.1. Типы питания USB-устройств 59
2.3.2. Управление энергопотреблением 60
2.3.3. Вход в режим низкого энергопотребления 61
2.4. Интернет-ресурсы к этой главе 61
ЧАСТЬ II. ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ USB 63
Глава 3. Внутренняя организация шины 65
3.1. Логические уровни обмена данными 65
3.1.1. Уровень клиентского ПО 66
3.1.2. Уровень системного драйвера USB 67
3.1.3. Уровень хост-контроллера интерфейса 68
3.1.4. Уровень шины периферийного устройства 68
3.1.5. Уровень логического USB-устройства 69
3.1.6. Функциональный уровень USB-устройства 69
3.2. Передача данных по уровням 69
3.3. Типы передач данных 71
3.4. Синхронизация при изохронной передаче 73
3.5. Кадры 77
3.6. Конечные точки 78
3.7. Каналы 79
3.8. Пакеты 81
3.8.1. Формат пакетов-маркеров IN, OUT, SETUP и PING 83
3.8.2. Формат пакета SOF 83
3.8.3. Формат пакета данных 84
3.8.4. Формат пакета подтверждения < 84
3.8.5. Формат пакета SPLIT * 84
3.9. Контрольная сумма 85
3.9.1. Алгоритм вычисления CRC 86
3.9.2. Программное вычисление CRC 87
3.10. Транзакции 90
3.10.1. Типы транзакций 91
3.10.2. Подтверждение транзакций и управление потоком 92
3.10.3. Протоколы транзакций 93
Глава 4. Внутренняя организация устройства 96
4.1. Запросы к USB-устройствам 96
4.1.1. Конфигурационный пакет 96
4.1.2. Стандартные запросы к устройствам 99
4.1.3. Дескрипторы устройства 105
Глава 5. Внутренняя организация хоста и хабов 123
5.1. Хабы 123
5.1.1. Взаимодействие хост-контроллера с хабом 126
5.1.2. Дескриптор хаба 127
5.1.3. Запросы хабов 129
5.1.4. Запрос CLEAR_HUB_FEATURE 130
5.1.5. Запрос CLEAR PORT_FEATURE 130
5.1.6. Запрос GET_BUS_STA ТЕ 131
5.1.7. Запрос GET_HUB_DESCRfPTOR 131
5.1.8. Запрос GET_HUB_STATUS 131
5.1.9. Запрос GET_PORT_STA TUS 132
5.1.10. Запрос SET_HUB_DESCRIPTOR 134
5.1.11. Запрос SET_HUB_FEATURE 134
5.1.12. Запрос SET PORT FEATURE. 134
5.2. Совместная работа устройств с разными скоростями 135
Глава 6. USB без ПК 137
6.1. Разъемы OTG 138
6.2. Типы OTG-устройств 138
6.3. Дескриптор OTG-устройства 139
6.4. Интернет-ресурсы к этой главе 140
ЧАСТЬ III. ПРАКТИКА ПРОГРАММИРОВАНИЯ 141
Глава 7. Поддержка USB в Windows 143
7.1. Модель WDM 144
7.2. Взаимодействие с USB-драйвером 146
Глава 8. HID-устройства * 149
8.1. Свойства HID-устройства 149
8.2. Порядок обмена данными с HID-устройством 151
8.3. Установка HID-устройства 152
8.4. Идентификация HID-устройства 152
8.4.1. Идентификация загрузочных устройств 153
8.4.2. Дескриптор конфигурации HID-устройства 153
8.4.3. HID-дескриптор 154
8.4.4. Дескриптор репорта 156
8.5. Структура дескриптора репорта 156
8.5.1. Структура элементов репорта 156
8.5.2. Типы элементов репорта 157
8.5.3. Примеры дескрипторов 165
8.6. Запросы к HID-устройству 168
8.6.1. Запрос GET_REPORT. 169
8.6.2. Запрос SET_REPORT 169
8.6.3. Запрос GETJDLE. 170
8.6.4. Запрос SETJDLE 170
8.6.5. Запрос GET_PROTOCOL 171
8.6.6. Запрос SET_PROTOCOL 171
8.7. Инструментальные средства 171
8.8. Взаимодействие с HID-драйвером 172
Глава 9. Введение в WDM 181
9.1. Драйверные слои 183
9.2. Символьные имена устройств 184
9.3. Основные процедуры драйвера WDM 189
9.3.1. Процедура DriverEntry 190
9.3.2. Процедура AddDevice 192
9.3.3. Процедура Unload 194
9.3.4. Рабочие процедуры драйвера 196
9.3.5. Обслуживание запросов IOCTL 203
9.4. Загрузка драйвера и обращение к процедурам драйвера 209
9.4.1. Процедура работы с драйвером 209
9.4.2. Регистрация драйвера 210
9.4.3. Обращение к рабочим процедурам 217
9.4.4. Хранение драйвера внутри исполняемого файла 218
9.5. Инструменты создания драйверов 220
9.5.1. NuMega Driver Studio 220
9.5.2. Jungo WinDriver 220
9.5.3. Jungo KernelDriver 220
Глава 10. Спецификация PnP для USB 221
10.1. Общие сведения о системе Plug and Play 221
10.1.1. Задачи и функции Plug and Play 221
10.1.2. Запуск процедуры PnP 222
10.1.3. Программные компоненты PnP 224
10.2. Plug and Play для USB 225
10.2.1. Конфигурирование устройств USB 226
10.2.2. Нумерация устройств USB 226
10.2.3. PnP-идентификаторы устройств USB 228
10.3. Получение списка USB-устройств 229
10.4. INF-файл 234
10.4.1. Структура INF-файла 234
10.4.2. Секция Version 235
10.4.3. Секция Manufacturer 237
10.4.4. Секция DestinationDirs 239
10.4.5. Секция описания модели 241
10.4.6. Секция xxx.AddReg и xxx.DelReg. 242
10.4.7. Секция ххх.LogConfig 244
10.4.8. Секция xxx.CopyFiles 244
10.4.9. Секция Strings 245
10.4.10. Связи секций 246
10.4.11. Создание и тестирование INF-файлов 247
10.4.12. Установка устройств с помощью INF-файла 248
10.5. Ветки реестра для USB 249
Глава 11. Функции BIOS 251
11.1. Сервис BIOS 1АН 251
11.1.1. Функция В101Н — определение наличия PCI BIOS 252
11.1.2. Функция В102Н — поиск PCI-устройства по идентификаторам
устройства и производителя 253
11.1.3. Функция В103Н — поиск PCI-устройства по коду класса 254
11.1.4. Функция В108Н — чтение регистра конфигурации (Byte) 255
11.1.5. Функция ВЮ9Н — чтение регистра конфигурации (Word) 256
11.1.6. Функция В10АН — чтение регистра конфигурации (DWord) 256
11.1.7. Функция В10ВН — запись регистра конфигурации (Byte) 257
11.1.8. Функция В10СН — запись регистра конфигурации (Word) 257
11.1.9. Функция B10DH — запись регистра конфигурации (DWord) 258
11.2. Пример использования 259
ЧАСТЬ IV. СОЗДАНИЕ USB-УСТРОЙСТВ 283
Глава 12. USB-периферия 285
12.1. Микросхемы Atmel 286
12.1.1. Микроконтроллеры с архитектурой MSC-51 286
12.1.2. Контроллеры хабов 289
12.1.3. Микропроцессоры-хабы с ядром AVR 289
12.1.4. Другие микросхемы Atmel 290
12.2. Микросхемы Cygnal 291
12.2.1. Микропроцессоры C8051F320 и C8051F321 291
12.2.2. Другие микросхемы Cygnal 293
12.3. Микросхемы FTDI 296
12.3.1. Микросхемы FT232AM и FT232BM 297
12.3.2. Микросхемы FT245AM и FT245BM 298
12.3.3. Микросхема FT2232BM 299
12.3.4. Микросхема FT8U100AX 300
12.3.5. Отладочные комплекты и модули 301
12.3.6. Драйверы 302
12.3.7. Дополнительные утилиты 303
12.3.8. Другие модули 304
12.4. Микросхемы Intel 304
12.5. Микросхемы Microchip 308
12.6. Микросхемы Motorola 308
12.7. Микросхемы Philips 309
12.7.1. Микросхемы USB 310
12.7.2. Хабы 311
12.7.3. Другие микросхемы Philips 313
12.8. Микросхемы Texas Instruments 314
12.9. Микросхемы Trans Dimension 317
12.10. Микросхемы защиты питания 318
12.11. Интернет-ресурсы к этой главе 319
Глава 13. HID-устройство на основе Atmel АТ89С5131 322
13.1. Структурная схема АТ89С5131 322
13.2. USB-регистры АТ89С5131 324
13.2.1. Регистр USBCON 324
13.2.2. Регистр USBADDR 326
13.2.3. Регистр USBINT 327
13.2.4. Регистр USBIEN 328
13.2.5. Регистр UEPNUM. 329
13.2.6. Регистр UEPCONX 330
13.2.7. Регистр UEPSTAX. 331
13.2.8. Регистр UEPRST. 334
13.2.9. Регистр UEPINT. 335
13.2.10. Регистр UEPIEN 336
13.2.11. Регистр UEPDATX 337
13.2.12. Регистр UBYCTLX 337
13.2.13. Регистр UFNUML 338
13.2.14. Регистр UFNUMH. 338
13.3. Схемотехника АТ89С5131 338
13.4. Инструменты программирования 339
13.4.1. Компилятор 341
13.4.2. Программатор 342
13.5. Программа для микропроцессора 349
13.5.1. Первая версия программы для АТ89С5131 349
13.5.2. Добавляем строковые дескрипторы 369
13.5.3. Добавление конечных точек 374
13.5.4. Создание HID-устройства 377
13.5.5. Обмен данными с HID-устройством 381
13.6. Чтение репортов в Windows 388
13.7. Дополнительные функции Windows ХР 396
13.8. Устройство с несколькими репортами 397
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131 402
14.1. He-HID-устройство 402
14.2. Создание драйвера с помощью Driver Studio 405
14.2.1. Несколько слов о библиотеке Driver Studio 407
14.2.2. Другие классы Driver Studio 411
14.2.3. Создание шаблона драйвера с помощью Driver Studio 412
14.2.4. Доработка шаблона драйвера 422
14.2.5. Базовые методы класса устройства 423
14.2.6. Реализация чтения данных 426
14.2.7. Установка драйвера 428
14.2.8. Программа чтения данных 429
14.2.9. Чтение данных с конечных точек других типов 438
14.2.10. “Чистый” USB-драйвер 439
Глава 15. Использование микросхем FTDI 457
15.1. Функциональная схема FT232BM 457
15.2. Схемотехника FT232BM 460
15.3. Функции D2XX 460
15.4. Переход от СОМ к USB 465
15.4.1. Описание схемы преобразователя 465
15.4.2. Установка скорости обмена 467
ЧАСТЬ V. СПРАВОЧНИК 469
Глава 16. Базовые функции Windows 471
16.1. Функции CreateFile и CloseHandle: открытие и закрытие объекта .471
16.1.1. Дополнительные сведения 472
16.1.2. Возвращаемое значение 472
16.1.3. Пример вызова 472
16.2. Функция Read File: чтение данных 473
16.2.1. Дополнительные сведения 474
16.2.2. Возвращаемое значение 474
16.2.3. Пример вызова 474
16.3. Функция WriteFile: передача данных 475
16.3.1. Дополнительные сведения 476
16.3.2. Возвращаемое значение 476
16.3.3. Пример вызова 476
16.4. Функция ReadFileEx. АРС-чтение данных 477
16.4.1. Возвращаемое значение 479
16.4.2. Дополнительные сведения 479
16.4.3. Пример вызова 479
16.5. Функция WriteFileEx: АРС-передача данных 480
16.5.1. Возвращаемое значение 481
16.5.2. Пример вызова 481
16.6. Функция WaitForSingleObject ожидание сигнального
состояния объекта 482
16.6.1. Возвращаемое значение 482
16.7. Функция WaitForMultipleObjects: ожидание сигнального
состояния объектов 483
16.7.1. Возвращаемое значение 484
16.8. Функция GetOverlappedResult результат асинхронной операции 484
16.8.1. Возвращаемое значение 485
16.9. Функция DeviceIoControl: прямое управление драйвером 485
16.9.1. Возвращаемое значение 487
16.10. Функция QueryDosDevice: получение имени устройства
по его DOS-имени 487
16.10.1. Возвращаемое значение 488
16.10.2. Пример вызова 488
16.11: Функция Define Dos Device: операции с DOS-именем устройства 489
16.11.1. Возвращаемое значение 490
16.11.2. Пример вызова 490
Глава 17. Функции HID API. 492
17.1. Функция HidD_Hello: проверка библиотеки 492
17.2. Функция HidD_GetHidGuid: получение GUID 492
17.3. Функция HidD_GetPreparsedData: создание описателя устройства 493
17.4. Функция HidD_FreePreparsedData: освобождение описателя устройства 493
17.5. Функция HidD_GetFeature: получение FEATURE-репорта 494
17.6. Функция HidD_SetFeature: передача FEATURE-репорта 494
17.7. Функция HidD_GetNumInputBuffers: получение числа буферов 495
17.8. Функция HidD_SetNumInputBuffers: установка числа буферов 495
17.9. Функция HidD_GetAttribntes: получение атрибутов устройства 495
17.10. Функция HidD_GetMamifactnrerStnng. получение строки производителя 496
17.11. Функция HidD_GetProductString. получение строки продукта 497
17.12. Функция HidD_ Get Serial MumberString. получение строки
серийного номера 497
17.13. Функция HidD_GetIndexedString. получение строки по индексу 498
17.14. Функция HidDjGetlnputReporr. получение INPUT-репорта 498
17.15. Функция HidD_SetOutputReport. передача OUTPUT-репорта 499
17.16. Функция HidP_GetCaps: получение свойств устройства 499
17.17. Функция HidP_MaxDataListLength: получение размеров репортов 500
Глава 18. Хост-контроллер UCH 502
18.1. Регистры управления хост-контроллером 502
18.1.1. Регистр команды USB (USBCMD) ..504
18.1.2. Регистр состояния USB (USBSTS) 506
18.1.3. Регистр управления прерываниями (USBINTR) 506
18.1.4. Регистр номера кадра (FRNUM) 507
18.1.5. Регистр базового адреса кадра (FLBASEADD) 508
18.1.6. Регистр модификатора начала кадра (SOFMOD) 508
18.1.7. Регистр состояния и управления порта (PORTSC) 509
18.2. Структуры данных хост-контроллера UCH 510
18.2.1. Список кадров 510
18.2.2. Дескриптор передачи i 511
18.2.3. Заголовок очереди 514
18.3. Обработка списка дескрипторов UCH 516
Глава 19. Инструменты 518
19.1. Средства Microsoft Visual Studio 518
19.1.1. Depends 518
19.1.2. Error Lookup 518
19.1.3. GuidGen 518
19.2. Средства Microsoft DDK 520
19.2.1. DeviceTree 520
19.2.2. DevCon .- 521
19.2.3. Chklnf и Genlnf. 526
19.3. Средства CompuWare Corporation 527
19.3.1. Monitor 527
19.3.2. SymLink 527
19.3.3. EzDriverlnstaller 527
19.3.4. WdmSniff 527
19.4. Средства Syslntemals 528
19.4.1. WinObj 528
19.5. Средства USB Forum 531
19.5.1. HID Descriptor Tool 531
19.6. Средства HDD Software 533
19.7. Средства Sourceforge 533
ПРИЛОЖЕНИЯ 535
Приложение 1. Дополнительные функции 537
Приложение 2. Таблица идентификаторов языков (LangID) 539
Приложение 3. Таблица кодов производителей (Vendor ID, Device ID) 543
Приложение 4. Описание компакт-диска 546
Литература 548
Предметный указатель 549

 

Книга "Интерфейс USB" П. Агуров - купить книгу в интернет-магазине Ozon.ru Книга "Интерфейс USB" П. Агуров – купить книгу ISBN 9785941572021 с доставкой по почте в интернет-магазине Ozon.ru