Что такое usb slave

Обновлено: 21.11.2024

Поддержка eCos USB slave позволяет разработчикам производить периферийные устройства USB. Он состоит из нескольких различных пакетов eCos:

Драйверы устройств для конкретных реализаций ведомого USB-оборудования, например, встроенного контроллера USB-устройств, предоставляемого процессором Intel SA1110. Типичное периферийное USB-устройство предоставляет только один подчиненный USB-порт, поэтому потребуется только один такой пакет драйверов устройств. Обычно пакет драйвера устройства загружается автоматически при создании конфигурации eCos для целевого оборудования, имеющего ведомое устройство USB. Если вы выберете цель, которая имеет ведомое USB-устройство, но драйвер USB-устройства не загружен, это означает, что такой драйвер устройства в настоящее время недоступен.

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

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

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

Эти пакеты поддерживают только разработку периферийных устройств USB, но не хостов USB.

Концепции USB

Информацию о USB можно получить из ряда источников, включая веб-сайт Форума разработчиков USB. Здесь представлено только краткое описание.

Сеть USB асимметрична: она состоит из одного хоста, одного или нескольких подчиненных устройств и, возможно, некоторого количества промежуточных концентраторов. Сторона хоста значительно сложнее, чем сторона ведомого. По сути, все операции инициируются хостом. Например, если хосту необходимо получить некоторые данные от определенного периферийного устройства USB, он отправит токен IN этому периферийному устройству; последний должен ответить либо NAK, либо соответствующими данными. Точно так же, когда хост хочет передать данные на периферийное устройство, он отправляет токен OUT, за которым следуют данные; периферийное устройство вернет NAK, если оно в настоящее время не может получить больше данных или если произошло повреждение, в противном случае оно вернет ACK. Все передачи проходят контрольную сумму, и существует четко определенный процесс устранения ошибок. Периферийные устройства USB могут взаимодействовать только с хостом, но не друг с другом.

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

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

Передача данных с хоста на периферийное устройство адресована не только этому периферийному устройству, но и конкретной конечной точке внутри этого периферийного устройства. Точно так же хост запрашивает входящие данные от конкретной конечной точки, а не от периферийного устройства в целом. Например, комбинированное устройство клавиатуры/тачпада может обеспечить события клавиатуры на конечной точке 1 и события мыши на конечной точке 2. Каждое периферийное устройство USB может иметь до 16 конечных точек для входящих данных и еще 16 для исходящих данных. Однако, учитывая сравнительно высокую скорость ввода-вывода USB, эта адресация конечных точек обычно реализуется аппаратно, а не программно, и аппаратно реализуется лишь небольшое количество конечных точек. Конечная точка 0 обычно используется только для управляющих сообщений.

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

Когда периферийное USB-устройство подключается к хосту, выполняется начальный процесс перечисления и настройки. Периферийное устройство предоставляет такую ​​информацию, как класс устройства (аудио, видео и т. д.), идентификатор поставщика, какие конечные точки следует использовать для передачи данных и т. д. Хост-ОС использует эту информацию для определения подходящего драйвера хост-устройства. Это может быть универсальный драйвер для класса периферийных устройств или драйвер, специфичный для производителя. Предполагая, что подходящий драйвер установлен, хост затем активирует периферийное устройство USB и выполняет дополнительную инициализацию для конкретного приложения. Например, для USB-устройства Ethernet это потребует получения MAC-адреса Ethernet. Большинство периферийных устройств USB будут довольно простыми, но можно создавать многофункциональные периферийные устройства с различными конфигурациями, интерфейсами и альтернативными настройками интерфейса.

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

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

Устройства ввода/вывода eCos USB

Включение USB-кода

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

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

У устройства есть поддержка USB OTG. Ниже приведены сценарии:

Когда устройство подключено к ПК, оно действует как ведомое. (Как устройство узнает, что оно должно действовать как ведомое?)

Когда устройство подключено к принтеру, оно выступает в качестве главного. (Как устройство узнает, что оно должно действовать как главное?)

Какие шаги выполняются, когда устройство подключено к OTG?Как реализовать этот механизм (вкратце)?

2 ответа 2

Протокол согласования хоста в разделе 6 описывает, как два устройства OTG решают, какое из них получает встроенный хост. В основном это архивируется путем включения подтягивающих и понижающих резисторов на линии D+.

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

В двух упомянутых вами сценариях USB-устройство может узнать, является ли оно хостом или устройством по кабелю. USB-кабели (не типа C) несимметричны. Одна сторона — хост, а другая — устройство. На разъеме есть контакт, называемый идентификационным контактом, который плавает на стороне устройства и заземлен на стороне хоста. Это позволяет USB-контроллеру на каждой стороне знать, к какой стороне кабеля он подключен и, следовательно, какую роль (хост или устройство) он должен выполнять при подключении. Устройства такого типа называются устройствами двойного назначения.

Если у вас есть такое устройство, вы можете подключить его к обычному хосту (например, к ноутбуку), и оно будет действовать как устройство. И вы можете подключить его к обычному устройству (например, к принтеру), и он будет выступать в роли хоста. Все это основано на кабеле.

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

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

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

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

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

  • Один уровень для хоста (хозяина шины).
  • Шесть уровней концентраторов и устройств.

USB-устройства делятся на классы устройств:

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

Примеры функций:

  • Устройство с интерфейсом пользователя, например мышь, клавиатура, планшет или игровой контроллер.
  • Устройство обработки изображений, например сканер, принтер или камера.
  • Запоминающее устройство, такое как дисковод для компакт-дисков, дисковод для гибких дисков или DVD-диск.

Логическая сеть USB представляется разработчику звездообразной сетью с хостом в центре. Концентраторы не усложняют программирование и прозрачны для программиста. USB-устройство будет работать одинаково независимо от того, подключено ли оно напрямую к корневому концентратору или подключено через промежуточные концентраторы. Все USB-устройства доступны как адресуемые узлы в этой сети master/slave. Только хост может инициировать передачу данных в сети.

Высокоскоростной одноканальный последовательный порт USB 2.0 FTDI Type-C, один порт подачи питания

Высокоскоростной одноканальный последовательный порт USB 2.0 FTDI Type-C, два порта подачи питания

Высокоскоростной двухканальный последовательный порт USB 2.0 FTDI Type-C, один порт питания

Высокоскоростной двухканальный последовательный порт USB 2.0 FTDI Type-C, два порта подачи питания

Высокоскоростной четырехканальный последовательный порт USB 2.0 FTDI Type-C, один порт питания

Высокоскоростной четырехканальный последовательный порт USB 2.0 FTDI Type-C, два порта подачи питания

Высокоскоростной одноканальный FTDI USB 2.0 для UART/FIFO IC

Высокоскоростной двойной USB 2.0 FTDI для UART/FIFO IC

ИС контроллера устройств FTDI USB 2.0 to Quad I2C/SPI

Обратитесь к нашим специалистам по продажам и техническим специалистам по телефону +44 1256 851770 (с понедельника по пятницу с 9:00 до 17:30)

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

Читайте также: