Partilhar via


Visão geral da arquitetura do SerCx2

O SerCx2 funciona em conjunto com um driver de controlador serial para habilitar a comunicação entre um driver periférico e um dispositivo periférico conectado serialmente. Normalmente, o controlador serial é integrado a um chip SoC (System on a Chip) para fornecer comunicação de baixa contagem de pinos com um dispositivo periférico externo ao chip SoC, mas que é vendido para a mesma placa de circuito impressa.

O diagrama a seguir mostra o caminho de comunicação entre um dispositivo periférico conectado serialmente e o driver deste dispositivo. Esse driver periférico é executado no modo kernel ou no modo de usuário e envia solicitações de E/S para a porta serial à qual o dispositivo periférico está conectado.

Diagrama mostrando o caminho de comunicação entre um dispositivo periférico conectado serialmente e seu driver, incluindo SerCx2 e o driver do controlador serial.

O SerCx2 e o driver do controlador serial são executados no modo kernel e se comunicam entre si por meio da DDI (interface do driver de dispositivo) SerCx2. O driver do controlador serial chama métodos de suporte ao driver implementados pelo SerCx2. O SerCx2 chama funções de retorno de chamada de evento implementadas pelo driver do controlador serial.

Normalmente, os registros de hardware do controlador serial são mapeados pela memória. O driver do controlador serial acessa diretamente esses registros para configurar a porta serial e transferir dados de e para o dispositivo periférico conectado à porta serial. Para transferências de dados mais longas, o SerCx2 normalmente usa transferências de DMA (não mostradas no diagrama anterior).

As informações de que o driver periférico precisa para abrir uma conexão lógica com o dispositivo periférico são encapsuladas em um tipo especial de recurso de hardware que é chamado de ID de conexão. Para obter mais informações, consulte IDs de conexão para dispositivos periféricos serialmente conectados.

Normalmente, somente os drivers enviam solicitações de E/S diretamente para um controlador serial. Quando um aplicativo de modo de usuário precisa se comunicar com um dispositivo periférico serialmente conectado, o driver periférico do dispositivo atua como intermediário entre o aplicativo e o dispositivo. Se o aplicativo precisar transferir dados de ou para o dispositivo periférico, o aplicativo enviará uma solicitação de gravação (IRP_MJ_WRITE) ou uma solicitação de leitura (IRP_MJ_READ) para o driver periférico e o driver periférico responderá enviando uma solicitação de gravação ou leitura correspondente ao controlador serial. Além disso, o driver periférico pode enviar IOCTLs (solicitações de controle de E/S) do dispositivo para configurar a porta serial. Para obter uma lista de IOCTLs compatíveis com o SerCx2, consulte Interface de solicitação de E/S serial.

O driver periférico que envia solicitações de E/S para o controlador serial é um driver no modo kernel que usa o KMDF (Kernel-Mode Driver Framework ) ou um driver de modo de usuário que usa o UMDF ( User-Mode Driver Framework ). O SerCx2 gerencia as filas de solicitações de E/S enviadas ao controlador serial pelo driver periférico.

Em resposta a uma solicitação de leitura ou gravação, o SerCx2 inicia uma ou mais transações de E/S para mover dados entre o controlador serial e o buffer de dados na solicitação. Cada transação de E/S usa E/S (E/S) programada (PIO) ou DMA para transferir dados entre o controlador serial e o buffer de dados na solicitação. Os tipos de transações de E/S compatíveis com um driver de controlador serial dependem dos recursos de hardware do controlador serial. Para obter mais informações, consulte Visão geral das transações de E/S do SerCx2.