конечная точка USB для Linux
конечная точка USB для Linux

Предисловие

Конкретная роль и значение конечных точек в реальном процессе связи USB очень важны, но их несколько сложно понять. Я приведу некоторые знания в виде памятки.

(Примечание: 1. EP в тексте означает Конечную точку;

1. Концепция конечной точки.

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

2. Классификация конечных точек

Каждое USB-устройство имеет уникальный адрес устройства. Адрес устройства назначается хостом при подключении устройства к хосту. Хост в основном использует этот адрес устройства для доступа к USB-устройству. Однако внутренний адрес устройства будет разделен на более подробные сведения, и устройство будет разделять некоторые конечные точки. Каждая конечная точка будет иметь уникальный номер конечной точки в устройстве. Этот номер конечной точки задается при проектировании устройства. Например, конечная точка 0, конечная точка 1 и т. д. Устройство может содержать до 16 конечных точек, каждая с адресом 0–15. (В Интернете также есть сообщения о том, что их десятки, и их необходимо изучить)

Каждый адрес конечной точки соответствует направлению. Например, конечная точка 3-ВХОД и конечная точка 3-ВЫХОД имеют совершенно разные значения. Но нужно обратить внимание на одну из специальных конечных точек — конечную точку 0. Каждое USB-устройство должно иметь конечную точку 0, которая используется для нумерации устройства и выполнения некоторых основных функций управления на устройстве. Конечная точка 0 также называется конечной точкой управления. . И еще одно отличие ее от других конечных точек заключается в том, что направление передачи данных конечной точки 0 является двунаправленным, то есть конечная точка 0 может как отправлять данные хосту, так и принимать данные, отправленные хостом, в то время как другие конечные точки являются односторонними.

Хотя существует 16 конечных точек, мы обычно используем только 3, а именно:

1), EP0: передача информации о конфигурации и управлении;

2), EP1: выполнить ввод данных IN_EP;

3), EP2: выполнить вывод данных OUT_EP.

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

3. Характеристики конечных точек

Характеристики конечной точки определяют тип связи, которую она осуществляет с клиентским программным обеспечением. Конечная точка имеет некоторые из следующих характеристик:

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

4. Дескриптор конечной точки

Дескриптор конечной точки в USB-устройстве описывает информацию о конечной точке. Формат дескриптора конечной точки следующий:

Язык кода:javascript
копировать
typedef struct _USB_ENDPOINT_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    BYTE        bEndpointAddress,
    BYTE        bmAttributes,
    WORD      wMaxPacketSize,
    BYTE        bInterval
}USB_ENDPOINT_DESCRIPTOR;

Конкретные объяснения каждой переменной заключаются в следующем:

bLength: размер дескриптора. Исправлено значение 0x07.

bDescriptorType: тип дескриптора интерфейса. Исправлено значение 0x05.

bEndpointType: адрес конечной точки USB-устройства. Бит 7, направление, можно игнорировать для конечных точек управления, 1/0: IN/OUT. Биты 6-4, зарезервированы. BIt3-0: номер конечной точки.

bmAttributes: атрибуты конечной точки. Бит 7-2, зарезервирован. Бит 1-0: 00 управление, 01 синхронизация, 02 пакетная обработка, 03 прерывание.

wMaxPacketSize: максимальный размер пакета, полученного или отправленного этой конечной точкой.

bInterval: интервал времени для опроса конечной точки передачи данных. Игнорируется для массовой передачи и конечных точек передачи управления. Должно быть 1 для конечных точек синхронной передачи и находится в диапазоне от 1 до 255 для конечных точек передачи прерываний.

5. Конечные точки и конвейеры

1. Понятие трубопровода

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

2. Классификация форматов труб.

Для конвейерных каналов существует два формата связи: поток и сообщение. Эти два формата связи являются разными и взаимоисключающими.

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

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

6. Тип передачи конечной точки

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose