Архитектура и обзор HID для транспорта SPI
В этой статье описывается стек драйверов для устройств, поддерживающих HID по транспорту SPI.
Архитектура и обзор
Стек драйверов HID SPI состоит из существующих и новых компонентов, предоставляемых корпорацией Майкрософт, а также компонентов, предоставляемых производителем силиконов SPI. На следующем рисунке показан стек и эти компоненты.
Windows предоставляет интерфейс для низкой мощности простых автобусов для эффективного взаимодействия с операционной системой. Этот интерфейс называется простой периферийной шиной (SPB), и он поддерживает автобусы, такие как Меж интегрированный канал (I2C) и последовательный периферийный интерфейс (SPI). Дополнительные сведения о SPB см. в разделе "Простая периферийная шина" (SPB).
Windows предоставляет мини-порт HID на основе KMDF-драйвера, реализующего спецификацию протокола 1.0 для HID через SPI. Этот драйвер называется HIDSPI.sys. Windows загружает этот драйвер на основе совместимого идентификатора, который предоставляется расширенным интерфейсом конфигурации и power Interface (ACPI). Системные интеграторы могут использовать расширение INF для загрузки этого драйвера на основе идентификатора оборудования периферийных устройств. Драйвер гарантирует, что приложения, использующие уровни приложений HID IOCTLs для программного обеспечения, использующего набор IOCTLs HID и набор API. Подключение GPIO предоставляется драйверу, что позволяет устройству утверждать прерывание, если требуется внимание или данные.
Примечание.
Драйвер устройства HIDSPI.sys поддерживает только шину SPI. Он не поддерживает I2C, SMBUS или другие низкопроизводительные автобусы в Windows.
Драйвер контроллера SPI
Драйвер контроллера SPI предоставляет интерфейс IOCTL последовательной периферийной шины (SPB) для выполнения операций чтения и записи. Этот драйвер предоставляет фактические встроенные элементы контроллера (например, SPI). Расширение класса SPB от имени драйвера контроллера обрабатывает все взаимодействие с концентратором ресурсов и реализует необходимые очереди для управления одновременными целевыми объектами.
Примечание.
Драйвер HID SPI не будет работать в системах, которые не имеют шину SPI, совместимую с платформой SPB. Обратитесь к изготовителю системы, чтобы определить, совместима ли шина SPI на системе устройства с платформой SPB.
Драйвер контроллера GPIO
Контроллер ввода и вывода общего назначения (GPIO) обеспечивает прерывания с устройства по протоколу GPIO. Часто это простой подчиненный компонент, использующий пины GPIO для сигнала о новых данных или других событиях. GPIO также может управлять устройством с помощью подходов, отличных от канала SPI.
Концентратор ресурсов
Подключения на платформе SoC обычно не обнаруживаются, так как на автобусах, используемых в SoC, нет стандартов перечисления устройств. В результате эти устройства должны быть статически определены в расширенной конфигурации и интерфейсе питания (ACPI). Кроме того, компоненты часто имеют несколько зависимостей, охватывающих несколько автобусов, в отличие от строгой структуры дерева ветвления.
Концентратор ресурсов — это прокси-сервер, который управляет подключениями между всеми устройствами и контроллерами шины. Драйвер HIDSPI использует концентратор ресурсов для перенаправки запросов, открытых устройством, на соответствующий драйвер контроллера. Дополнительные сведения о концентраторе ресурсов см . в разделе идентификаторов подключений для подключенных устройств SPB.
Расширение класса HIDSPI (HIDSPICx)
Для реализации, требующей большей производительности или интеграции, можно разработать пользовательский кремний для обработки транзакций HIDSPI. Для этого расширение класса HIDSPICx предоставляется в Windows. HIDSPICx позволяет разрабатывать пользовательский драйвер контроллера HWA HIDSPI без использования SpbCx.
Для устройств HWA поставщик предоставляет драйвер клиента, отвечающий за реализацию интерфейса, определенного расширением класса, и обмен данными с расширением класса.