Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Normalmente, un puerto serie administrado por SerCx2 está conectado permanentemente a un dispositivo periférico. Este dispositivo se controla mediante un controlador periférico que envía solicitudes de E/S al puerto serie. Estas solicitudes transfieren datos hacia y desde el dispositivo y configuran el estado del puerto serie. Las solicitudes de E/S enviadas por el controlador periférico se controlan conjuntamente mediante SerCx2 y un controlador de controlador serie asociado.
Con frecuencia, los controladores serie se encuentran en sistemas en un chip (SoC) integrados. Algunos ejemplos de dispositivos periféricos que podrían estar conectados al puerto serie de un controlador serie en un chip SoC incluyen dispositivos GPS, LAN inalámbrico, cámara y Bluetooth.
El controlador periférico para el dispositivo periférico conectado en serie suele ser un controlador deKernel-Mode Driver Framework (KMDF) o User-Mode Driver Framework (UMDF). Para comunicarse con este dispositivo, el controlador periférico primero debe abrir una conexión lógica al controlador serie y recibir un identificador de archivo al que el controlador puede enviar solicitudes de E/S. Para obtener más información, consulte Apertura de un puerto serie de SerCx2-Managed.
En esta página
- Arquitectura del controlador serie
- Ruta de acceso de solicitud de E/S
- Ruta de acceso de interrupción
Arquitectura del controlador serie
En el diagrama de bloques siguiente se muestran las capas de software y hardware que forman las rutas de comunicación entre un dispositivo periférico (en la parte inferior del diagrama) y el controlador periférico de este dispositivo (en la parte superior del diagrama). En este ejemplo, el dispositivo periférico está conectado al puerto del controlador serie y a una patilla de interrupción en el controlador GPIO.
El controlador periférico de este ejemplo es un controlador UMDF que envía solicitudes de E/S al dispositivo periférico. Estas solicitudes se mueven por la ruta de comunicación que se muestra en el lado izquierdo del diagrama. Las solicitudes se controlan mediante SerCx2 y el controlador de puerto serie. El controlador periférico puede solicitar operaciones de E/S que establezcan la configuración de hardware del puerto serie (por ejemplo, cambiar la velocidad de baudios) y que transfieran datos hacia y desde el dispositivo periférico a través del puerto serie. Para obtener más información, consulte Ruta de acceso de solicitud de E/S.
Las interrupciones del dispositivo periférico se desplazan hacia arriba a través de la ruta de comunicación en el lado derecho del diagrama anterior. Como se muestra en la esquina inferior derecha de este diagrama, el pin de interrupción del dispositivo periférico está conectado a un pin de un controlador de E/S de uso general (GPIO). Este pin GPIO está configurado para recibir señales de interrupción del dispositivo periférico. En una plataforma de hardware basada en SoC, un controlador GPIO suele desempeñar el papel del controlador de interrupción programable. Para obtener más información, consulte Ruta de acceso de interrupción.
Los dos bloques que se muestran en gris en el diagrama son módulos proporcionados por el sistema. La extensión de marco gpIO (GpioClx) está disponible a partir de Windows 8. Al igual que SerCx2, GpioClx es una extensión de KMDF. GpioClx realiza funciones que son comunes a una variedad de controladores GPIO. GpioClx funciona con un controlador de controlador GPIO que administra todas las operaciones específicas del hardware en el controlador GPIO. Para obtener más información, consulte Información general sobre la compatibilidad con controladores GPIO.
Ruta de solicitud de acceso de E/S
Para transmitir datos al dispositivo periférico, el controlador periférico envía una solicitud de escritura (IRP_MJ_WRITE) al controlador serie. Para recibir datos del dispositivo periférico, el controlador periférico envía una solicitud de lectura (IRP_MJ_READ) al controlador serie.
Además, Windows define un conjunto de solicitudes de control de E/S de dispositivo (IOCTLs) que el controlador periférico puede usar para realizar diversas operaciones de control de E/S específicas de los controladores serie. A continuación se muestran ejemplos de operaciones de control de E/S que el controlador periférico puede solicitar:
- Establezca la velocidad de baudios a la que el puerto serie transmite y recibe datos.
- Establezca los intervalos de tiempo de espera para las solicitudes de lectura y escritura.
- Especifique un conjunto de eventos de hardware en el puerto serie para el que el controlador periférico recibe notificaciones.
SerCx2 admite muchos de los mismos IOCTL serie que el controlador serie integrado, Serial.sys, y la versión 1 de la extensión del marco serie (SerCx). Para obtener más información:
- Consulte la tabla de la interfaz de solicitud de E/S serie para determinar si SerCx2 admite un IOCTL serie determinado.
- Consulte Serial Device Control Requests para obtener descripciones detalladas de todos los IOCTLs serie definidos por la interfaz de solicitud de E/S serie de Windows.
- Consulte Introducción a los controladores de serie para obtener una breve introducción a Serial.sys, SerCx y SerCx2.
Ruta de acceso de interrupción
Como se muestra en el diagrama de arquitectura del controlador serie , el dispositivo periférico usa el pin GPIO para enviar interrupciones del dispositivo al controlador periférico. En respuesta a una señal de interrupción del dispositivo periférico, el controlador GPIO señala una interrupción de hardware (denominada interrupción principal ) al procesador. El sistema operativo dirige esta interrupción al ISR de GpioClx. A continuación, GpioClx identifica qué patilla GPIO provocó la interrupción y busca el identificador de interrupción del sistema global (GSI) para la interrupción virtual (denominada interrupción secundaria ) desde el dispositivo periférico. GpioClx suministra el GSI al HAL, y el HAL invoca al ISR del controlador periférico. Para controlar la interrupción, el controlador periférico normalmente envía una o varias solicitudes de E/S al dispositivo periférico mediante SerCx2 y el controlador de controlador serie. Para obtener más información sobre las interrupciones principales y secundarias, consulte Interrupciones gpIO.
Las interrupciones de GPIO son solo una manera de que el controlador periférico reciba notificaciones de eventos de hardware en el dispositivo periférico. Otra manera es que el controlador periférico solicite notificaciones desde SerCx2 y el controlador del controlador serie cuando se produzcan determinados tipos de eventos de hardware en el puerto serie. Por ejemplo, el controlador periférico puede pedir que se notifique cuando el controlador serie recibe datos serie del dispositivo periférico. Para solicitar estas notificaciones, el controlador periférico envía una solicitud IOCTL_SERIAL_SET_WAIT_MASK al dispositivo periférico para especificar un conjunto de eventos que se van a supervisar y, a continuación, envía una solicitud de IOCTL_SERIAL_WAIT_ON_MASK para empezar a escuchar estos eventos. Estas solicitudes se controlan mediante SerCx2, con ayuda del controlador de serie. Para obtener más información sobre los tipos de eventos que puede supervisar el controlador periférico, consulte SERIAL_EV_XXX que se describen en IOCTL_SERIAL_SET_WAIT_MASK.
Sin embargo, el controlador serie solo puede detectar eventos de hardware cuando está en estado de alimentación del dispositivo D0. Si el controlador serie está en un estado de baja potencia, el controlador periférico no puede confiar en las notificaciones del controlador serie para saber cuándo, por ejemplo, el dispositivo periférico tiene nuevos datos para que el controlador lea. En este caso, el dispositivo periférico debe enviar una señal de interrupción (o, quizás, una señal de reactivación) a través de un pin GPIO. Un controlador GPIO consume muy poca potencia y normalmente permanece activo después de que la mayoría de los demás dispositivos hayan entrado en estados de bajo consumo.