Введение

Интерфейс программного обеспечения

Интерфейс контроллера хоста (HCI) – это интерфейс на уровне регистров, который обеспечивает связь между контроллером хоста для оборудования USB или IEEE 1394 и драйвером контроллера хоста в программном обеспечении. Программное обеспечение драйвера обычно поставляется с операционной системой персонального компьютера, но также может быть реализовано специализированными устройствами, такими как микроконтроллер. На плате расширения или контроллере материнской платы это предполагает значительную аппаратную логику, включающую цифровые логические схемы в чипе контроллера материнской платы и аналоговые схемы, управляющие высокоскоростными дифференциальными сигналами. На программном уровне для этого требуется драйвер устройства (называемый драйвером хост-контроллера или HCD).

Открыть интерфейс контроллера хоста

Открытый интерфейс контроллера хоста (OHCI) — это открытый стандарт. При использовании с картой IEEE 1394 (также известной как FireWire; i. LINK или Lynx), OHCI означает, что карта поддерживает стандартный интерфейс к ПК и может использоваться драйверами OHCI IEEE 1394, которые входят в состав всех современных операционных систем. Благодаря стандартному интерфейсу OHCI, операционной системе не требуется заранее знать производителя карты или принципы ее работы; она может безопасно предполагать, что карта понимает набор четко определенных команд, определенных в стандартном протоколе.

Открыть интерфейс контроллера хоста

Стандарт OHCI для USB похож на стандарт OHCI для IEEE 1394, но поддерживает только USB 1.1 (полная и низкая скорость); поэтому его интерфейс регистров выглядит совершенно иначе. По сравнению с UHCI, он переносит большую часть интеллекта в контроллер и, следовательно, гораздо более эффективен; это было одной из причин его разработки. Если компьютер предоставляет USB 1.1 для архитектур, отличных от x86, или x86 USB 1.1 с контроллера USB, не произведенного Intel или VIA, то, скорее всего, используется OHCI (например, OHCI часто встречается на платах расширения PCI на основе чипсета NEC). Он имеет значительно меньше ограничений, связанных с интеллектуальной собственностью, чем UHCI. Он поддерживает только 32-битную адресацию памяти, поэтому для работы с 64-битной операционной системой требуется IOMMU или вычислительно дорогой буфер пересылки. OHCI взаимодействует с остальной частью компьютера только посредством ввода-вывода, отображенного в память. Следовательно, для работы с 64-битной операционной системой требуется IOMMU или дорогостоящий буфер пересылки. UHCI конфигурируется с использованием ввода-вывода, отображенного в порт, и ввода-вывода, отображенного в память, а также требует ввода-вывода, отображенного в память, для обновления статуса и буферов данных, необходимых для хранения данных, которые необходимо отправить, или данных, которые были получены. UHCI является стандартом высокоскоростного контроллера, применимым к USB 2.0. Системы на основе UHCI и OHCI, существовавшие ранее, были более сложными и дорогими, чем необходимо. В результате Форум разработчиков USB (USB IF) настоял на открытой спецификации для EHCI. Intel проводила тестирование на соответствие EHCI, что помогло предотвратить внедрение проприетарных функций. Изначально ПК с высокоскоростными портами имел два контроллера: один для устройств с низкой и полной скоростью, а второй – для устройств с высокой скоростью. Обычно такая система использовала драйверы EHCI и либо OHCI, либо UHCI. Драйвер UHCI обеспечивает интерфейсы с низкой и полной скоростью для USB-контроллеров чипсетов Intel или VIA на материнской плате или для любых дискретных контроллеров VIA, подключенных к шине расширения компьютера. Драйвер OHCI обеспечивает функции с низкой и полной скоростью для USB-портов всех других производителей чипсетов материнской платы, интегрированных USB-контроллеров или дискретных контроллеров хоста, подключенных к шине расширения компьютера. Драйвер EHCI обеспечивал высокоскоростные функции для USB-портов на материнской плате или на дискретном контроллере USB. Более современное оборудование направляет все порты через внутренний концентратор "согласования скорости" (RMH), который преобразует весь трафик, включающий любые непосредственно подключенные порты, работающие на полной и низкой скорости, между высокоскоростным трафиком, передаваемым контроллеру EHCI, и трафиком с полной или низкой скоростью, который ожидают порты, работающие на этих скоростях, позволяя контроллеру EHCI обрабатывать эти устройства. Спецификация программного интерфейса EHCI определяет как 32-битные, так и 64-битные версии своих структур данных, поэтому для работы с 64-битной операционной системой не требуется буфер пересылки или IOMMU, если реализован концентратор согласования скорости для обеспечения подключения с полной и низкой скоростью вместо дополнительных контроллеров, использующих спецификацию UHCI или спецификацию OHCI, которые являются спецификациями только для 32 бит.

Расширяемый интерфейс контроллера хоста

Расширяемый интерфейс контроллера хоста (xHCI) — это новейший стандарт контроллера хоста, обеспечивающий более высокую скорость, энергоэффективность и улучшенную поддержку виртуализации по сравнению с предыдущими стандартами. Его целью также было создание контроллера хоста USB, призванного заменить UHCI/OHCI/EHCI. Он поддерживает все скорости USB-устройств (USB 3.1 SuperSpeed+, USB 3.0 SuperSpeed, USB 2.0 Low, Full и High speed, USB 1.1 Low и Full speed).

Интерфейс контроллера виртуального хоста

Виртуальный контроллер хоста (VHCI) — это виртуальный контроллер, который может экспортировать виртуальные USB-устройства, не имеющие соответствующих физических устройств. Например, в Linux контроллеры VHCI используются для предоставления доступа к USB-устройствам с других машин, подключенных по протоколу USB/IP.

Интерфейс хоста USB4

Интерфейс хоста, определенный в спецификации USB4. Он позволяет операционной системе управлять маршрутизацией USB4 для USB, DisplayPort, PCI Express, Thunderbolt или связи между хостами.