В этом видео показано, как работает обнаружение USB-устройств. Связь между USB-устройством и целевым устройством показывает нам, что между ними существует множество переменных и коммуникаций, при этом система обнаруживает как скорость подключенного USB-устройства, так и различные согласования, существующие между ними. Теперь интересное видео от Ben Eater показывает нам, что происходит, когда вы подключаете USB-устройство к ПК.
Как работает обнаружение USB-устройств?
Когда вы подключаете устройство, сначала оно инициирует предварительное согласование или обмен данными. Первая из этих коммуникаций – это сигналы от устройства, которые сообщают вам, является ли оно высокоскоростным или низкоскоростным.
Когда устройство подключено к системе USB, ему присваивается номер, называемый «адресом». Адрес используется исключительно этим устройством, пока оно подключено. Этот адрес может изменяться каждый раз при подключении устройства.
Более того, помимо этого адреса, это устройство также имеет несколько конечных точек, набор источников и пунктов назначения между различными коммуникациями между хостом и устройством.
Все стандартные запросы передаются посредством передачи управления в конечную точку 0. Передача управления начинается с транзакции установления, содержащей 8 байтов. Эти 8 байтов определяют запрос хоста.
Во время USB-связи данные передаются в виде пакетов. Первоначально все пакеты отправляются с хоста через корневой концентратор. Некоторые из этих пакетов заставляют устройство отправлять некоторые пакеты в ответ.
Связь внутри USB основана на серии каналов данных, логических каналов в потоке данных. Можно сказать, что они представляют собой соединение хост-контроллера с логическим объектом в устройстве, которое действует как конечная точка.