Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments
Типы стандартов USB и разница между ними | USB-флешки | Блог

Вроде мы слышали, что USB 3.0 — это круче, чем USB 2.0. Но чем именно — знают не все. А тут еще появляются какие-то форматы Gen 1, Gen 2, маркировки Superspeed. Разбираемся, что значат все эти маркировки и чем они отличаются друг от друга. Спойлер: версий USB всего четыре.

Содержание

USB 2.0

Когда-то было слово только USB 1.0. Сейчас это уже практически архаика, которую даже на старых устройствах почти не встретить. Еще 20 лет назад на смену первопроходцу USB 1.0 пришел улучшенный USB 2.0. Как и первая версия, эта спецификация использует два вида проводов. По витой паре идет передача данных, а по второму типу провода — питание устройства, от которого и идет передача информации. Но такой тип подключения подходил только для устройств с малым потреблением тока. Для принтеров и другой офисной техники использовались свои блоки питания.

USB версии 2.0 могут работать в трех режимах:

  • Low-speed, 10–1500 Кбит/c (клавиатуры, геймпады, мыши)
  • Full-speed, 0,5–12 Мбит/с (аудио и видеоустройства)
  • High-speed, 25–480 Мбит/с (видеоустройства, устройства для хранения данных)

USB 3.0

Стандарт USB 3.0 появился в 2008 году и до сих пор используется во многих устройствах. Скорость передачи данных выросла с 480 Мбит/с до 5 Гбит/с. Помимо скорости передачи данных, USB 3.0 отличается от версии 2.0 и силой тока. В отличие от более ранней версии, которая выдавала 500 мА, USB 3.0 способен отдавать до 4.5 Вт (5 В, 900 мА).

Новое поколение USB обратно совместима с предыдущими версиями. То есть USB 3.0 может работать и с разъемами USB 2.0 и даже 1.1. Но в этом случае буду ограничения по скорости. Подключив USB 3.0 к устройству с USB 2.0 скорость, вы получите не больше 480 Мбит/с — стандарт для версии 2.0. И наоборот, кабель 2.0 не станет более скоростным, если подключить его в устройство с USB 3.0. Это связано с количеством проводов, используемых в конкретной технологии. В версии USB 2.0 всего 4 провода, тогда как у USB 3.0 их 8.

Если вы хотите получить скорость передачи, заявленную стандартом USB 3.0, оба устройства и кабель должны быть именно версии 3.0.

USB 3.1

В 2013 году появляется версия USB 3.1 с максимальной заявленной скорость передачи данных до 10 Гбит/с, выходной мощностью до 100 Вт (20 В, 5 А). С появлением USB 3.1 произошла революция в маркировках всех стандартов. Но с ней мы разберемся чуть позже. А пока запомним главное: пропускная способность USB 3.1 увеличилась вдвое по сравнению с версией 3.0. И одновременно с обновленным стандартом появился и принципиально новый разъем — USB type-С. Он навсегда решил проблему неправильного подключения кабеля, так как стал симметричным и универсальным, и теперь все равно, какой стороной подключать провод к устройству.

USB 3.2

В 2017 году появилась информация о новой версии — USB 3.2. Она получила сразу два канала (больше проводов богу проводов) по 10 Гбит/с в каждую сторону и суммарную скорость в 20 Гбит/с. Стандарт USB 3.2 также обратно совместим с режимами USB 3.1, 3.0 и ниже. Поддерживается типом подключения USB-C на более современных гаджетах.

Типы разъемов

Версий разъемов USB несколько, и для каждого есть свое предназначение.

  • type-А — клавиатуры, флешки, мышии т. п.
  • type-B — офисная техника (принтеры, сканеры) и т. п.
  • mini type-B — кардридеры, модемы, цифровые камеры и т. п.
  • micro type-B — была наиболее распространенной в последние годы . Большинство смартфонов использовали именно этот тип подключения, пока не появился type-C. До сих пор остается довольно актуальным.
  • type-C — наиболее актуальный и перспективный разъем, полностью симметричный и двухсторонний. Появился одновременно со стандартом USB 3.1 и актуален для более поздних версий стандартов USB.

Superspeed, Gen или как разобраться в маркировках стандартов USB

Как только в типах стандартов появилась USB 3.1, привычная цифровая маркировка изменилась и здорово запуталась. Вполне понятный и простой USB 3.0 автоматически превратился в USB 3.1 Gen 1 и ему была присвоена маркировка SuperSpeed. А непосредственно сам USB 3.1 стал называться USB 3.1 Gen 2 с маркировкой SuperSpeed +.

Но и это уже потеряло свою актуальность с выходом стандарта USB 3.2. Он получил название USB 3.2 Gen 2×2 и маркировку SuperSpeed ++. В итоге маркировка всех предшествующих стандартов опять меняется. Теперь USB 3.1, она же USB 3.1 Gen 1, превращается задним числом в USB 3.2 Gen 1 с прежней маркировкой SuperSpeed. А USB 3.1, ставшая USB 3.1 Gen 2, тоже поднялась до USB 3.2 Gen 2. При этом конструктивно все стандарты остались прежними — изменяются только названия. Если вы уже запутались во всех этих цифрах и маркировках, таблица ниже поможет внести ясность в актуальных названиях.

Если еще более кратко, то сейчас опознать стандарты USB можно так:

USB 3.0 — это USB 3.2 Gen 1, он же Superspeed
USB 3.1 — это USB 3.2 Gen 2, он же Superspeed+
USB 3.2 — это USB 3.2 Gen 2×2, он же Superspeed++

Что такое USB разьем? Какие бывают типы USB?

USB (ю-эс-би, англ. Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс для подключения периферийных устройств к вычислительной технике. Получил широчайшее распространение и фактически стал основным интерфейсом подключения периферии к бытовой цифровой технике.

Интерфейс позволяет не только обмениваться данными, но и обеспечивать электропитание периферийного устройства. Сетевая архитектура позволяет подключать большое количество периферии даже к устройству с одним разъёмом USB.

Разработка спецификаций USB производится в рамках международной некоммерческой организации USB Implementers Forum (USB-IF), объединяющей разработчиков и производителей оборудования с шиной USB. В процессе развития выработано несколько версий спецификаций. Тем не менее разработчикам удалось сохранить высокую степень совместимости оборудования разных поколений.

поколения USB

Существуют два типа коннекторов/разъёмов  для USB:

Каждый из типов подразделяешься на три группы:

  • Стандартные
  • Мини
  • Микро
Некоторые типы разъемов
Типы USB разъемов
Типы USB

Все USB устройства имеют свою версию.

Первая версия USB разъёмов (1.1). Её Характерной особенностью является очень маленькая скорость, при которой вся информация передаётся с большой задержкой.
Скорость передачи составляет 12 Мбит/с. Его основное предназначение – это применение для взаимосвязи устройств.

Вторая версия USB разъёмов (2.0).

Характеризуется скоростью передачи данных 480 Мбит/с. Это соответствует скорости в 48 Мбайт/с.

Основная часть всех современных технических приборов и устройств приспособлены к применению именно этой версии. Она наиболее популярна и известна, а поэтому все ещё пользуется спросом на рынке электротоваров.
Правда по причине множества факторов настоящая скорость этого стандарта не бывает больше 30 – 33 Мбайт/с.

Третья версия USB (3.0).

Данная версия характеризуется скоростью передачи информации – 5 Гбит/с – что считается достаточно высоким показателем.
Такая скорость соответствует

500 Мбайт/с. Это намного выше показателей скорости винчестеров последнего поколения (150 – 170 Мбайт/с).

Разъёмы USB 3.0 для их распознавания (иногда) специально маркируются синим цветом.

Типы USB
Питание USB разъёмов

Мощность, на которую рассчитаны подключаемые устройства с разъёмами USB, составляет 2,5 Вт, а также 4,5 Вт (для третьей версии). Исходя из этого, разъёмам USB всех версий необходимо напряжение 5 В. Ток до 0,5 А, а для третьей версии – 0,9 А.

Micro USB 3.0.

Современные внешние накопители, имеющие высокую скорость, а также диски типа SSD, в основном, все оснащены таким разъёмом, который характеризуется высокой скоростью обмена информацией.

Типы USB

USB 3.1 Type-C
  • Скорость передачи данных до 10 GBps
  • Возможность запитывания от порта устройств с потребляемой мощностью вплоть до 100Вт
  • Размеры коннектора сравнимые с micro-USB
  • Симметричность разъёма — у него не существует верха и низа, а значит нет ключа, который часто приводит к повреждениям как самих разъёмов, так и подключаемых через них гаджетов
  • С помощью данного интерфейса можно запитывать устройства с напряжением вплоть до 20 вольт
  • Больше не существует разных типов коннекторов — А и В. На обоих концах кабеля стоят совершенно одинаковые разъёмы. Как данные так и питающее напряжение могут передаваться через один и тот же разъём в обоих направлениях. В зависимости от ситуации каждый разъём может выступать в роли ведущего или ведомого
  • Нам обещают, что конструкция разъёма способна выдерживать до 10 000 подключений
  • Возможно использование этого интерфейса для непосредственного подключения вместо некоторых других широко распространённых интерфейсов для быстрого обмена данными.
  • Стандарт совместим сверху вниз как c обычным USB 3 интерфейсом, так и с его младшими братьями. Конечно не на прямую, но с помощью переходника через него возможно подключение скажем USB 2.0 диска

 

 USB 3.1 Type-C

Коннектор USB Type-C немного крупнее привычного USB 2.0 Micro-B, однако заметно компактнее сдвоенного USB 3.0 Micro-B, не говоря уже о классическом USB Type-A.
Габариты разъема (8,34×2,56 мм) позволяют без особых сложностей использовать его для устройств любого класса, включая смартфоны и планшеты.

В заключении матрица USB коннекторов:

матрица USB коннекторов

Автор

gomoloff

Администратор сайта. Веб-разработчик.

Интерфейс USB. Полный обзор и структура пакетов данных.

Сегодняшняя статья будет посвящена, как уже видно из названия, обсуждению основ интерфейса USB. Рассмотрим основные понятия, структуру данных, разберемся, как происходит передача данных, а в ближайшем будущем реализуем все это на практике. Приступаем!

Существует ряд различных спецификаций USB. Началось все с USB 1.0 и USB 1.1, затем интерфейс эволюционировал в USB 2.0, относительно недавно появилась окончательная спецификация USB 3.0. Но на данный момент наиболее распространенной является реализация USB 2.0.

Ну и для начала основные моменты и характеристики. Интерфейс USB 2.0 поддерживает три режима работы:

  • High Speed – до 480 Мб/с
  • Full Speed – до 12 Мб/с
  • Low Speed – до 1.5 Мб/с

Командует на шине USB хост (например, ПК), к которому можно подключить до 127 различных устройств. Если этого мало, то нужно добавить еще один хост. Причем немаловажно, что устройство не может само послать/принять данные хосту/от хоста, необходимо, чтобы хост сам обратился к устройству.

Почти во всех статьях про интерфейс USB, которые я видел используется термин “конечная точка“, но о том, что это такое обычно написано довольно туманно. Так вот, конечная точка – это часть устройства USB, имеющая свой уникальный идентификатор. Каждое устройство USB может иметь несколько конечных точек. По большому счету – конечная точка – это всего лишь область памяти USB устройства, в которой могут храниться какие-либо данные (буфер данных). И в итоге мы получаем вот что – каждое устройство имеет свой уникальный адрес на шине USB, и при этом каждая конечная точка этого устройства имеет свой номер. Вот так вот 🙂

Давайте немного отвлечемся и поговорим о “железной части” интерфейса.

Существуют два типа коннекторов – Type A и Type B.

USB разъемы.

Как уже понятно из рисунка Type A всегда обращен к хосту. Именно такие разъемы мы видим на компьютерах и ноутбуках. Коннекторы Type B всегда относятся к подключаемым USB-устройствам. Кабель USB состоит из 4 проводов разных цветов. Ну, собственно, красный – это питание (+5 В), черный – земля, белый и зеленый предназначены для передачи данных.

Помимо изображенных на рисунке, существуют также другие варианты исполнения USB-коннекторов, например, mini-USB и другие, ну это вы и так знаете 🙂

Наверно стоит немного коснуться способа передачи данных, но углубляться в это пока не будем… Итак, при передаче данных по шине USB используется принцип кодирования NRZI (без возврата к нулю с инверсией). Для передачи логической “1” необходимо повысить уровень линии D+ выше +2.8 В, а уровень линии D- надо понизить ниже +0.3 В. Для передачи нуля ситуация противоположная – (D- > 2.8 В) и (D+ < 0.3 В).

Отдельно стоит обсудить питание устройств USB. И тут также возможно несколько вариантов.

Во-первых устройства могут питаться от шины, тогда их можно разделить на два класса:

Разница тут заключается в том, что low-power устройства не могут потреблять больше, чем 100 мА. А устройства high-power должны потреблять не более 100 мА лишь на этапе конфигурации. После того, как они сконфигурированы хостом их потребление может составлять до 500 мА.

Кроме того, устройства могут иметь свой собственный источник питания. В этом случае они могут получать до 100 мА от шины, а все остальное забирать у своего источника.

С этим вроде бы все, давайте потихоньку переходить к структуре передаваемых данных. Все-таки это представляет для нас наибольший интерес!

Структура данных интерфейса USB.

Вся информация передается кадрами, которые отправляются через равные промежутки времени. В свою очередь каждый кадр состоит из транзакций. Вот, пожалуй, так будет нагляднее:

Интерфейс USB, структура данных.

Каждый кадр включает в себя пакет SOF (Start Of Frame), затем следуют транзакции для разных конечных точек, ну и завершается все это пакетом EOF (End Of Frame). Если говорить совсем точно, то EOF – это не совсем пакет в привычном понимании этого слова – это интервал времени, в течение которого обмен данными запрещен.

Каждая транзакция имеет следующий вид:

USB транзакции.

Первый пакет (его называют Token пакет) содержит в себе информацию об адресе устройства USB, а также о номере конечной точки, которой предназначена эта транзакция. Кроме того, в этом пакете хранится информация о типе транзакции (какие бывают типы мы еще обсудим, но чуть позже 🙂 ). Data пакет – с ним все понятно, это данные, которые передают хост, либо конечная точка (зависит от типа транзакции). Последний пакет – Status – предназначен для проверки успешности получения данных.

Уже очень много раз прозвучало слово “пакет” применительно к интерфейсу USB, так что пора разобраться что он из себя представляет. Начнем с пакета Token:

Структура Token пакета интерфейса USB.

Пакеты Token бывают трех типов:

Пакет In сообщает нашему USB-устройству, что хост готов принять от него информацию. Пакет Out, напротив, сигнализирует о готовности и желании хоста поделиться информацией. Пакет Setup нужен для использования управляющих передач. Ну а пакет Start Of Frame используется для того, чтобы инициировать начало кадра.

Вот к чему я это рассказал… В зависимости от типа пакета значение поля PID в Token пакете может принимать следующие значения:

  • Token пакет типа OUT – PID = 0001
  • Token пакет типа IN – PID = 1001
  • Token пакет типа SETUP – PID = 1101
  • Token пакет типа SOF – PID = 0101

Переходим к следующей составной части пакета Token – поля Address и Endpoint – в них содержатся адрес USB устройства и номер конечной точки, которой предназначена транзакция.

Ну и поле CRC – это контрольная сумма, с этим понятно.

Тут есть еще один важный момент. PID включает в себя 4 бита, но при передаче они дополняются еще 4-мя битами, которые получаются путем инвертирования первых 4-ых бит.

Итак, на очереди Data пакет – то есть пакет данных:

Структура Data пакета.

Тут все в принципе так же, как и в пакете Token, только вместо адреса устройства и номера конечной точки здесь у нас передаваемые данные.

Осталось нам рассмотреть Status пакеты и пакеты SOF:

Структура Status пакета.

Тут PID может принимать всего лишь два значения:

  • Пакет принят корректно – PID = 0010
  • Ошибка при приеме пакета – PID = 1010

И, наконец, Start Of Frame пакеты:

Структура SOF пакета.

Здесь видим новое поле Frame – оно содержит в себе номер передаваемого кадра.

Давайте в качестве примера рассмотрим процесс записи данных в USB-устройство. То есть рассмотрим пример структуры кадра записи.

Кадр, как вы помните состоит из транзакций и  имеет следующий вид:

Кадр интерфейса USB.

Что представляют из себя все эти транзакции? Сейчас разберемся! Транзакция SETUP:

Транзакция Setup.

Транзакция OUT:

Транзакция Out.

Аналогично при чтении данных из USB-устройства кадр выглядит так:

Кадр USB при чтении данных.

Транзакцию SETUP мы уже видели, посмотрим на транзакцию IN:

Транзакция In.

Как видите, все эти транзакции имеют такую структуру, как мы обсуждали выше 🙂

В общем, думаю достаточно на сегодня. Довольно-таки длинная статья получилась, в ближайшее время обязательно попробуем реализовать интерфейс USB на практике!

USB

Подробности
Родительская категория: USB
Категория: Устройства USB

Обнаружив подключение устройства (по сообщению от хаба), система USB считывает его дескрипторы, чтобы определить, какие программные компоненты необходимо загрузить и кого уведомлять о появлении нового устройства. В любом устройстве USB обязательно должны присутствовать дескрипторы устройства, конфигурации, интерфейсов и конечных точек. Подробно структура дескрипторов описана далее, здесь рассматриваются только фрагменты дескрипторов, участвующих в идентификации устройств.

В дескрипторе устройства имеются 2-байтные поля, идентифицирующие устройство в целом:

  • idVendor — идентификатор производителя (VID — Vendor Id), назначаемый USB-IF;
  • idProduct и bcdDevice — идентификатор продукта (PID — Product Id) и его версии (DID — Device Id), определяются производителем.

Кроме того, здесь могут присутствовать ссылки на строковые дескрипторы, в которых содержатся текстовые названия изготовителя и устройства, а также его серийный номер. Эти текстовые описания имеют произвольную длину и формат (но кодируются в UNICODE), на эти строковые дескрипторы указывают индексы в полях iManufacturer, iProduct и iSerialNumber.

Для определения назначения, возможностей и протоколов, поддерживаемых устройством и его отдельными интерфейсами, в его дескрипторах указываются коды класса, подкласса и протокола. Коды класса, подкласса и протокола имеют непосредственное отношение к интерфейсам — по ним могут быть подобраны (операционной системой автоматически) подходящий драйвер и клиентское приложение. Эти коды содержатся в дескрипторах интерфейсов, поддерживаемых устройством. «Штатные» коды в диапазоне 01h–FEh назначает USB-IF, но только для уже стандартизованных устройств. Значение 00h означает отсутствие определения, FFh отдано для специфического назначения разработчикам и производителям устройств. Сообщение штатного кода обязывает устройство соответствовать стандартным требованиям, предъявляемым к интерфейсам с указанным протоколом для заданного класса и подкласса, в том числе и выполнять все специфические запросы и сообщать специфические дескрипторы, если таковые имеются. При этом допускается и расширение возможностей устройства. Для связывания нестандартного устройства со своим драйвером используются идентификаторы VID и PID.

Коды класса, подкласса и протокола присутствуют не только в дескрипторах интерфейсов, но и в дескрипторе устройства. Здесь нулевой код класса означает, что устройство состоит из набора независимых интерфейсов, каждому из которых может быть назначен свой код класса, подкласса и протокола. При этом и подкласс и протокол устройства тоже нулевые (то есть устройство в целом стандартно охарактеризовать нельзя). «Штатный» код класса устройства означает, что его интерфейсы не являются независимыми (агрегированные интерфейсы). При этом код подкласса (тоже от USB-IF) является дополнительным квалификатором. «Штатный» код протокола означает, что устройство поддерживает все протоколы, требуемые для устройства данного класса и подкласса. Нулевой код протокола устройства означает, что протоколы могут быть определены только для отдельных интерфейсов.

Классификация устройств USB относится не к потребительским функциям, выполняемым устройствами, а к способам коммуникаций между хостом и устройствами. Классификация позволяет обобщать характеристики интерфейсов, при этом, как правило, код протокола задает состав, тип конечных точек и правила их использования, а подкласс определяет форматы данных, передаваемых через те или иные конечные точки. Классификация позволяет сократить многообразие (разнотипность) драйверов, требуемых для различных устройств, — драйвер может абстрагироваться от конкретного устройства-функции, которое он обслуживает. Операционная система связывает имеющиеся в ее распоряжении клиентские драйверы с конкретными интерфейсами устройств, используя коды классов/подклассов и протокола, а также идентификаторы производителя, продукта и его версии.

 

Таблица. Некоторые стандартные классы и протоколы устройств
ПодклассПротокол (точки, используемые интерфейсом)
Класс 01 — аудиоустройства
01 — AUDIOCONTROL, управляемый модуль аудиообработки (регулятор, фильтр, микшер, ревербератор…)
02 — AUDIOSTREAMING, устройство-приемник или источник аудиопотока
03 — MIDISTREAMING, устройство-приемник или источник потока MIDI-сообщений
00 — протокол не определен
Класс 03 — человеко-машинный интерфейс (HID-устройства)
01 — устройства, используемые при загрузке ОС01 — клавиатура
02 — мышь
Класс 07 — принтеры
01 — передача к принтеру данных, используя любые языки описания страниц (PCL), применяемые в принтерах с традиционными интерфейсами, и прием информации о состоянии01 — однонаправленный (EP0, Bulk-OUT)
02 — двунаправленный (EP0, Bulk-OUT, Bulk-IN)
03 — двунаправленный IEEE 1284.4 (EP0, Bulk-OUT, Bulk-IN)
Класс 08 — устройства хранения данных (mass storage)
01 — сокращенный набор команд (RBC — Reduced Block Commands), типично для устройств на флэш-памяти, но этот набор команд могут использовать любые устройства хранения
02 — SFF8020i, MMC-2 (ATAPI), типично для CD/DVD-устройств
03 — QIC-157 (ленточные устройства)
04 — UFI, типично для НГМД
05 — SFF8070i, типично для НГМД
06 — прозрачная передача команд SCSI
00 — CBI-транспорт с прерываниями (EP0, Bulk-OUT, Bulk-IN, Interrupt-IN)
01 — CBI-транспорт без прерываний (EP0, Bulk-OUT, Bulk-IN, Interrupt-IN), только для FS
50h — BO-транспорт (Bulk-OUT, Bulk-IN, EP0)
Класс 09h — хабы
00 — деления на подклассы нет00 — хаб USB 1.x;
01 — хаб USB 2.0 с одним транслятором транзакций;
02 — хаб USB 2.0 с множеством трансляторов транзакций
Класс 0Eh — видеоустройства
01 —VIDEOCONTROL, управляемое устройство видеообработки
02 — VIDEOSTREAMING, устройство-приемник или источник видеопотока
03 — VIDEO_INTERFACE_COLLECTION, набор связанных интерфейсов видеоустройств
00 — протокол не определен

USB

Подробности
Родительская категория: USB
Категория: Физический интерфейс USB

Кабель USB содержит две пары проводов: одну для сигнальных цепей (D+ и D-) и одну пару для схемной земли (GND) и подачи питания +5 В (Vbus). Допустимая длина сегмента (кабеля от устройства до хаба) — до 5 м. Ограничения на длину сегмента диктуются затуханием сигнала и вносимыми задержками. Задержка распространения сигнала по кабельному сегменту не должна превышать 26 нс, так что при большой погонной задержке допустимая длина кабеля может сократиться. Максимальное удаление устройства от хост-контроллера определяется задержкой, вносимой кабелями, промежуточными хабами и самими устройствами.

В кабеле USB 1.x для сигнальных цепей используется витая пара проводов калибра 28AWG с импедансом 90 Ом. Характеристики кабеля нормированы в частотном диапазоне до 16 МГц. Для питания используется неперевитая пара проводов калибра 20AWG–28AWG. Требований к экранированию кабелей в USB 1.x не выдвигалось. Для низкой скорости может использоваться кабель с неперевитой парой сигнальных проводов (он дешевле и тоньше), но его длина не должна превышать 3 м.

В кабелях USB 2.0 используются провода тех же калибров, но в спецификации описана конструкция кабеля, в которую входит обязательный экран и связанный с ним дополнительный проводник. Такой кабель пригоден для работы на любых скоростях, включая и HS (480 Мбит/с).

Разъемы USB сконструированы с учетом легкости подключения и отключения устройств. Для обеспечения возможности «горячего» подключения разъемы обеспечивают более раннее соединение и позднее отсоединение питающих цепей по отношению к сигнальным. В USB определено несколько типов разъемов:

  • тип «A»: гнезда (рисунок а) устанавливаются на нисходящих портах хабов, это стандартные порты подключения устройств. Вилки типа «A» устанавливаются на шнурах периферийных устройств или восходящих портов хабов;
  • тип «B»: используются для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). На устройстве устанавливается гнездо (рисунок б), на кабеле — вилка;
  • тип «Mini-B» (рисунок в): используются для отсоединяемых шнуров малогабаритных устройств;
  • тип «Mini-A»: введен в спецификации OTG, вилки используются для подключения устройств к портам малогабаритных устройств с гнездом «mini-AB».
  • тип «Mini-AB»: гнезда введены в спецификации OTG для портов двухролевых устройств, которые могут вести себя как хост (если в гнездо вставлена вилка miniA) или как периферийное устройство (если в гнездо вставлена вилка mini-B).

Назначение выводов разъемов USB приведено в таблице, нумерация контактов показана на рисунке выше. Штырьковые разъемы, устанавливаемые на системной плате (рисунок г), предназначены для кабелей-«выкидышей», которыми подключаются дополнительные разъемы USB, устанавливаемые на передней или задней стенках корпуса компьютера (иногда и на боковых). На эти разъемы порты выводятся парами, причем у разных производителей подход к универсальности и защите от ошибочных подключений различен. Подключение «выкидыша», не подходящего к разъему, приводит к неработоспособности порта (к счастью, как правило, временной). Ошибка в подключении цепей GND и +5V может приводить к нагреванию кабелей и разъемов из-за короткого замыкания питающей цепи.

Все кабели USB «прямые» — в них соединяются одноименные цепи разъемов, кроме цепи ID, используемой для идентификации роли устройства в OTG. На вилке mini-A контакт 4 (ID) соединен с контактом 5 (GND), что заставляет порт, к которому подсоединена такая вилка, взять на себя роль нисходящего порта хаба. На вилке miniB такого соединения нет.

Ошибка в полярности подводимого питания может повредить подключаемое устройство (и необратимо). По этой причине наиболее безопасными для подключаемого устройства являются внешние разъемы USB, запаянные на системной плате или карте контроллера USB.

 

Таблица. Назначение выводов разъема USB
ЦепьКонтакт стандартного разъемаКонтакт миниразъема
VBus (+5 В)11
D–22
D+33
GND45
ID4

Введение в разработку USB периферии / Хабр

Последние полгода я участвую в разработке первого в своей жизни USB-устройства и прикладного ПО к нему, и сейчас хочу поделиться своим пониманием того, как там всё работает: микроконтроллер, драйвер, прикладное ПО. Также затрону вопрос о выборе идентификаторов VID/PID. Список полезных ссылок для желающих более подробно разобраться в теме прилагается.

Контекст

Разрабатывается электронное устройство, которое будучи подключенным к датчику выполняет измерение микроперемещения и передаёт результат на ПК, где он выводится в удобной для оператора графической форме. Область применения измерительного прибора — машиностроение.
Немного о том, как всё работает

На схеме показаны основные действующие лица, участвующие в жизни разрабатываемого прибора.
Микроконтроллер — основной элемент устройства, который подаёт управляющие сигналы на датчик и принимает отклик, по которому вычисляет результат измерения. С помощью реализованного стека USB обмен данными с хостом сводится практически к работе с буферами чтения и записи. Ввиду того, что измерительный алгоритм не требует больших вычислительных мощностей и период одного измерения равен 100-150 мс выбран микроконтроллер at90usb162 (8 бит, 16 МГц, 16 кБ). В этом МК есть аппаратная поддержка USB, что значительно упрощает программную реализацию стека USB. В прочем, реализовывать стек и заниматься инициализацией МК мне не пришлось благодаря примеру USB Generic HID Implementation из сопроводительного пакета ПО. Из альтернатив фирменным примерам для AVR есть фреймворк LUFA (лицензия MIT) для AT90USBxxxx и ATMEGAxxUx и полностью программная реализация стека V-USB (GPL или коммерческая лицензия), позволяющая работать с AVR-овскими МК без аппаратной поддержки USB.

Немножко о аббревиатуре HID. Это класс USB-устройств, предназначенных для ввода данных человеком: клавиатура, мышь, игровые контроллеры. Предполагается, что у таких устройств небольшой объем передаваемой информации, как и у разрабатываемого устройства: пакеты по 8 байт с интервалом в 100-150 мс. Главное удобство работы с устройствами этого класса — наличие стандартного драйвера в ОС, что освобождает от написания своего.

Хостом (мастером, ведущим) в моём случае является ПК, а точнее встроенный в материнку контроллер USB. Согласно дескриптору (описанию) моего устройства хост опрашивает его на предмет новых посылок с периодом примерно в 20 мс. Прикладное ПО собирает принятые хостом данные, проводит небольшую обработку и рисует индикаторы, напоминающие автомобильные спидометры, на которых показываются измеряемые величины. Выводится список подключенных датчиков и их настройки, которые можно изменить: изменения будут переданы на устройство и сохранены в энергонезависимой памяти.

Одна из идей приложения — кроссплатформенность, поэтому оно разрабатывается во фреймворке Qt на С++, а обращения к ОС для считывания и передачи данных выполняются через библиотеку libusb. Последние несколько месяцев идёт активная разработка бэкенда libusb v1.0 для виновс, уже пишут о предрелизном статусе и, что более важно, у меня с ней вроде всё работает. Также есть порт libusb v0.1 для винды — LibUsb-Win32. Тема работы через WinAPI подробно и с примерами на Visual Basic и Visual C# раскрыта в книге USB Complete (о книге). Я WinAPI попробовал и мне не понравилось.

VID и PID

Выпуская своё USB устройство в свет компания должна назначить ему идентификатор производителя (vid – vendor id) и продукта (pid – product id, не путать с серийным номером). Формально, уникальность необходима для предотвращения конфликтов между драйверами устройств в ОС. Хотя у меня есть подозрение, что это скорее один из способов заработать для создателей стандарта, чем единственное возможное техническое решение. Впрочем, осуждать их за стремление заработать на созданном ими же стандарте я, конечно, не буду.
Итак, для производителя периферии есть два пути для получения собственного vid:
  • единовременно заплатить $2000 за vid
  • или стать членом USB-IF за $4000 в год.
Для тех, кто не в состоянии заплатить такие деньги, производители чипов предоставляют различные варианты использования их vid и pid:
  • Atmel. В faq перечислены правила, следуя которым можно использовать vid/pid чипа для своего устройства.
  • FTDI. Кроме использования встроенных vid/pid, компания предлагает отправить запрос на бесплатное выделение pid.
  • Microcip также предлагает отправить заявку на выделение pid.
  • Silicon Labs. Вот что пишут на форумах:
    • «SiLabs дает готовый пакет для генерации драйвера с вашим собственным описанием устройства, но vid/pid там будет от SiLabs (vid 10C4, pid EA60).»
    • «Если адаптер usb-com — от Силабса, то у них же можно бесплатно получить vid/pid. Мы уже два получили. Надо написать письмо на английском, в ответ они вышлют анкету. Ответы на анкету — письмом опять в Силабс, и через два дня присылают vid/pid. Но надо, конечно, подробно расписать проект (дата старта, объемы) и сайт свой указать (на *.com желательно).»
    • Чипы, которые реализуют usb-протокол исключительно аппаратно могут использовать встроенные в аппаратную часть vid и pid. Например, это касается чипов FTDI.

Основные источники информации

Отличное введение в USB (англ., р у с.) для разработчиков периферии – 30 страниц вместо многих сотен в стандарте. Более подробную информацию о разработке USB-периферии и драйверов к ней можно найти на сайте Lakeview Research, особенно хочу отметить книгу «USB Complete: The Developer’s Guide», Jan Axelson.

Windows Не Опознает USB-устройства: 6 Способов Решения

Windows не распознает USB-устройства

Windows не распознает USB-устройства

Иногда можно наблюдать вариант, когда Windows не распознает накопитель.

Существует довольно много причин, которые способствуют появлению такой неполадки.

Содержание:

Проблема с портом

Если вы подключили к компьютеру какое-то внешнее оборудование — мышь, клавиатуру, принтер или просто флешку, а Windows не удается опознать что это за девайс — выполните приведенные ниже действия.

Вначале проверяем разъем компьютера и подключаемый штекер на предмет неисправности.

Проведите их внешний осмотр, а по возможности перепроверьте путем подключения к другому ПК, чтобы убедиться в его исправности.

USB-разъем

USB-разъем

Кроме этого проверьте целостность подключаемого кабеля, если он имеет внешние повреждения — замените его.

В случае, если устройство полностью исправно, а операционка все равно не распознает usb — переподключите его к одному из задних разъемов.

Зачастую бывает, что передний порт попросту не подключен к материнской плате.

Для устранения данной неисправности понадобится снять боковую крышку с системного блока и подключить шлейф к соответствующему разъему на плате.

Возможно и такое, что не опознается системой в связи с подключением в порт USB 3.0.

Они наиболее скоростные, чем серии 2.0.

Отличить их достаточно просто, так как контактная пластина порта имеет синий цвет.

Порт USB 3.0

Порт USB 3.0

Переподключите устройство в другой разъем и возможно проблема исчезнет сама собой.

к оглавлению ↑

Снятие статического электричества

Можно решить этот вопрос путем полного обесточивания персонального лаптопа.

Завершите его работу и отключите от USB-выхода не распознаваемое устройство.

Выньте из электрической розетки вилку компа и удерживайте некоторое время в нажатом состоянии клавишу его включения.

Это необходимо для того, чтобы полностью избавиться от электрических разрядов, оставшихся в конденсаторах материнской платы.

Кнопка запуска ПК

Кнопка запуска ПК

После этого осуществите запуск «компа» и подключите любое внешнее запоминающее устройство в usb-выход.

Вполне вероятно, что Windows избавится от имевшейся ошибки и сможет его распознать.

Если же этого не произошло — возможно проблема заключается в некорректной работе драйверов.

к оглавлению ↑

Обновление драйверов

Постарайтесь найти и установить максимально свежие и рабочие драйвера к накопителю USB.

Для этого необходимо запустить компьютер и войти в «Диспетчер устройств». найдите в имеющемся списке оборудование , которое является неопознанным.

Строка с ним имеет иконку с вопросительным знаком и надписью: «Неизвестное устройство».

Обновление драйверов

Обновление драйверов

Для этого необходимо запустить компьютер и войти в «Диспетчер устройств». найдите в имеющемся списке оборудование , которое является неопознанным.

Строка с ним имеет иконку с вопросительным знаком и надписью: «Неизвестное устройство».

Попробуйте обновить его.

Для этого кликните по нему правой кнопкой мышки и в выпадающем списке выберите пункт «Обновить драйверы…».

Тогда, когда неопознанный накопитель находится в разделе «Контроллеры USB» — кликните по нему мышью.

В раскрывшейся вкладке выбираем проблемное устройство и с помощью правой клавиши мышки зайдите в его свойства.

В открывшемся окне перейдите на вкладку «Драйвер» и попробуйте вернуть ОС до того момента, когда драйвера работали корректно. Для этого необходимо нажать на кнопку Откатить.

Однако такая процедура действенна при наличии предыдущей версии, в противном случае придется их полностью удалить.

После удаления кликните по кнопке Действие и активируйте пункт «Обновить конфигурацию оборудования».

После этого операционная система протестирует имеющееся оборудование и обнаружив подключенный к USB-порту девайс произведет для него установку необходимого драйвера.

Обязательно проверить — не отключено ли устройство системой в целях экономии электропитания.

Чтобы убедиться в этом необходимо открыть окно свойств корневого usb-концентратора и на вкладке управления электропитанием снять галочку с пункта «Разрешить отключение этого устройства для экономии энергии».

к оглавлению ↑

Запрет на отключение порта usb

Еще одним вариантом, когда флешка не опознается, может быть временное отключение операционкой юсб-порта.

Чтобы это устранить, понадобится открыть «Панель управления» и перейти на вкладку «Электропитание».

В настройках схемы электропитания выбрать пункт изменения его дополнительных параметров.

В появившемся окне раскройте список пункта «Параметры usb» и выберите «Параметр временного отключения usb-порта».

Установите в нем значение «Запрещено» и нажмите «Ок» для подтверждения изменения.

Кроме этого установите на операционку новые обновления, а при необходимости — последние программы для материнской платы.

Их вы сможете скачать с официального сайта разработчиков либо воспользоваться сторонней программой для поиска и автоматической установки последних версий драйверов.

Это можно выполнить при помощи программы Driver Easy, которая устанавливает драйвера для любого имеющегося оборудования, в том числе и usb.

Внешний вид программы

Внешний вид программы

Что делать, если usb устройство не опознает Windows 10?

Во — первых следует убедиться в том, что само устройство полностью исправно.

Проверить его можно только путем подключения к другому ПК или ноутбуку.

Если же и в этом случае устройство не опознается — вполне вероятно, что оно неисправно.

В противном случае причину следует искать в самом компьютере. Для начала проверьте аппаратную часть.

к оглавлению ↑

Проверка аппаратной части

При подключении винчестера или флеш-накопителя с помощью usb-разветвителя (usb-hub) появление подобной ошибки связано с недостаточным питанием.

Подключите разветвитель к сети (если он имеет собственное питание) либо удалите его и вставьте устройство напрямую в порт компьютера.

Если устройство подключено на передней панели компьютера — попробуйте вставить его в порт материнской карты, расположенный на задней стороне.

Возникновение подобной ошибки возможно и из-за наличия статического напряжения.

Чтобы это исправить — выключите и отсоедините от сети стационарный ПК, а у ноутбука извлеките после выключения аккумуляторную батарею.

После этого следует 10-15 секунд удерживать в нажатом состоянии кнопку запуска, чтобы избавиться от остаточного электричества.

Обесточивание ноутбука

Обесточивание ноутбука

После этого снова включаем комп в сеть и производим запуск системы.

В случае с ноутбуком — присоединяем батарею и запускаете его.

Ошибка должна исчезнуть, а если нет — ищите причину в программном обеспечении.

к оглавлению ↑

Проверка программного обеспечения

Проверка программного обеспечения

Проверка программного обеспечения

Вначале проверяем режим энергосбережения, так как в целях экономии электроэнергии система может сама отключать usb-порт.

Необходимо запретить ей это делать.

Откройте «Диспетчер устройств». кликнув правой кнопкой мыши по меню «Пуск».

Можно также нажать на клавиатуре сочетание клавиш Win+X и в открывшемся окне выбрать необходимый пункт.

Из списка всех имеющихся устройств, отображаемых на вкладке «Диспетчера», разверните список «Контроллеры USB».

Переходите поочередно на следующие вкладки — «USN Generic Hub», «Корневой USB-концентратор» и «Составное USB-устройство».

По каждой из них кликаете правой кнопкой мыши и выбираете пункт меню «Свойства».

В каждом окне свойств необходимо открыть вкладку «Управление электропитанием» и с пункта «Разрешить отключение этого устройства для экономии энергии» снять галочку выделения.

Для подтверждения кликните по кнопке «Ок».

После этого вновь подключите юсб-девайс в USB-порт и убедитесь в том, что его стало видно.

Если ошибка все равно есть— займитесь обновлением всех необходимых драйверов.

Снова откройте «Диспетчер устройств» и кликните правой кнопкой мыши по пункту «Корневой USB-концентратор».

Из выпавшего списка выберите «Обновить драйверы…».

В появившемся окне жмете на «Поиск и установка драйверов вручную».

В следующем — «Выбрать драйвер из списка уже установленных драйверов».

Далее смотрите, чтобы в появившемся списке было наличие драйвера для корневого usb-концентратора. Выбираете его и жмете на кнопку Далее.

Когда установка драйвера завершится — перезагрузите компьютер.

Компоновка устройства USB – драйверы для Windows

  • 3 минуты, чтобы прочитать

В этой статье

Устройство универсальной последовательной шины (USB) определяет свои возможности и функции с помощью конфигураций, интерфейсов, альтернативных настроек и конечных точек.В этом разделе представлен общий обзор этих концепций.

USB-конфигурация определяет возможности и особенности устройства, в основном его возможности питания и интерфейсы. Устройство может иметь несколько конфигураций, но одновременно активна только одна. Активная конфигурация не выбирается стеком драйверов USB, но может инициироваться приложением, драйвером, драйвером устройства. Драйвер устройства выбирает активную конфигурацию.

Конфигурация может иметь один или несколько USB-интерфейсов , которые определяют функциональные возможности устройства.Как правило, между функцией и интерфейсом существует взаимно-однозначное соотношение. Однако некоторые устройства предоставляют несколько интерфейсов, связанных с одной функцией. В этом случае устройство может иметь дескриптор ассоциации интерфейсов (IAD). IAD группирует интерфейсы, которые принадлежат определенной функции.

Каждый интерфейс содержит одну или несколько конечных точек , которые используются для передачи данных на устройство и с него. Кроме того, интерфейс содержит альтернативных параметра , которые определяют требования к пропускной способности функции, связанной с интерфейсом.Подводя итог, группа конечных точек формирует интерфейс, а набор интерфейсов составляет конфигурацию в устройстве.

Итак, что значит выбрать активную конфигурацию? Во время инициализации устройства драйвер устройства USB должен выбрать конфигурацию, один или несколько интерфейсов в этой конфигурации и альтернативную настройку для каждого интерфейса. Большинство USB-устройств не предоставляют несколько интерфейсов или несколько альтернативных настроек. Например, устройство OSR USB FX2 Learning Kit имеет один интерфейс с одной альтернативной настройкой и тремя конечными точками.Для получения дополнительной информации об обучающем комплекте см. OSR Online.

Одноинтерфейсное устройство

На этой схеме показана конфигурация устройства с одним интерфейсом:

В этом примере на диаграмме показана конечная точка 0, называемая конечной точкой по умолчанию . Все устройства USB должны иметь конечную точку по умолчанию, которая используется для передачи управления (см. Передача управления USB). Конфигурация 0 имеет один интерфейс: интерфейс 0 с одной альтернативной настройкой.Альтернативная настройка 0 использует все три конечные точки в интерфейсе.

Устройство с несколькими интерфейсами

Для многофункциональных устройств устройство имеет несколько интерфейсов. Чтобы использовать определенную функцию или интерфейс, клиентский драйвер выбирает интерфейс и связанные альтернативные настройки. Рассмотрим многофункциональное USB-устройство, например веб-камеру. Устройство имеет две функции: видео-захват (камера) и аудиовход (микрофон). Устройство определяет конечную точку в видеоинтерфейсе, который передает видео.Устройство имеет другую конечную точку в отдельном интерфейсе, который принимает аудиовход через микрофон. Конфигурация устройства включает в себя оба этих интерфейса.

Эта схема показывает конфигурацию устройства веб-камеры:

В этом примере диаграмма показывает конечную точку по умолчанию. Конфигурация 0 имеет два интерфейса: интерфейс 0 и интерфейс 1. Интерфейс 0 имеет три альтернативные настройки. Только одна из альтернативных настроек активна в любой момент времени. Обратите внимание, что альтернативная настройка 0 не использует конечную точку, тогда как альтернативные настройки 1 и 2 используют конечную точку 1.Как правило, видеокамера использует изохронную конечную точку для потоковой передачи. Для этого типа конечной точки, когда конечная точка используется, пропускная способность резервируется на шине. Когда камера не передает потоковое видео, драйвер клиента может выбрать альтернативную настройку 0, чтобы сохранить пропускную способность. Когда веб-камера передает потоковое видео, драйвер клиента может переключиться либо на альтернативную настройку 1, либо на альтернативную настройку 2, что обеспечивает повышение уровня качества и потребляет увеличение пропускной способности шины. Интерфейс 1 имеет две альтернативные настройки.Аналогично интерфейсу 0, альтернативная настройка 0 не использует конечную точку. Альтернативная настройка 1 определена для использования конечной точки 1.

Конечные точки не могут быть разделены между двумя интерфейсами в конфигурации. Устройство использует адрес конечной точки для определения целевой конечной точки для передачи данных или операции конечной точки, такой как сброс канала. Все эти операции инициируются хостом.

Перед тем, как начать использовать устройство, получите информацию о макете устройства. USBView – это приложение, которое позволяет просматривать все контроллеры USB и подключенные к ним устройства USB.Для каждого подключенного устройства вы можете просмотреть дескрипторы устройства, конфигурации, интерфейса и конечной точки, чтобы получить представление о возможностях устройства.

Далее см. Стандартные дескрипторы USB.

Концепции для всех разработчиков USB

,
USB-устройств класса драйверов, включенных в Windows – Windows драйверы
  • 8 минут, чтобы прочитать

В этой статье

В этом разделе перечислены предоставленные Microsoft драйверы для поддерживаемых классов устройств USB.

Если вы устанавливаете драйверы USB: Вам не нужно загружать драйверы класса USB-устройства. Они устанавливаются автоматически. Эти драйверы и их установочные файлы включены в Windows. Они доступны в папке \ Windows \ System32 \ DriverStore \ FileRepository. Драйверы обновляются через Центр обновления Windows.

Если вы пишете пользовательский драйвер: Прежде чем писать драйвер для вашего USB-устройства, определите, соответствует ли предоставленный Microsoft драйвер требованиям устройства.Если предоставленный Microsoft драйвер недоступен для класса USB-устройств, к которому принадлежит ваше устройство, рассмотрите возможность использования общих драйверов Winusb.sys или Usbccgp.sys. Пишите драйвер только при необходимости. Дополнительные рекомендации включены в раздел Выбор модели драйвера для разработки драйвера USB-клиента.

USB-устройства классов

USB-устройства Классы – это категории устройств со схожими характеристиками, которые выполняют общие функции. Эти классы и их спецификации определяются USB-IF.Каждый класс устройств идентифицируется с помощью одобренных USB-IF классов, подклассов и кодов протоколов, которые все предоставлены IHV в дескрипторах устройств во встроенном программном обеспечении. Microsoft предоставляет встроенные драйверы для некоторых из этих классов устройств, которые называются драйверами класса USB-устройств . Если устройство, которое принадлежит поддерживаемому классу устройств, подключено к системе, Windows автоматически загружает драйвер класса, и устройство работает без дополнительного драйвера.

Поставщики оборудования не должны писать драйверы для поддерживаемых классов устройств.Драйверы класса Windows могут не поддерживать все функции, описанные в спецификации класса. Если некоторые из возможностей устройства не реализованы драйвером класса, поставщики должны предоставить дополнительные драйверы, которые работают вместе с драйвером класса, чтобы поддерживать весь спектр функциональных возможностей, предоставляемых устройством.

Для получения общей информации о классах устройств, одобренных USB-IF, см. Веб-сайт USB Technology.

Для получения текущего списка спецификаций класса USB и кодов классов, посетите веб-сайт USB DWG.

Классы настройки устройства

Windows классифицирует устройства по классам настройки устройства , которые указывают на функциональность устройства.

Microsoft определяет классы настройки для большинства устройств. IHV и OEM-производители могут определять новые классы настройки устройства, но только если ни один из существующих классов не применяется. Для получения дополнительной информации см. Системные классы настройки устройства.

Два важных класса настройки устройств для USB-устройств:

  • USBDevice {88BAE032-5A81-49f0-BC3D-A4FF138216D6}: IHV должны использовать этот класс для пользовательских устройств, которые не принадлежат к другому классу.Этот класс не используется для хост-контроллеров и концентраторов USB.

  • USB {36fc9e60-c465-11cf-8056-444553540000}: IHV не должны использовать этот класс для своих пользовательских устройств. Это зарезервировано для хост-контроллеров USB и концентраторов USB.

Классы настройки устройства отличаются от классов USB-устройств, которые обсуждались ранее. Например, аудиоустройство имеет код класса USB-устройства 01h в своем дескрипторе. При подключении к системе Windows загружает драйвер класса, предоставленный Microsoft, Usbaudio.SYS. В диспетчере устройств, устройство показано под Звуковые, видео и игровые контроллеры , который указывает, что класс установки устройства является Media.

предоставленных Microsoft драйверов USB-устройств класса

. Принтер Беспроводной контроллер
USB-IF код класса Класс настройки устройства предоставленный Microsoft драйвер и INF Поддержка Windows Описание
Аудио (01ч) СМИ {4d36e96c-e325-11ce-bfc1-08002be10318} Usbaudio.sys

Wdma \ _usb.inf

Windows 10 для настольных изданий (Home, Pro, Enterprise и Education) Windows 10 MobileWindows 8.1Windows 8Windows 7Windows Server 2008Windows Vista Microsoft обеспечивает поддержку класса аудиоустройств USB с помощью драйвера Usbaudio.sys. Для получения дополнительной информации см. «Системный драйвер класса USBAudio» в аудиокомпонентах WDM в режиме ядра. Для получения дополнительной информации о поддержке аудио в Windows см. Веб-сайт Audio Device Technologies for Windows.
Коммуникация и управление CDC (02h)
портов {4D36E978-E325-11CE-BFC1-08002BE10318} Usbser.sysUsbser.inf Windows 10 для настольных изданий Windows 10 Mobile В Windows 10 был добавлен новый INF, Usbser.inf, который автоматически загружает Usbser.sys в качестве функционального драйвера.

Дополнительные сведения см. В разделе Драйвер последовательного порта USB (Usbser.sys)

Модем {4D36E96D-E325-11CE-BFC1-08002BE10318}

Примечание Поддерживает подкласс 02h (ACM)

Usbser.INF sysCustom, который ссылается на mdmcpq.inf Windows 10 для настольных изданий Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista В Windows 8.1 и более ранних версиях Usbser.sys не загружается автоматически. Чтобы загрузить драйвер, вам нужно написать INF, который ссылается на модем INF (mdmcpq.inf) и содержит разделы \ [Install \] и \ [Needs \].

Начиная с Windows Vista, вы можете включить поддержку CDC и Wireless Mobile CDC (WMCDC), установив значение реестра, как описано в разделе Поддержка для класса устройства беспроводной мобильной связи.

Когда включена поддержка CDC, универсальный родительский драйвер USB Common Class перечисляет наборы интерфейсов, соответствующие моделям управления CDC и WMCDC, и назначает объекты физических устройств (PDO) этим коллекциям.

Нетто {4d36e972-e325-11ce-bfc1-08002be10318} Примечание поддерживает подкласс 0Eh (MBIM) wmbclass.sysNetwmbclass.inf Windows 10 для настольных изданий Windows 8.1Windows 8 Начиная с Windows 8, Microsoft предоставляет драйвер wmbclass.sys для мобильных широкополосных устройств. См. Модель интерфейса MB.
HID (устройство интерфейса пользователя) (03 ч) HIDClass {745a17a0-74d3-11d0-b6fe-00a0c90f57da} Hidclass.sysHidusb.sysInput.inf Windows 10 для настольных изданийWindows 10 MobileWindows 8.1Windows 8Windows 7Windows Server 2008Windows Vista Microsoft предоставляет драйвер класса HID (Hidclass.sys) и драйвер мини-класса (Hidusb.sys) для управления устройствами, которые соответствуют стандарту USB HID. Для получения дополнительной информации см. Архитектура HID и Мини-драйверы и драйвер класса HID. Для получения дополнительной информации о поддержке Windows для оборудования ввода см. Веб-сайт Input and HID – Architecture and Driver Support.
Физический (05ч) Рекомендуемый драйвер: WinUSB (Winusb.SYS)
Изображение (06h) Изображение {6bdd1fc6-810f-11d0-bec7-08002be2092f} Usbscan.sysSti.inf Windows 10 для настольных изданий Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Microsoft предоставляет драйвер Usbscan.sys, который управляет цифровыми USB-камерами и сканерами для Windows XP и более поздних операционных систем. Этот драйвер реализует USB-компонент Windows Imaging Architecture (WIA).Для получения дополнительной информации о WIA см. Веб-сайт Windows Image Acquisition Drivers и Windows Imaging Component. Описание роли, которую Usbscan.sys играет в WIA, см. В разделе Основные компоненты WIA.
(07ч) USB

Примечание Usbprint.sys перечисляет принтерные устройства в соответствии с классом настройки устройства: Принтер

{4d36e979-e325-11ce-bfc1-08002be10318}.

Usbprint.sysUsbprint.inf Windows 10 для настольных изданий Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Microsoft предоставляет драйвер класса Usbprint.sys, который управляет USB-принтерами. Для получения информации о реализации класса принтера в Windows см. Веб-сайт «Печать – Архитектура и поддержка драйверов».
Mass Storage (08h)
USB Усбстор.sys Windows 10 для настольных изданийWindows 10 MobileWindows 8.1Windows 8Windows 7Windows Server 2008Windows Vista Microsoft предоставляет драйвер порта Usbstor.sys для управления запоминающими устройствами USB с собственными драйверами класса хранения Microsoft. Пример стека устройств, управляемого этим драйвером, см. В разделе «Пример объекта устройства для запоминающего устройства USB». Информацию о поддержке хранилищ Windows см. На веб-сайте Storage Technologies.
SCSIAdapter

{4d36e97b-e325-11ce-bfc1-08002be10318}

Подкласс (06) и Протокол (62) Уаспстор.sysUaspstor.inf Windows 10 для настольных изданийWindows 10 MobileWindows 8.1Windows 8 Uaspstor.sys – это драйвер класса для устройств USB SuperSpeed, которые поддерживают конечные точки массового потока. Для получения дополнительной информации см .:
Hub (09h) USB

{36fc9e60-c465-11cf-8056-444553540000}

Usbhub.sysUsb.inf Windows 10 для настольных изданий Windows 10 MobileWindows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Microsoft предоставляет драйвер Usbhub.sys для управления концентраторами USB. Дополнительные сведения об отношениях между драйвером класса-концентратора и стеком USB см. В разделе Драйверы USB на стороне хоста в Windows.
Usbhub3.sysUsbhub3.inf Windows 10 для настольных изданий Windows 8.1 Windows 8 Microsoft предоставляет драйвер Usbhub3.sys для управления SuperSpeed ​​(USB 3.0) USB-концентраторы.

Драйвер загружается, когда концентратор SuperSpeed ​​подключен к контроллеру xHCI. Смотрите драйверы USB на стороне хоста в Windows.

CDC-Data (0Ah) Рекомендуемый драйвер: WinUSB (Winusb.sys)
Смарт-карта (0Bh) SmartCardReader

{50dd5230-ba8a-11d1-bf5d-0000f805f530}

Usbccid.sys (устарел) Windows 10 для настольных изданийWindows 7Windows Server 2008Windows Vista Microsoft предоставляет драйвер мини-класса Usbccid.sys для управления устройствами чтения смарт-карт USB. Для получения дополнительной информации о драйверах смарт-карт в Windows см. Руководство по проектированию смарт-карт.

Обратите внимание, что для Windows Server 2003, Windows XP и Windows 2000 требуются специальные инструкции для загрузки этого драйвера, поскольку он мог быть выпущен позже, чем операционная система.

Примечание Драйвер Usbccid.sys был заменен драйвером UMDF, WUDFUsbccidDriver.dll.

WUDFUsbccidDriver.dllWUDFUsbccidDriver.inf Windows 8.1Windows 8 WUDFUsbccidDriver.dll – драйвер пользовательского режима для устройств чтения смарт-карт USB CCID.
Безопасность контента (0Dh) Рекомендуемый драйвер: Родительский драйвер USB (Usbccgp.SYS). Некоторые функции безопасности контента реализованы в Usbccgp.sys. См. Функции безопасности контента в Usbccgp.sys.
Видео (0Eh) Изображение {6bdd1fc6-810f-11d0-bec7-08002be2092f} Usbvideo.sys

Usbvideo.inf

Windows 10 для настольных изданий

Windows Vista

Microsoft обеспечивает поддержку класса USB-видео с помощью драйвера Usbvideo.sys.Для получения дополнительной информации см. «Драйвер USB Video Class» в разделе «Мини-драйверы AVStream».

Обратите внимание, что для Windows XP требуются специальные инструкции для загрузки этого драйвера, поскольку он мог быть выпущен позже, чем операционная система.

Личная гигиена (0Fh) Рекомендуемый драйвер: WinUSB (Winusb.sys)
Аудио / Видео устройства (10 ч)
Прибор диагностический (ДЧ) Рекомендуемый драйвер: WinUSB (Winusb.sys)
(E0h)

Примечание Поддерживает подкласс 01h и протокол 01h

Bluetooth

{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}

Bthusb.sys

Bth.inf

Windows 10 для настольных изданийWindows 10 MobileWindows 8.1Windows 8Windows 7Windows Vista Microsoft предоставляет драйвер мини-порта Bthusb.sys для управления USB-радио Bluetooth.Для получения дополнительной информации см. Руководство по дизайну Bluetooth.
Разное (EFh) Чистая

{4d36e972-e325-11ce-bfc1-08002be10318}

Примечание Поддерживает подкласс 04h и протокол 01h

Rndismp.sysRndismp.inf Windows 10 для настольных изданий Windows 8.1 Windows 8 Windows 7 Windows Vista До Windows Vista поддержка CDC ограничивалась реализацией абстрактной модели управления (ACM) для RNDIS со значением уникального вендора протокола ( bInterfaceProtocol ), равным 0xFF.Средство RNDIS объединяет управление всеми сетевыми картами в стиле 802 в одном драйвере класса Rndismp.sys. Для подробного обсуждения удаленного NDIS, см. Обзор Удаленного NDIS. Отображение удаленного NDIS на USB реализовано в драйвере Usb8023.sys. Для получения дополнительной информации о поддержке сети в Windows см. Веб-сайт Networking and Wireless Technologies.
В зависимости от применения (FEh) Рекомендуемый драйвер: WinUSB (Winusb.sys)
Специфичный для поставщика (FFh) Windows 10 для настольных изданий Windows 10 Mobile Рекомендуемый драйвер: WinUSB (Winusb.sys)

USB-драйверы от Microsoft

,

USB-устройство

Драйвер универсальной последовательной шины (USB) реализует стандартный интерфейс драйвера Linux для контроллера CHIPIDEA USB-HS On-The-Go (OTG). USB обеспечивает универсальную связь, которая может использоваться в широком диапазоне межсоединений ПК-периферия. Он поддерживает функцию «подключи и работай», расширение портов и любые новые периферийные устройства USB, использующие порт того же типа. USB-контроллер CHIPIDEA совместим с расширенным интерфейсом хост-контроллера (EHCI).

Конфигурация ядра

Вы можете управлять поддержкой USB OTG и гаджетов с помощью параметров конфигурации ядра:

  • OTG поддержка (CONFIG_USB_OTG)
  • Двухскоростной высокоскоростной контроллер ChipIdea (CONFIG_USB_CHIPIDEA)
  • Контроллер устройства ChipIdea (CONFIG_USB_CHIPIDEA_UDC)
  • Поддержка USB PHY Freescale MXS (CONFIG_USB_MXS_PHY)
  • Поддержка USB-гаджетов (CONFIG_USB_GADGET)

Все эти параметры включены как встроенные в файл конфигурации ядра ConnectCore 6 SBC по умолчанию.

Драйвер USB-устройства обеспечивает функциональность, с которой работают драйверы USB-гаджетов. Драйверы USB-гаджетов реализуют одну или несколько «функций», каждая из которых предоставляет различные возможности.

Следующие драйверы гаджетов поддерживаются и включаются в качестве загружаемых модулей в файле конфигурации ядра ConnectCore 6 SBC по умолчанию:

  • Гаджет Mass Storage (CONFIG_USB_MASS_STORAGE)
  • Ethernet-гаджет с поддержкой CDC Ethernet (CONFIG_USB_ETH)
  • Последовательный гаджет с поддержкой ACEX и CDC OBEX (CONFIG_USB_G_SERIAL)

Примечание. Драйверы гаджетов включены в качестве загружаемых модулей, поскольку одновременно можно использовать только одну функцию гаджета.Перед использованием драйвера гаджета необходимо убедиться, что другой драйвер гаджета не загружен.

Отображение драйвера платформы

Драйвер USB-устройства i.MX6 находится по адресу drivers / usb /.

Связывание и настройка дерева устройств

Связывание дерева интерфейсного устройства i.MX6 USB OTG описано в Documentation / devicetree / bindings / usb / usbmisc-imx.txt.

Интерфейс USB OTG определен в i.Файлы дерева процессора MX6, система ConnectCore 6 и модуль дерева устройств ConnectCore 6 SBC.

USB-устройство

Определение устройства USB
 Общее дерево устройств i.MX6 
 usbotg: usb @ 02184000 {
        compatibility = "fsl, imx6q-usb", "fsl, imx27-usb";
        reg = <0x02184000 0x200>;
        прерывания = <0 43 IRQ_TYPE_LEVEL_HIGH>;
        часы = <& clks IMX6QDL_CLK_USBOh4>;
        fsl, usbphy = <& usbphy1>;
        fsl, usbmisc = <& usbmisc 0>;
        fsl, anatop = <& anatop>;
        статус = "отключен";
}; 
Конфигурация IOMUX
 Дерево устройств системы на модуле ConnectCore 6 
usbotg {
        pinctrl_usbotg: usbotg {
            fsl, pins = <
                MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
                MX6QDL_PAD_EIM_D22__USB_OTG_PWR 0x17059
                MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x17059
            >;
        };
}; 
Включение и определение USB-устройства
 Дерево устройств ConnectCore 6 SBC 
 & usbotg {
        pinctrl-names = "default";
        pinctrl-0 = <& pinctrl_usbotg>;
        FSL, мощность линия полярность активная высокая;
        FSL, перегрузки по току полярности с активным низким уровнем;
        статус = "хорошо";
}; 

Драйвер USB-устройства предоставляет доступ к подключенным устройствам через файловую систему / dev / bus / usb / .Интерфейс может отображать различные устройства USB-устройства.

Серийный гаджет

Серийный гаджет предоставляет интерфейс последовательной линии в стиле TTY, который можно использовать с minicom и аналогичными инструментами. Большинство хостов Linux могут общаться с этим интерфейсом, используя общий драйвер usb-serial . Последние версии этого драйвера реализуют класс CDC ACM. Этот драйвер работает с драйвером MS-Windows usbser.sys, драйвером Linux cdc-acm и многими другими хост-системами USB.

Для получения подробной информации о том, как настроить драйвер в системах Windows и Linux, см. Documentation / usb / gadget_serial.txt. Следуйте инструкциям в этом файле, чтобы выставить вашу цель как последовательный порт в глаза хосту USB.

Загрузка серийного гаджета

Загрузите модуль драйвера последовательного гаджета (подробности см. В документации / usb / gadget_serial.txt):

 Целевое устройство 
# modprobe g_serial 

Подключите целевую платформу к хост-компьютеру Linux через USB-кабель.Linux создаст узел устройства с именем / dev / ttyGS0 на целевой стороне и узел устройства с именем / dev / ttyACM0 на стороне хоста. (Имена узлов могут отличаться в разных дистрибутивах.)

USB-соединение между целью и хостом теперь работает как последовательная линия.

Тестирование серийного гаджета

Вы можете проверить последовательное соединение двух портов:

  • Настройте последовательный порт хост-компьютера:
 Host PC 
 $ stty -F / dev / ttyACM0 raw -echo -echoe -echok -echoctl -echoke 
  • Настройте последовательный порт целевой платформы:
 Целевое устройство 
# stty -F / dev / ttyGS0 raw -echo -echoe -echok -echoctl -echoke 
  • На хосте прочитайте содержимое, поступающее на новый последовательный порт:
 Host PC 
 $ cat / dev / ttyACM0 
  • На цели, напишите текстовую строку в последовательный порт:
 Целевое устройство 
 # echo «Привет со стороны цели»> / dev / ttyGS0 

Вы увидите, как текстовая строка прибывает на хост-компьютер.

Открытие оболочки консоли через USB-порт

В следующих инструкциях описывается, как открыть консольную оболочку через последовательный порт USB.

  • На целевой стороне выполните консоль на последовательном гаджете с помощью команды getty (скорость передачи данных является обязательной, но не имеет значения):
 Целевое устройство 
 # setsid getty -L -l / bin / sh -n 115200 / dev / ttyGS0 

Команда setsid позволяет избежать проблем с разрешениями при запуске getty из интерактивной оболочки.

  • На стороне хоста откройте сеанс замазки minicom или замазки через USB-порт / dev / ttyACM0 для доступа к оболочке.

Примечание Такие параметры, как скорость или четность для сеанса последовательного терминала (и для команды getty ) не имеют значения, поскольку обмен данными осуществляется на скорости USB. Настройки последовательной связи эмулируются.

Разгрузка серийного гаджета

Чтобы выгрузить последовательный гаджет USB из системы:

 Целевое устройство 
# rmmod g_serial
# rmmod usb_f_acm
# rmmod libcomposite 

Ethernet-гаджет

С помощью гаджета Ethernet целевая платформа перечисляет хост-компьютер как устройство Ethernet. Он использует драйвер usbnet на хостах Linux или драйвер RNDIS от Microsoft на хостах Windows.

Загрузка гаджета Ethernet

Чтобы загрузить гаджет Ethernet:

 Целевое устройство 
 # modprobe g_ether
используя случайный собственный адрес Ethernet
используя случайный адрес хоста Ethernet
usb0: HOST MAC 4a: 94: 3b: db: 4a: 1b
usb0: MAC 7a: 2d: fe: 26: 3f: a1
используя случайный собственный адрес Ethernet
используя случайный адрес хоста Ethernet
гаджет g_ether: гаджет Ethernet, версия: День памяти 2008
гаджет g_ether: g_ether готов
гаджет g_ether: высокоскоростная конфигурация № 1: CDC Ethernet (ECM) 

Linux создает интерфейс Ethernet в целевом устройстве под названием usb0 и назначает случайные MAC-адреса для цели и хоста.

Последняя строка появляется при подключении USB-кабеля между целью и хостом. Подключите его сейчас, если вы еще этого не сделали.

Настройка интерфейса Ethernet на цели

Предоставьте сетевому интерфейсу usb0 IP-адрес, например:

 Целевое устройство 
 # ifconfig usb0 192.168.44.30 Маска сети 255.255.255.0 
Настройте интерфейс Ethernet на главном компьютере

Linux хостов

Загрузите драйвер usbnet на хост:

 Хост-компьютер 
 $ sudo modprobe usbnet 

Linux создает интерфейс Ethernet на стороне хоста, также называемый usb0 .

Назначьте этому новому интерфейсу Ethernet IP-адрес в той же подсети, что и IP-адрес получателя. (Для следующей команды требуются права суперпользователя 🙂

 Host PC 
 $ sudo ifconfig usb0 192.168.44.1 маска сети 255.255.255.0 

Теперь к цели можно получить доступ через кабель USB, как если бы это был порт Ethernet. Вы можете отправить ping или открыть сеанс telnet с хоста на цель или наоборот.

Windows хостов

Подключите USB-кабель от цели к хост-компьютеру MS-Windows.MS-Windows обнаруживает новый гаджет USB RNDIS / Ethernet, устанавливает соответствующий драйвер и создает новый сетевой адаптер в системе.

Настройте IP-адрес этого сетевого адаптера, выбрав Панель управления > Сеть и Интернет> Сетевые подключения . Установите, например, IP-адрес 192.168.44.1, маску подсети 255.255.255.0.

Теперь к цели можно получить доступ через кабель USB, как если бы это был порт Ethernet. Вы можете отправить ping или открыть сеанс telnet с хоста на цель или наоборот.

Разгрузка гаджета Ethernet

Чтобы выгрузить гаджет USB-устройства:

 # rmmod g_ether
# rmmod usb_f_rndis
# rmmod usb_f_ecm
# rmmod libcomposite 

Гаджет для хранения данных

С помощью гаджета-накопителя целевая платформа перечисляет хост-компьютер как диск SCSI. Файловое или блочное устройство может использоваться в качестве резервного хранилища для накопителя.

Использование файла в качестве резервного хранилища

Создание резервного файла хранения

Необходимо подготовить файл резервного хранилища, прежде чем гаджет сможет его использовать.Резервное хранилище – это обычный файл, который должен быть создан с полным желаемым размером. Это необходимо сделать перед загрузкой драйвера гаджета, но это нужно сделать только один раз.

В следующем примере показано, как создать резервный файл размером 128 МБ в корневом каталоге цели:

 Целевое устройство 
 # dd bs = 1M count = 128 if = / dev / zero of = / backing_file
2 + 0 записей в
2 + 0 записей из 

Разделение резервного хранилища

Создание файла резервного хранилища похоже на наличие необработанного диска; вам все еще нужно создать разделы и установить файловую систему, прежде чем вы сможете ее использовать.

Используйте программу fdisk , чтобы разбить файл основы и указать значения цилиндров, головок и секторов файла основы. Эти значения являются произвольными, но поскольку драйвер гаджета для хранения использует сектор размером 512 байт, формула:

512 * Цилиндры * Головки * Секторы = Всего байт хранилища файлов поддержки

Для нашего примера файла хранения 128 МБ мы можем использовать значения:

цилиндров = 32

головы = 16

секторов = 512

Так что 512 * 32 * 16 * 512 = 128 МБ

На цели мы запускаем fdisk со значениями CHS в файле резервной копии:

 Целевое устройство 
# fdisk -C 32 -H 16 -S 512 / backing_file
Устройство не содержит ни действительной таблицы разделов DOS, ни метки диска Sun, SGI или OSF
Создание новой метки диска DOS.Изменения останутся только в памяти,
пока вы не решите написать их. После этого предыдущий контент
не подлежит восстановлению.
 
 
Команда (м на помощь): 

Чтобы создать основной раздел, занимающий полный размер резервного файла:

  • Нажмите n для «нового».
  • Пресс р для «основного».
  • Нажмите 1 для раздела номер 1.
  • Нажмите INTRO , чтобы принять значения по умолчанию для любых оставшихся параметров.
 Целевое устройство 
Команда (m для помощи): n
Командное действие
    продлен
    p основной раздел (1-4)
п
Номер раздела (1-4): 1
Первый цилиндр (1-260, по умолчанию 1):
Использование значения по умолчанию 1
Последний цилиндр или + size или + sizeM или + sizeK (1-260, по умолчанию 260):
Используя значение по умолчанию 260 

Новый раздел по умолчанию создается как раздел Linux (файловая система ext4).Чтобы изменить тип раздела на FAT32:

  • Пресс т для «типа».
  • Нажмите 1 , чтобы выбрать раздел 1.
  • Нажмите b , чтобы выбрать файловую систему Win95 FAT32.
 Целевое устройство 
 Команда (м для справки): т
Выбранный раздел 1
Шестнадцатеричный код (тип L для
список кодов): b
Изменен системный тип раздела 1 на b (Win95 FAT32) 

Нажмите p , чтобы распечатать данные таблицы разделов и убедиться, что все правильно:

 Целевое устройство
 
 Команда (м для справки): p
 
Резервное копирование диска: 134 МБ, 134217728 байт
16 головок, 63 сектора / дорожка, 260 цилиндров
Единицы = цилиндры 1008 * 512 = 516096 байт
 
       Система Идентификатора начала и конца загрузки устройства
backing_file1 1 260 131008+ b Win95 FAT32 

Нажмите w , чтобы записать таблицу разделов в резервное хранилище:

 Целевое устройство 
 Команда (m для справки): w
Таблица разделов была
изменена!
 
Вызов ioctl () для перечитывания таблицы разделов.fdisk: ПРЕДУПРЕЖДЕНИЕ:
не удалось перечитать таблицу разделов, ядро ​​все еще использует старую таблицу: не подходит
ioctl для устройства 

На данный момент раздел создан, но он еще не содержит файловую систему.

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

Загрузка устройства хранения данных

На цели загрузить драйвер с:

 Целевое устройство 
# modprobe g_mass_storage file = / backing_file stall = no
LUN: съемный файл: (без носителя)
Количество LUNs = 1
LUN: файл: / backing_file
Количество LUNs = 1
Гаджет g_mass_storage: гаджет Mass Storage, версия: 2009/09/11
Гаджет g_mass_storage: пользовательскому пространству не удалось предоставить iSerialNumber
Гаджет g_mass_storage: готово g_mass_storage
гаджет g_mass_storage: высокоскоростная конфигурация № 1: хранилище на основе файлов Linux 

Последняя строка появляется при подключении USB-кабеля между целью и хостом.Подключите его сейчас, если вы еще этого не сделали.

Создание и монтирование файловой системы

Linux хостов

Главный компьютер Linux распознает цель как новое устройство SCSI. Linux назначает узел устройства в виде sd x , где x – буквенный индекс, а раздел выглядит как sd x 1 . Чтобы точно узнать, какое устройство назначено хосту, распечатайте сообщения системного журнала:

 Host PC 
 $ dmesg
USB 2-1.1: новое высокоскоростное USB-устройство № 10 с использованием ehci_hcd
usb-storage 2-1.1: 1.0: совпадения для vid 0525 pid a4a5: 10000
scsi9: usb-хранилище 2-1.1: 1.0
USB 2-1.3: USB-разъём, устройство № 3
scsi 9: 0: 0: 0: Linux-файл прямого доступа к гаджету 0314 PQ: 0 ANSI: 2
SD 9: 0: 0: 0: Прикрепленный scsi универсальный тип sg2 0
SD 9: 0: 0: 0: [SDB] 262144 512-байтовые логические блоки: (134 МБ / 128 МБ)
SD 9: 0: 0: 0: [SDB] Защита от записи отключена
SD 9: 0: 0: 0: [SDB] Режим Sense: 0f 00 00 00
SD 9: 0: 0: 0: [SDB] Кэш записи: включен, кэш чтения: включен, не поддерживает DPO или FUA
SDB: SDB1
SD 9: 0: 0: 0: [SDB] Прикрепленный диск SCSI 

В этом примере хост назначил sdb1 в качестве узла устройства для раздела нашего резервного файла.

На хосте создайте файловую систему VFAT в этом разделе (вам могут потребоваться права root):

Host PC
При форматировании устройства на хост-компьютере убедитесь, что узел устройства dev / sdX соответствует подключенному устройству USB, а не жесткому диску вашего ПК. Выполнение команды mkfs.vfat на неправильном узле устройства может отформатировать ваш жесткий диск.

 Host PC 
 $ мкфс.vfat -F 32 / dev / sdb1 

Теперь установите устройство на хосте, чтобы хост имел доступ к нему для чтения / записи. Если ваш хост-компьютер готов к автоматическому подключению устройств, вы можете просто отсоединить USB-кабель и подключить его снова. Через несколько секунд ПК автоматически обнаружит и подключит устройство как USB-накопитель с размером созданного нами раздела (в нашем примере это 128 МБ). Изначально диск пуст.

Если компьютер не монтирует устройство автоматически, вам нужно сделать это вручную (вам могут потребоваться права суперпользователя):

 Host PC 
 $ mkdir / media / usbdisk
$ mount / dev / sdb1 / media / usbdisk -t vfat 

В этом примере мы смонтировали устройство в папку / media / usbdisk .Теперь мы можем создавать файлы и папки в этой папке.

Заполнителем для файлов и папок, которые мы создаем в этой папке, является файл 12810 МБ / backing_file , который мы создали на первых шагах.

Как и для других USB-устройств, перед удалением USB-кабеля необходимо размонтировать эту папку:

 Хост-компьютер 
 $ umount / media / usbdisk 

Windows хостов

Хост-компьютер MS-Windows распознает цель как новое запоминающее устройство USB.Появится предупреждающее сообщение о том, что диск еще не отформатирован. Нажмите Да , чтобы войти в инструмент форматирования.

Выберите файловую систему FAT и дополнительную метку тома (не более 11 символов). Затем нажмите Запустите .

После того, как том отформатирован в файловой системе FAT, вы можете использовать его как любой другой съемный носитель и создавать папки, копировать файлы и т. Д.

Заполнителем для файлов и папок, которые мы создаем в устройстве, является файл 12810 МБ / backing_file , который мы создали на первых шагах.

Использование блочного устройства в качестве резервного файла

Альтернативой использованию резервного файла является использование существующего блочного устройства, такого как карта Compact Flash, SD-карта, USB-накопитель или даже раздел Flash.Например, если вы подключили SD-карту, которая содержит два раздела, система Linux в целевой системе заполнит их примерно так:

 Целевое устройство 
 # ls -l / dev / mmc *
brw-rw ---- 1 root root 179, 8 Jan 7 22:28 / dev / mmcblk1
brw-rw ---- 1 root root 179, 9 Jan 7 22:19 / dev / mmcblk1p1
brw-rw ---- 1 корневой корень 179, 10 января 7 22:19 / dev / mmcblk1p2 

, где mmcblk1 – это карта, а mmcblk1p1 и mmcblk1p2 – это разделы.

Размонтировать блочное устройство на целевом

При использовании блочного устройства для гаджета хранения файлов рекомендуется сначала отключить носитель на целевой стороне. В противном случае доступ с хоста не будет синхронизирован с доступом с цели, так как система будет вести себя так, как будто один и тот же носитель монтируется дважды в разных точках монтирования.

Убедитесь, что все разделы блочного устройства отключены, например:

 Целевое устройство 
 # umount / dev / mmcblk1p1
# umount / dev / mmcblk1p2 

Загрузите гаджет запоминающего устройства

Загрузите гаджет запоминающего устройства, передавая узел блочного устройства (в примере узел устройства SD-карта) в качестве файла резервной копии:

 Целевое устройство 
 # modprobe g_mass_storage file = / dev / mmcblk1 stall = 0
Количество LUN = 8
Функция Mass Storage, версия: 2009/09/11
LUN: съемный файл: (без носителя)
Количество LUNs = 1
LUN: файл: / dev / mmcblk1
Количество LUNs = 1
Гаджет g_mass_storage: гаджет Mass Storage, версия: 2009/09/11
Гаджет g_mass_storage: пользовательскому пространству не удалось предоставить iSerialNumber
Гаджет g_mass_storage: готово g_mass_storage
гаджет g_mass_storage: высокоскоростная конфигурация № 1: хранилище на основе файлов Linux 

Теперь, когда вы подключите USB-кабель к хост-компьютеру, два раздела SD-карты будут доступны с хоста.

Разгрузка устройства хранения данных

Чтобы выгрузить гаджет USB-накопитель из системы:

# rmmod g_mass_storage
# rmmod libcomposite 
,

Обзор USB-устройства

В этой главе приводится краткая информация об архитектуре USB-устройства и описывается, как USB-устройства представлены в OS X. В нем также представлены некоторые конкретные рекомендации по работе с USB-устройствами в приложении. Подробнее о спецификации USB см. http://www.usb.org.

Типы устройств USB и скорость шины

Спецификация USB поддерживает широкий выбор устройств, начиная от низкоскоростных устройств, таких как клавиатуры, мыши и джойстики, до высокоскоростных устройств, таких как сканеры и цифровые камеры.В спецификации перечислено несколько классов устройств, каждый из которых определяет набор ожидаемого поведения устройства. В таблице 1-1 приведены некоторые примеры USB-устройств, классифицированные по классам.

Таблица 1-1 Примеры USB-устройств

USB-устройства класса

USB-устройства в классе

Аудио-класс

Динамики, микрофоны

Чип Класс интерфейса устройства карты

Смарт-карты, чип-карты

Класс связи

Устройство громкой связи, модем

Составной класс

Устройство, в котором содержится вся информация, относящаяся к классу. встроенные в его интерфейсы

HID class

Клавиатуры, мыши, джойстики, планшеты для рисования

Концентратор класса

Концентраторы обеспечивают дополнительные точки подключения для устройств USB

Класс хранения

90 002 Жесткие диски, устройства чтения флэш-памяти, приводы чтения / записи компакт-дисков, цифровые камеры и высокопроизводительные медиаплееры

Класс печати

Принтеры

Устройство

A для конкретного поставщика

Класс видео

Цифровые видеокамеры, веб-камеры, цифровые фотокамеры, поддерживающие потоковую передачу видео

Версия 1.1 спецификации USB поддерживает две скорости шины:

  • Низкая скорость (1,5 Мбит / с)

  • Полная скорость (12 Мбит / с)

Версия 2.0 спецификации добавляет еще одну скорость шины в этот список:

Спецификация USB 2.0 полностью совместима с низкоскоростными и полноскоростными USB-устройствами и даже поддерживает использование кабелей и разъемов, выполненных в соответствии с более ранними версиями спецификации. Apple предоставляет порты USB 2.0 на всех новых компьютерах Macintosh и полностью поддерживает новую спецификацию с контроллерами Enhanced Host Controller Interface (EHCI) и встроенными низкоуровневыми драйверами USB.

По большей части вам не нужно менять существующие приложения для поддержки более высокой скорости передачи данных, поскольку увеличение скорости и другие улучшения реализованы на таком низком уровне. Исключением являются некоторые различия в изохронных передачах. Для получения информации о том, как спецификация USB 2.0 влияет на изохронные передачи, см. USB 2.0 и Изохронные передачи.

Архитектура и терминология USB-устройств

Архитектура универсального USB-устройства является многоуровневой.Устройство состоит из одной или нескольких конфигураций, каждая из которых описывает возможную настройку, в которую может быть запрограммировано устройство. Такие настройки могут включать в себя характеристики мощности конфигурации (например, максимальную мощность, потребляемую конфигурацией и независимо от того, включена она или нет) и поддерживает ли конфигурация дистанционное включение.

Каждая конфигурация содержит один или несколько интерфейсов, доступных после ее настройки. Интерфейс предоставляет определения функций, доступных в устройстве, и может даже содержать альтернативные настройки в одном интерфейсе.Например, интерфейс для аудиоустройства может иметь разные настройки, которые вы можете выбрать для разных полос пропускания.

Каждый интерфейс содержит ноль или более конечных точек. Конечная точка – это уникально идентифицируемая часть устройства USB, которая является источником или приемником информации в потоке связи между хостом и устройством. Каждая конечная точка имеет характеристики, которые описывают поддерживаемую ею связь, такую ​​как тип передачи (управление, изохронный, прерывание или объем, описанный в Типах передачи USB), максимальный размер пакета и направление передачи (вход или выход).

Связь с USB-устройством осуществляется через канал, логическую связь между конечной точкой и программным обеспечением, запущенным на хосте. Конечная точка и канал часто используются как синонимы, хотя конечная точка является компонентом устройства USB, а канал является логической абстракцией канала связи между конечной точкой и хостом.

Дескрипторы компонентов устройства USB

Каждый уровень устройства USB предоставляет информацию о его атрибутах и ​​требованиях к ресурсам в своем дескрипторе, структуру данных, доступную через функции интерфейса устройства.Изучив дескрипторы на каждом уровне, вы можете точно определить, какая конечная точка вам нужна для успешного взаимодействия с конкретным устройством.

На верхнем уровне находится дескриптор устройства, который имеет поля, связанные с такой информацией, как класс и подкласс устройства, номера поставщиков и продуктов, а также количество конфигураций. Каждая конфигурация, в свою очередь, имеет дескриптор конфигурации, содержащий поля, которые описывают количество поддерживаемых интерфейсов и характеристики мощности устройства, когда оно находится в этой конфигурации, наряду с другой информацией.Каждый интерфейс, поддерживаемый конфигурацией, имеет свой собственный дескриптор с полями для такой информации, как класс интерфейса, подкласс и протокол, а также количество конечных точек в этом интерфейсе. На нижнем уровне находятся дескрипторы конечной точки, которые определяют такие атрибуты, как тип передачи и максимальный размер пакета.

Спецификация USB определяет имя для каждого поля дескриптора, такого как поле bDeviceClass в дескрипторе устройства и поле bNumInterfaces в дескрипторе конфигурации, и каждое поле связано со значением.Полный список всех полей дескриптора см. В спецификации USB на сайте www.usb.org. Семейство USB определяет структуры, которые представляют дескрипторы, определенные в спецификации USB. Для определения этих структур, см. USB в Kernel Framework Reference .

Устройства составного класса USB

Спецификация USB определяет устройство составного класса как устройство, чьи поля дескриптора устройства для класса устройства ( bDeviceClass ) и подкласса устройства ( bDeviceSubClass ) оба имеют значение 0 .Устройство составного класса представляется системе как устройство USB, использующее один адрес шины, который может представлять несколько интерфейсов, каждый из которых представляет отдельную функцию. Хорошим примером устройства составного класса является многофункциональное устройство, такое как устройство, которое выполняет печать, сканирование и отправку факсов. В таком устройстве каждая функция представлена ​​отдельным интерфейсом. В OS X набор ввода-вывода загружает драйвер устройства AppleUSBComposite для устройств составного класса, у которых еще нет драйверов устройств, специфичных для поставщика, для их управления.Драйвер AppleUSBComposite настраивает устройство и загружает драйверы для каждого интерфейса USB.

Хотя большинство многофункциональных USB-устройств являются устройствами составного класса, не все устройства составного класса являются многофункциональными устройствами. Производитель однофункционального устройства USB может классифицировать устройство как устройство составного класса, если оно соответствует спецификациям USB. Для получения дополнительной информации о том, как OS X представляет USB-устройства и интерфейсы, посмотрите Устройства USB на OS X.

Типы передачи USB

Спецификация USB определяет четыре типа передачи по каналу:

  • Control – предназначена для поддержки конфигурации, команд и обмена данными между хост-программой и устройством. Управление передачей поддерживает обнаружение ошибок и повторные попытки.

  • Прерывание – используется для поддержки небольших передач с ограниченной задержкой на устройство или с него, таких как координаты от указывающего устройства или изменения состояния от модема.Передачи прерываний поддерживают обнаружение ошибок и повторную попытку.

  • Изохронный – используется для периодической, непрерывной связи между хостом и устройством, обычно включающей актуальную для времени информацию, такую ​​как потоки аудио- или видеоданных. Изохронные передачи не поддерживают обнаружение ошибок или повторную попытку.

  • Bulk – предназначен для непериодической передачи больших пакетов с ослабленными временными ограничениями, например, между программным обеспечением хоста и принтером или сканером.Массовые переводы поддерживают обнаружение ошибок и повторную попытку.

Трубы также имеют направление передачи, связанное с ними. Канал управления может поддерживать двунаправленную связь, но все остальные каналы строго однонаправлены. Следовательно, для двусторонней связи требуются два канала: один для ввода и один для вывода.

Каждое USB-устройство требуется для реализации канала управления по умолчанию, который обеспечивает доступ к конфигурации устройства, состоянию и управляющей информации. Этот канал, реализованный в объекте-куске IOUSBDevice (описан в разделе «Устройства USB на OS X»), используется, когда драйвер, такой как драйвер AppleUSBComposite , конфигурирует устройство или когда требуется информация об управлении и статусе для конкретного устройства.Например, ваше приложение будет использовать канал управления по умолчанию, если ему нужно установить или выбрать конфигурацию для устройства. Канал управления по умолчанию подключен к конечной точке по умолчанию (конечная точка 0). Обратите внимание, что конечная точка 0 не предоставляет дескриптор конечной точки и она никогда не учитывается в общем количестве конечных точек в интерфейсе.

Интерфейсы, связанные с конфигурацией, могут содержать любую комбинацию трех оставшихся типов каналов (прерывание, изохронность и объем), реализованных в объектах-кусочках IOUSBInterface (описанных в USB-устройствах в OS X).Ваше приложение может запросить дескрипторы интерфейса устройства, чтобы выбрать канал, наиболее подходящий для его нужд.

Остановки и остановки

Хотя срывы и остановки разные, они тесно связаны по своему воздействию на передачу данных. Останов – это функция конечной точки, и она может быть установлена ​​хостом или самим устройством в ответ на ошибку. Задержка – это тип пакета рукопожатия, который конечная точка возвращает, когда она не может передать или получить данные, или когда установлена ​​функция остановки (хост никогда не отправляет задерживающий пакет).Когда конечная точка отправляет пакет задержки, хост может остановить конечную точку.

В зависимости от конкретных обстоятельств и от того, насколько совместимо устройство, функция остановки должна быть очищена на хосте, на конечной точке или на обоих, прежде чем возобновится передача данных. Когда сброс останавливается, бит переключения данных, используемый для синхронизации передачи данных, также сбрасывается (см. Синхронизация данных в неизохронных передачах для получения дополнительной информации о переключении данных). Для получения информации о том, как обрабатывать эти условия в вашем приложении, см. Обработка остановов, остановок и ресинхронизации с переключением данных.

Синхронизация данных в неизохронных передачах

Спецификация USB определяет простой протокол для обеспечения синхронизации данных между несколькими пакетами для неизохронных передач (напомним, что изохронные передачи не поддерживают восстановление после ошибок или повторную попытку). Протокол реализуется с помощью бита переключения данных как на хосте, так и на конечной точке, который синхронизируется в начале транзакции (или когда происходит сброс). Точный механизм синхронизации зависит от типа передачи; подробности смотрите в спецификации USB.

И хост, и конечная точка начинают транзакцию с битами переключения данных, установленными в ноль. Обычно объект, принимающий данные, переключает свой бит переключения данных, когда он может принять данные, и он получает безошибочный пакет данных с правильной идентификацией. Объект, отправляющий данные, переключает свой бит переключения данных, когда получает положительное подтверждение от получателя. Таким образом, биты переключения данных остаются синхронизированными, например, до тех пор, пока, например, не будет принят пакет с неправильной идентификацией.Когда это происходит, получатель игнорирует пакет и не увеличивает свой бит переключения данных. Когда биты переключения данных теряют синхронизацию (по этой или любой другой причине), вы, вероятно, заметите, что альтернативные транзакции не проходят в вашем приложении. Решением этой проблемы является повторная синхронизация битов переключения данных. Для получения информации о том, как это сделать, см. Обработка остановов, остановок и ресинхронизации с переключением данных.

USB 2.0 и изохронные передачи

USB 2.0 спецификация поддерживает те же четыре типа передачи, что и более ранние версии спецификации. Помимо поддержки более высокой скорости передачи, новая спецификация определяет улучшенный протокол для высокоскоростных передач и новые способы обработки транзакций для низкоскоростных и полноскоростных устройств. Подробнее о протоколах и методах обработки транзакций см. В спецификации по адресу http://www.usb.org.

По большей части эти улучшения реализованы на уровне программного обеспечения хоста и не требуют изменений в вашем коде.Однако для изохронных передач вы должны знать о следующих различиях:

  • Более ранние версии спецификации делят время шины на кадры длительностью 1 миллисекунда, каждый из которых может переносить несколько транзакций по нескольким получателям. (Транзакция содержит два или более пакета: пакет токена и один или несколько пакетов данных, пакет рукопожатия или оба.) Спецификация USB 2.0 делит кадр длительностью 1 миллисекунду на восемь микрокадров по 125 микросекунд, каждый из которых может нести несколько транзакций по нескольким направлениям.

  • Максимальный объем данных, разрешенных в транзакции, увеличен до 3 КБ.

  • Любые изохронные конечные точки в интерфейсе устройства по умолчанию должны иметь максимальный размер пакета, равный нулю. (Это означает, что настройкой по умолчанию для интерфейса, содержащего изохронные каналы, является альтернативная установка на ноль, а максимальный размер пакета для изохронных конечных точек этого интерфейса должен быть равен нулю.) Это гарантирует, что хост может настроить устройство независимо от того, насколько занята шина.

Для краткого изложения того, как эти различия влияют на API OS X USB, см. Изменения в изохронных функциях для поддержки USB 2.0.

USB-устройства в OS X

Когда USB-устройство подключено, семейство USB OS X абстрагирует содержимое дескриптора устройства в объект-кусок набора I / O Kit, называемый IOUSBDevice . Этот объект присоединяется к плоскости IOService реестра ввода-вывода как дочерний элемент драйвера для контроллера USB. Объект-кусочек IOUSBDevice затем регистрируется для сопоставления с набором ввода-вывода.

Если устройство представляет собой устройство составного класса, для которого нет соответствующего драйвера производителя, драйвер AppleUSBComposite сопоставляется с ним и запускается в качестве его поставщика. Затем драйвер AppleUSBComposite настраивает устройство, устанавливая конфигурацию в списке дескрипторов конфигурации устройства с максимальным потреблением энергии, которое может быть удовлетворено портом, к которому подключено устройство. Это позволяет по-разному конфигурировать устройство с низкой мощностью и конфигурацией высокой мощности в зависимости от того, подключено ли оно к концентратору с питанием от шины или концентратору с автономным питанием.Кроме того, если объект куска IOUSBDevice имеет свойство «Preferred Configuration», драйвер AppleUSBComposite всегда будет использовать это значение при попытке настроить устройство.

Конфигурация устройства приводит к тому, что семейство USB абстрагирует каждый дескриптор интерфейса в выбранной конфигурации в объект-кусочек IOUSBInterface . Эти объекты-кусочки присоединяются к реестру ввода-вывода как дочерние элементы исходного объекта-кусочка IOUSBDevice и регистрируются для сопоставления с набором ввода-вывода.

Важно: Поскольку устройство составного класса настраивается драйвером AppleUSBComposite , повторная настройка конфигурации из вашего приложения приведет к уничтожению объектов-кусочков IOUSBInterface и созданию новых. В общем, единственная причина для установки конфигурации устройства составного класса, которая соответствует драйверу AppleUSBComposite , заключается в выборе конфигурации, отличной от первой.

Для устройств некомпозитного класса или устройств композитного класса с драйверами конкретного производителя, которые соответствуют им, нет гарантии того, что будет настроена какая-либо конфигурация, и вам, возможно, придется выполнить эту задачу в вашем приложении.. Например, многофункциональное USB-устройство представлено в реестре ввода-вывода одним объектом IOUSBDevice и одним объектом IOUSBInterface для каждого интерфейса.

Различие между интерфейсом и устройством важно, поскольку оно определяет, какой объект должно найти ваше приложение в реестре ввода-вывода и какой тип интерфейса устройства получить.Например, если вашему приложению необходимо установить связь с определенным интерфейсом на многофункциональном устройстве USB, оно должно найти этот интерфейс и получить IOUSBInterfaceInterface для связи с ним. С другой стороны, приложению, которое должно взаимодействовать с устройством USB в целом, необходимо найти устройство в реестре ввода-вывода и получить IOUSBDeviceInterface для связи с ним. Для получения дополнительной информации о поиске устройств и интерфейсов в реестре ввода-вывода см. Поиск USB-устройств и интерфейсов; для получения дополнительной информации о том, как получить надлежащий интерфейс устройства для связи с устройством или интерфейсом, см. Использование интерфейсов устройства USB.

Поиск USB-устройств и интерфейсов

Чтобы найти USB-устройство или интерфейс, используйте ключи, определенные в спецификации общего класса универсальной последовательной шины , редакция 1.0 (доступна для загрузки с http://www.usb.org/developers /devclass_docs/usbccs10.pdf), чтобы создать соответствующий словарь, который определяет определенный поиск. Если вы не знакомы с концепцией сопоставления устройств, см. Раздел «Поиск устройств в реестре ввода-вывода» в Доступ к оборудованию из приложений .

Ключи, определенные в спецификации, перечислены в таблицах ниже. Каждый ключ состоит из определенной комбинации элементов в дескрипторе устройства или интерфейса. В приведенных ниже таблицах элементы в ключе разделены символом «+», чтобы подчеркнуть требование, чтобы все элементы ключа отображались вместе в соответствующем словаре. Обе таблицы представляют ключи в порядке специфичности: первый ключ в каждой таблице определяет наиболее конкретный поиск, а последний ключ определяет самый широкий поиск.

Прежде чем создавать соответствующий словарь, убедитесь, что вы знаете, должно ли ваше приложение взаимодействовать с устройством или определенным интерфейсом в устройстве. Особенно важно учитывать это различие при работе с многофункциональными устройствами. Многофункциональное устройство часто представляет собой устройство составного класса, которое определяет отдельный интерфейс для каждой функции. Если, например, вашему приложению требуется связь с функцией сканирования устройства, которое выполняет сканирование, отправку факсов и печать, вам необходимо создать словарь, который будет соответствовать только интерфейсу сканирования (объект IOUSBInterface), а не устройство как целое (объект IOUSBDevice).В этой ситуации вы будете использовать ключи, определенные для сопоставления интерфейса (те, которые показаны в Таблице 1-3), а не ключи для сопоставления устройства.

В таблице 1-2 перечислены ключи, которые можно использовать для поиска устройств (не интерфейсов). Каждый ключевой элемент является частью информации, содержащейся в дескрипторе устройства для устройства USB.

9279

выпуск номер устройства

900B 960 960 960 560 560 95060 95060 bBeee 95960BeBeSeBeBeSe 95060BeDeBeSeBeBeSe 9019SD 950

90 027
Таблица 1-2 Ключи для поиска USB-устройства

Ключ

Примечания

idVendor + idProduct + bcdDevice

idVendor + idProduct

idVendor + bDeviceSubClass + bDeviceProtocol

Используйте этот ключ только в том случае устройства bDeviceClass - это $ FF

idVendor + bDeviceSubClass

Используйте этот ключ только в том случае, если bDeviceClass устройства составляет

Используйте этот ключ только в том случае устройства bDeviceClass является не $ FF

bDeviceClass + bDeviceSubClass

Используйте этот ключ только в том случае устройства bDeviceClass является не $ FF

В таблице 1-3 перечислены ключи, которые можно использовать для поиска интерфейсов (не устройств).Каждый ключевой элемент является частью информации, содержащейся в дескрипторе интерфейса для устройства USB.

Таблица 1-3 Ключи для поиска интерфейса USB
.

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

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