Модель передачи данных
Каждое устройство интерфейса USB представляет собой набор независимых конечных точек (Endpoint), с которыми хост-контроллер обменивается информацией. Конечные точки (функции в периферийном устройстве) описываются следующими параметрами:
· требуемой частотой доступа к интерфейсу и допустимыми задержками обслуживания;
· требуемой полосой пропускания канала;
· номером конечной точки;
· требованиями к обработке ошибок;
· максимальными размерами передаваемых и принимаемых пакетов;
· типом обмена;
· направлением обмена (для сплошного и изохронного обменов).
Каждое устройство с интерфейсом USB обязательно имеет конечную точку с номером 0, используемую для инициализации, общего управления и опроса его состояния. Эта конечная точка всегда сконфигурирована при включении питания и подключении устройства к интерфейсу. Она поддерживает передачи типа "управление".
Кроме нулевой конечной точки, периферийные устройства-функции могут иметь конечные точки, реализующие полезный обмен данными. Низкоскоростные устройства могут иметь до двух дополнительных конечных точек, полноскоростные - до 16 конечных точек ввода и 16 конечных точек вывода (протокольное ограничение). Конечные точки не могут быть использованы до их конфигурирования (установления согласованного с ними канала).
Каналом (Pipe) в интерфейсе USB называется модель передачи данных между центральной частью системы USB (хост-контроллером) и конечной точкой (Endpoint) устройства.
Имеются два типа каналов: потоки (Stream) и сообщения (Message).
Поток доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов - ввода и вывода.
Поток может реализовывать следующие типы обмена: сплошной, изохронный и прерывания. Доставка всегда идет в порядке "первым вошел - первым вышел" (FIFO). С точки зрения интерфейса USB, данные потока не структурированы.
Сообщения имеют формат, определенный спецификацией интерфейса USB. Хост-контроллер посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс не обслуженных сообщений. Двухсторонний обмен сообщениями адресуется к одной и той же конечной точке. Для доставки управляющих сообщений (команд) используется только обмен типа "управление".
С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т.п.). Каналы организуются при конфигурировании периферийных устройств. Для каждого включенного периферийного устройства существует канал управляющих сообщений, по которому передается информация конфигурирования, управления и состояния.