Виртуальные каналы и конечные точки
Все примеры в статье даются в среде операционной системы Linux и Windows. В режиме передачи данных, когда процесс конфигурирования (энумерации) уже закончился, между USB устройством и хостом должны быть налажены мосты. Это некий набор виртуальных каналов, по которым ид.т обмен данными и служебной информацией. Англоязычный термин pipe – труба. Ясно, что они разделяют единственную среду передачи, а потому мультиплексированные и соответственно виртуальные. Можно провести аналогию с локальной сетью. Шина Ethernet одна, но соединений TCP может быть несколько. Но в TCP/IP, соединения TCP могут возникать и завершаться много раз в процессе работы. В USB типы каналов и их количество фиксируется на стадии процесса энумерации.
В стандарте определяется четыре типа каналов: управляющие, по прерыванию, массивов, данных и изохронные. Только управляющий канал является двунаправленным, остальные каналы могут быть только однонаправленными. Для двустороннего обмена требуется организация, хотя бы трех каналов. Обязательный управляющий канал и по одному для каждого направления. В USB принято, что канал называется каналом ввода, если данные передаются в хост и канал вывода, если из хоста. Применяя специальные при.мы, можно использовать канал управления для передачи небольших объемов данных. Но это не стандартное использование канала и применяется редко. Напоминаем, что все информационные обмены на шине, для всех видов каналов происходят под управлением хоста. Первым делом хост посылает запрос, а затем USB устройство отвечает.
Рисунок 1 |
Управляющий канал используется для передачи команд протокола USB, передача данных с использованием канала управления, не является стандартным использованием канала. Хотя можно приспособить канал управления для передачи данных прикладной программы. В каждом USB устройстве должен быть хотя бы один управляющий канал.
Канал передачи по прерыванию используется для передачи небольших объ.мов данных, но с гарантированными задержками. Хост опрашивает USB устройство на предмет готовности порции данных и если USB устройство готово для обмена, то обмен происходит. Время реакции USB устройства зада.тся при конфигурировании и лежит в диапазоне от 1 до 255 миллисекунд. Так что это не связано напрямую с прерываниями в общепринятом понимании. Один канал по прерыванию типа ввода, используется в мыши USB. По каналу передаются клики и координаты указателя. В моей клавиатуре USB используется два канала по прерыванию и один канал управления.
Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью, является отсутствие повторной передачи данных в случае ошибок. Поврежд.нные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени, без временных задержек. С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB устройства переда.тся на хост. В веб камерах используются изохронные каналы.
Канал передачи массивов данных используется в типах устройств, не требующих временной привязки при передаче данных и оперативной реакции на внешние события. Принципиальное отличие от двух предыдущих типов каналов, что не гарантирован временной интервал, по истечении которого данные будут доставлены. В изохронном канале хост опрашивает устройство с частотой 1 миллисекунда. В канале передачи по прерыванию, хост может опрашивать USB устройство с частотой от 1 до 255 миллисекунд. В канале передачи массивов, хост начинает запрашивать данные для приема в свободное от всех остальных передач время. В случае искажения данных при передаче, происходит повторная передача искаж.нных данных. В моей флэшке используется два канала передачи массива данных, один на передачу и один на при.м, не считая канала управления.
У USB устройства, при.мником и передатчиком данных служит буфер, который называется конечная точка. Тип конечной точки определяет тип канала, который связывает е. с хостом. Например, контроллер USB микроконтроллера AT90usb162 фирмы Atmel, имеет в общей сложности 4 конечные точки, не считая конечной точки управления, 4 возможных буфера обмена. Программа микроконтроллера, должна соответственно сконфигурировать необходимое количество конечных точек для своих нужд. Все конечные точки контроллера USB перенумерованы. Нулевая конечная точка всегда используется для нужд канала управления и не может быть переконфигурирована для других целей. Если не создается драйвер операционной системы, то на стороне хоста расположение буфера знать не обязательно, так как взаимодействие программы на стороне хоста с USB устройством происходит через системные вызовы операционной системы и скрыто от пользовательской программы.
.
|