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


Функции драйверов последовательного контроллера SerCx2-Based

SerCx2 — это расширение Kernel-Mode Driver Framework (KMDF), которое имеет специальные функции для поддержки драйверов последовательного контроллера. Дополнительные сведения о KMDF см. в статье Использование WDF для разработки драйвера . Драйвер последовательного контроллера на основе SerCx2 — это драйвер KMDF, который использует методы и обратные вызовы в KMDF для выполнения универсальных операций с драйвером и взаимодействует с SerCx2 для выполнения операций, относящихся к драйверам последовательного контроллера.

Как правило, последовательные контроллеры совместимы на аппаратном уровне с универсальными асинхронными приемниками и передатчиками (UART) 16550. UART используются с первых дней персональных вычислений для управления последовательные порты, расположенные на настольных компьютерах. В последнее время последовательные контроллеры содержатся в интегральных каналах Системы на микросхеме (SoC) для обеспечения связи с другими интегральными каналами с низким числом контактов. В аппаратной платформе на основе SoC "последовательный порт", в который клиент отправляет запросы ввода-вывода, представляет собой просто набор контактов последовательного интерфейса на микросхеме SoC. Дополнительные сведения см. в статье Общие сведения о драйверах последовательного контроллера.

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

Драйвер последовательного контроллера взаимодействует с SerCx2 через интерфейс драйвера устройства (DDI). SerCx2 DDI состоит из двух частей:

  • Набор методов поддержки драйверов, реализованных SerCx2 и вызываемых драйвером последовательного контроллера.
  • Набор функций обратного вызова событий, реализованных драйвером последовательного контроллера и вызываемых SerCx2.

Подробные описания методов и обратных вызовов в SerCx2 DDI см. в справочнике по расширению serial Framework (SerCx2) версии 2 в разделах заголовков sercx.h .

Хотя поставщик оборудования может написать автономный драйвер последовательного контроллера, для этого требуются значительные усилия. Для сравнения, разработка драйвера последовательного контроллера, использующего SerCx2, проще и, как правило, приводит к тому, что драйвер гораздо меньше и надежнее.

SerCx2 управляет следующими задачами от имени драйвера контроллера:

  • Операции чтения и записи
  • Обнаружение времени ожидания последовательного ввода-вывода
  • События оборудования
  • Системные передачи DMA (если поддерживаются системные транзакции DMA)
  • Переход в состояния устройства с низким энергопотреблением и из нее
  • Отмена запросов ввода-вывода (за исключением пользовательских транзакций ввода-вывода)

Для управления операциями чтения и записи SerCx2 преобразует запросы IRP_MJ_READ и IRP_MJ_WRITE от клиентов в относительно простые транзакции ввода-вывода для обработки драйвером последовательного контроллера. Дополнительные сведения см. в разделе Транзакции ввода-вывода SerCx2.

SerCx2 входит в состав Windows в качестве компонента с именем Sercx2.sys. Драйвер последовательного контроллера статически связывается с библиотекой SerCx2 Sercxstubs.lib (версия 2.0) и во время выполнения взаимодействует с Sercx2.sys. DDI SerCx2 определяется в файле заголовка 2.0\Sercx.h. Sercxstubs.lib и Sercx.h доступны в комплекте драйверов Windows для Windows 8.1.