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

В этом разделе описываются структуры данных, используемые драйвером контроллера узла USB 3.0. Understanding these data structures will help you use the USB 3.0 and RCDRKD debugger extension commands effectively. Структуры данных, представленные здесь, имеют имена, которые соответствуют спецификации 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 указывает на структуру контекста слота, которая содержит сведения о контексте для устройства.

Command Ring

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

Event Ring

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

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

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

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

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

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

Transfer Ring

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

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

Endpoint Context

Структура контекста конечной точки содержит сведения о контексте для одной конечной точки. It also has Dequeue and Enqueue members, which are used to track where TRBs are being consumed by the hardware and where TRBs are being added by software.

See also

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