Поделиться через


Структуры данных USB 3.0

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

Драйвер хост-контроллера USB 3.0 является частью стека основных драйверов USB 3.0. Дополнительные сведения см. в статье Архитектура стека драйверов USB.

Каждый хост-контроллер USB 3.0 может иметь до 255 устройств, а каждое устройство может иметь до 31 конечной точки. На следующей схеме показаны некоторые структуры данных, представляющие один хост-контроллер и подключенные устройства.

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

Базовый массив контекста устройства

Базовый массив контекста устройства — это массив указателей на структуры контекста устройства. Для каждого устройства, подключенного к контроллеру узла, существует одна структура контекста устройства. Элементы от 1 до 255 указывают на структуры контекста устройства. Элемент 0 указывает на структуру контекста для контроллера узла.

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

Структура контекста устройства содержит массив указателей на структуры контекста конечной точки. Для каждой конечной точки на устройстве существует одна структура контекста конечной точки. Элементы от 1 до 31 указывают на структуры контекста конечной точки. Элемент 0 указывает на структуру контекста слота, которая содержит сведения о контексте для устройства.

Командный круг

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

Кольцо событий

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

Массив регистра Doorbell

Массив регистров Doorbell — это массив регистров doorbell, по одному для каждого устройства, подключенного к контроллеру узла. Элементы с 1 по 255 являются регистрами дверной звонок. Элемент 0 указывает, есть ли в круге команд отложенная команда.

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

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

Схема, иллюстрирующая структуру данных USB 3.0 с контекстом конечной точки, содержащей несколько TRB с данными и TD.

Кольцо передачи

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

Когда стек ядра USB 3.0 получает запрос на передачу от драйвера USB-клиента, он определяет контекст конечной точки для передачи, а затем разбивает запрос на один или несколько дескрипторов передачи (TD). Каждое TD содержит один или несколько TDB.

Контекст конечной точки

Структура контекста конечной точки содержит сведения о контексте для одной конечной точки. Он также имеет элементы Dequeue и Enqueue , которые используются для отслеживания того, где TRB используются оборудованием и где TRB добавляются программным обеспечением.

См. также раздел

Инновации отладки USB в Windows 8