Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SerCx2 работает вместе с драйвером последовательного контроллера, чтобы обеспечить связь между периферийным драйвером и последовательным периферийным устройством. Как правило, последовательный контроллер интегрирован в систему на микросхеме (SoC) для обеспечения связи с низким числом контактов с периферийным устройством, которое является внешним для микросхемы SoC, но примечено к той же печатной доске.
На следующей схеме показан путь связи между последовательно подключенным периферийным устройством и драйвером для этого устройства. Этот периферийный драйвер выполняется в режиме ядра или пользовательском режиме и отправляет запросы ввода-вывода в последовательный порт, к которому подключено периферийное устройство.
SerCx2 и драйвер последовательного контроллера выполняются в режиме ядра и взаимодействуют друг с другом через интерфейс драйвера устройств SerCx2 (DDI). Драйвер последовательного контроллера вызывает методы поддержки драйверов, реализованные SerCx2. SerCx2 вызывает функции обратного вызова событий, реализованные драйвером последовательного контроллера.
Как правило, аппаратные регистры последовательного контроллера отображаются в памяти. Драйвер последовательного контроллера напрямую обращается к этим регистрам для настройки последовательного порта и передачи данных на периферийное устройство, подключенное к последовательному порту. Для более длительной передачи данных SerCx2 обычно использует передачу DMA (не показанную на предыдущей схеме).
Сведения, необходимые для открытия логического подключения к периферийным устройствам, инкапсулируются в специальном типе аппаратного ресурса, который называется идентификатором подключения. Дополнительные сведения см. в разделе идентификаторы подключений для последовательно подключенных периферийных устройств.
Как правило, только драйверы отправляют запросы ввода-вывода непосредственно последовательному контроллеру. Когда приложению в режиме пользователя необходимо взаимодействовать с последовательным подключенным периферийным устройством, периферийный драйвер для устройства выступает в качестве посредника между приложением и устройством. Если приложению необходимо передать данные на периферийное устройство или из него, приложение отправляет запрос на запись (IRP_MJ_WRITE) или запрос чтения (IRP_MJ_READ) на периферийный драйвер, а драйвер периферийных устройств отвечает, отправляя соответствующий запрос на запись или чтение в последовательный контроллер. Кроме того, периферийный драйвер может отправлять запросы управления устройствами (IOCTLs) для настройки последовательного порта. Для получения списка IOCTL, поддерживаемых SerCx2, см. раздел "Интерфейс запроса последовательного ввода-вывода".
Периферийный драйвер, отправляющий запросы ввода-вывода в последовательный контроллер, является драйвером режима ядра, использующим Kernel-Mode Driver Framework (KMDF) или драйвером пользовательского режима, использующим User-Mode Driver Framework (UMDF). SerCx2 управляет очередями запросов ввода-вывода, отправленных последовательному контроллеру периферийным драйвером.
В ответ на запрос на чтение или запись SerCx2 инициирует одну или несколько транзакций ввода-вывода для перемещения данных между последовательным контроллером и буфером данных в запросе. Каждая транзакция ввода-вывода использует программируемый ввод-вывод (PIO) или DMA для передачи данных между последовательным контроллером и буфером данных в запросе. Типы транзакций ввода-вывода, поддерживаемые драйвером последовательного контроллера, зависят от аппаратных возможностей последовательного контроллера. Дополнительные сведения см. в разделе Обзор транзакций ввода-вывода SerCx2.