Compartir a través de


Introducción a la arquitectura de SerCx2

SerCx2 funciona junto con un controlador de controlador serie para permitir la comunicación entre un controlador periférico y un dispositivo periférico conectado en serie. Normalmente, el controlador serie se integra en un sistema en un chip (SoC) para proporcionar una comunicación de recuento de patillas baja con un dispositivo periférico externo al chip SoC, pero se solda a la misma placa de circuito impreso.

En el diagrama siguiente se muestra la ruta de comunicación entre un dispositivo periférico conectado en serie y el controlador para este dispositivo. Este controlador periférico se ejecuta en modo kernel o en modo de usuario y envía solicitudes de E/S al puerto serie al que está conectado el dispositivo periférico.

Diagrama que muestra la ruta de comunicación entre un dispositivo periférico conectado en serie y su controlador, incluido SerCx2 y el controlador de controlador serie.

SerCx2 y el controlador de controlador serie se ejecutan en modo kernel y se comunican entre sí a través de la interfaz del controlador de dispositivo (DDI) de SerCx2. El controlador de serie llama a los métodos de compatibilidad con controladores implementados por SerCx2. SerCx2 llama a las funciones de devolución de llamada de eventos implementadas por el controlador del controlador serie.

Normalmente, los registros de hardware del controlador serie están asignados a memoria. El controlador de controlador de serie accede directamente a estos registros para configurar el puerto serie, y para transferir datos hacia y desde el dispositivo periférico que está conectado al puerto serie. Para transferencias de datos más largas, SerCx2 normalmente usa transferencias DMA (no se muestran en el diagrama anterior).

La información que el controlador periférico necesita para abrir una conexión lógica al dispositivo periférico se encapsula en un tipo especial de recurso de hardware que se denomina identificador de conexión. Para obtener más información, consulte Identificadores de conexión para dispositivos periféricos conectados en serie.

Normalmente, solo los controladores envían solicitudes de E/S directamente a un controlador serie. Cuando una aplicación en modo de usuario necesita comunicarse con un dispositivo periférico conectado en serie, el controlador periférico para el dispositivo actúa como intermediario entre la aplicación y el dispositivo. Si la aplicación necesita transferir datos hacia o desde el dispositivo periférico, la aplicación envía una solicitud de escritura (IRP_MJ_WRITE) o una solicitud de lectura (IRP_MJ_READ) al controlador periférico y el controlador periférico responde enviando una solicitud de escritura o lectura correspondiente al controlador serie. Además, el controlador periférico puede enviar solicitudes de control de E/S de dispositivo (IOCTLs) para configurar el puerto serie. Para obtener una lista de las E/S admitidas por SerCx2, consulte Interfaz de solicitud de E/S serie.

El controlador periférico que envía solicitudes de E/S al controlador serie es un controlador en modo kernel que usa el marco de controlador en modo kernel (KMDF) o un controlador en modo usuario que usa el marco de controlador del modo de usuario (UMDF). SerCx2 administra las colas de solicitudes de E/S enviadas al controlador serie por el controlador periférico.

En respuesta a una solicitud de lectura o escritura, SerCx2 inicia una o varias transacciones de E/S para mover datos entre el controlador serie y el búfer de datos de la solicitud. Cada transacción de E/S usa E/S programada (PIO) o DMA para transferir datos entre el controlador serie y el búfer de datos de la solicitud. Los tipos de transacciones de E/S compatibles con un controlador de controlador serie dependen de las funcionalidades de hardware del controlador serie. Para obtener más información, vea Introducción a las transacciones de E/S de SerCx2.