Основные особенности USB

Делал устройство с USB-интерфейсом, необходимо было разобраться в основах USB. Написал эту памятку.

USB это протокол проводной связи устройств друг с другом. Основное назначение – подключение к компьютеру различной периферии. Основные особенности:

  1. Неравноправие устройств. Одно всегда ведущее – хост, все другие ведомые – конечные точки. Конечная точка не может сама инициировать обмен данными, всегда ждет пока к ней обратится хост. Хост опрашивает конечные точки через равные промежутки времени – так называемые кадры.
  2. Возможность питания конечных точек от хоста. В USB-кабеле есть отдельная линия для подачи питания +5в.
  3. Двунаправленная дифференциальная шина обмена данными. Дифференциальная для снижения помех и повышения скорости. В один момент времени информация может передаваться только в одном направлении. Это тоже понятно – в системе ведущий/ведомый нет необходимости передавать информацию сразу в двух направлениях. Все равно обмен происходит по схеме: запрос от хоста -> ответ от конечной точки.
  4. Три стандартных скорости обмена: Low Speed, Full Speed, High Speed (низкая, стандартная, высокая). Дает возможность подключения устройств c разной скоростью работы: как медленных контроллеров с программной реализацией протокола, так и высокоскоростных накопителей.
  5. Аппаратная поддержка пакетной связи с переменной длиной пакета. Начало и конец пакета маркируются специальными состояниями шины.
  6. Поддержка на уровне протокола:
    • проверка целостности пакетов с помощью контрольной суммы;
    • гарантированная доставка пакетов – потеря пакетов исключается, при повреждении хост повторяет обмен, но время доставки не гарантируется;
    • квитирование – если конечная точка не может работать быстро, она может сколько угодно раз отвечать NAK и хост будет пытаться провести обмен данными в следующий кадр;
    • потоковый обмен данными – возможна потеря пакетов, повторов нет, зато время доставки гарантированно.
  7. Многоадресность. Возможность подключения к одной шине до 255 конечных точек с помощью с специальных повторителей – хабов.
  8. Поддержка на уровне протокола многофункциональных устройств – одно физическое устройство может иметь множество конечных точек.
  9. Самоконфигуриемость. Хост постоянно опрашивает хабы и при появлении нового устройства автоматически определяет количество конечных точек, назначает им адреса и гарантированную полосу пропускания. Для этого каждое устройство должно иметь хотя бы одну конечную конечную точку. Конечная точка сообщает информацию о себе с помощью т.н. дескрипторов – специальных структур данных.
  10. Поддержка Plug and Play. Хабы поддерживают аппаратное распознавание факта подключения устройства и его скорость. Опять таки с помощью специального состояния линии связи. Также хабы позволяют управлять питанием. Конечная точка сообщает хосту стандартную информацию:
    • Для ОС – код производителя, код устройства, код подсистемы, версия. По этой информации ОС ищет и устанавливает драйверы. Драйвер может в любой момент времени средствами протокола дополнительно сконфигурировать конечную точку. Для этого используется специальный маркер (короткий пакет, передаваемый перед пакетом с данными) SETUP.
    • Для пользователя – текстовую строку с общим названием устройства. Этой информацией пользователь может воспользоваться, чтобы определить какой диск с драйверами надо поставить 🙂
  11. Существование стандартных устройств – так называемых профилей USB. В число таких устройств входят эмуляция стандарных древних портов – COM и LPT; HUD устройства – устройства для связи с пользователем: клавиатура, мышь, джойстик; звуковая карта; накопители информации. Для стандартных устройств можно использовать стандартные драйверы, что облегчает разработку периферии, подключаемой по USB – нет необходимости писать свой драйвер.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *