Bus periférico simple (SPB)
Nota
Este artículo contiene referencias al término esclavo, un término que Microsoft ya no usa. Cuando se quite el término del software, se quitará también del artículo.
En este tema se tratan las recomendaciones de Simple Peripheral Bus en Windows 10. Windows incluye compatibilidad con buses simples y de bajo consumo, como el circuito integrado (I²C) y (I²C) y la interfaz periférica simple (SPI), mediante extensiones de marco de la arquitectura del marco de controladores del modo kernel (KMDF). Los controladores del controlador no se proporcionan en la caja. Los proveedores de conjuntos de chips, los OEM o los IHD deben desarrollar un controlador de controlador implementado en KMDF. La arquitectura proporciona topologías de configuración de dispositivos flexibles que admiten el uso simultáneo de buses para transacciones de control y datos, así como GPIO para señalización e interrupciones. La definición completa del dispositivo se define a través de Advanced Configuration and Power Interface (ACPI).
En Windows, los autobuses se admiten a través de controladores de controlador KMDF. Con la ayuda de la plataforma KMDF, el controlador del controlador se usa principalmente para definir las interfaces específicas del hardware necesarias para habilitar la función del controlador.
La infraestructura de Windows admite dispositivos que comparten buses, buses multiplexados en la misma línea y configuración de dispositivos a través de ACPI. Windows usa ACPI como medio principal para la identificación, configuración y control del dispositivo.
En la tabla siguiente se resume la compatibilidad con el bus periférico simple.
En bus | Compatibilidad con bandeja de entrada | Extensión de marco proporcionada | Terceros permitidos | Detalles adicionales de compatibilidad |
---|---|---|---|---|
I²C | No | Sí | Sí, mediante la extensión SPB Framework | Solo maestro No se admite "Llamada general" Se admite el acceso directo a memoria (DMA) |
SPI | No | Sí | Sí, mediante la extensión SPB Framework | Solo maestro, no se admite "Llamada general" Dúplex completo admitido DMA compatible |
MIPI-HSI | No | No | Sí, con Windows Driver Foundation (WDF) | |
MIPI-SLIMbus | No | No | Sí, mediante WDF | |
MIPI-CSI | No | No | Sí, mediante WDF | |
UART | No | Sí | Sí, mediante la extensión Serial Framework (SerCx2) | DMA compatible Modos de transferencia personalizados compatibles con SerCx2 |
Consideraciones de diseño para SPB
A continuación se muestran algunas consideraciones genéricas para SPB:
SPB no es un bus de Plug and Play. Los dispositivos periféricos suelen tener conexiones fijas a un SPB y no se pueden quitar. Los fabricantes del sistema deben garantizar información precisa en ACPI para enumerar los dispositivos periféricos conectados a SPB para el administrador de Plug and Play y especifica los recursos de hardware dedicados a cada dispositivo.
No hay compatibilidad con interrupciones en banda para SPB. La mayoría de los periféricos admiten la señalización de dispositivos a través de un mecanismo de interrupción independiente (a menudo basado en GPIO) y se asignan con precisión en ACPI.
Windows proporciona compatibilidad con la extensión de clase SPB (spbcx.sys) en Windows 8 y versiones posteriores. Los asociados de SoC son responsables de desarrollar y redistribuir su controlador SPB Controller adecuado.
Los controladores periféricos para dispositivos SPB suelen ser proporcionados por los asociados de dispositivos SPB. Microsoft proporciona un controlador de clase para dispositivos SPB para HID a través de I²C (hidi2c.sys).
Las clases de dispositivo pueden proporcionar requisitos de HLK o instrucciones de WEG en torno a los temas siguientes relacionados con I²C:
- Uso compartido del controlador I²C con otros dispositivos
- Velocidad de señalización I²C preferida
- Escenarios de administración y reactivación de energía sobre I²C y GPIO.
Circuito integrado inter (I²C): I²C es el bus principal que se valida como parte de SPB y es muy recomendable en sistemas SoC.
Microsoft proporciona los requisitos del Programa de compatibilidad de hardware de Windows para I²C. Usa el Kit de laboratorio de hardware de Windows (HLK) para probar dispositivos con esos requisitos.
Interfaz periférica simple (SPI): la compatibilidad con SPI es opcional y hasta el asociado de SoC. El Programa de compatibilidad de hardware de Windows no contiene ningún requisito específico del bus SPI.
Compatibilidad con SPB entre sistemas
Microsoft admite SPB en sistemas Arm y plataformas x86/x64 (que se ejecutan en configuraciones de S3). Microsoft admite SPB en plataformas que se ejecutan en configuraciones connected standby (CS) y S3.
Póngase en contacto con su proveedor de plataformas para conocer los controladores y el soporte técnico.
Hay una serie de escenarios de dispositivo que aprovechan SPB para la conectividad. I²C está disponible en el modelo de alimentación tradicional CS y S3. Los soC modernos con núcleos de baja potencia en el sensor soC pueden implementar soluciones que no son I²C según sea necesario.
Los dispositivos en muelles o puertos extraíbles también deben seguir las instrucciones sobre los escenarios de acoplamiento, incluidos también en el WEG. Algunos de esos dispositivos pueden tener más sentido sobre buses como USB en lugar de I²C.
Extensión del marco de trabajo DE SPB
La biblioteca de extensiones del marco de trabajo de SPB amplía Windows Driver Framework para admitir controladores SPB. El marco SPB simplifica el desarrollo de un controlador spb y mejora la compatibilidad entre los controladores periféricos y el controlador proporcionando una implementación común de la "mitad superior" del controlador que procesa las solicitudes de E/S (en comparación con la "mitad inferior", controlada por la mitad superior y controla el hardware). La extensión SPB Framework es una biblioteca de extensiones de KMDF. Controla el procesamiento inicial de la solicitud SPB y la secuencia en la que se entregan al controlador del controlador. La extensión del marco SPB está diseñada para admitir buses I²C y SPI, y puede ser adecuado para otros autobuses con semántica similar.
Extensión de marco de trabajo serie
La biblioteca de extensiones del marco de trabajo serie amplía el marco del controlador de Windows para admitir controladores de controlador serie. De forma similar al marco SPB, el marco serie simplifica el desarrollo de un controlador de serie y mejora la compatibilidad entre los controladores periféricos y el controlador proporcionando una implementación común de la "mitad superior" del controlador que procesa las solicitudes de E/S. La extensión del marco de trabajo serie es una biblioteca de extensiones de KMDF. Controla el procesamiento inicial de las llamadas a las API serie y la secuencia en la que se entregan al controlador del controlador. La extensión del marco de trabajo serie está diseñada para admitir los controladores UART modernos y simplificar la implementación y el diagnóstico del controlador.
Requisitos de I²C y UART HLK
Hay requisitos del Programa de compatibilidad de hardware para los controladores I²C y UART. También se están considerando los requisitos de SPI para el futuro. Los requisitos de logotipo están pensados principalmente para los proveedores de silicio soC para el hardware de la interfaz de bus y los controladores de controlador asociados. Los OEM y los OEM no son necesarios para volver a validar el controlador de hardware o controlador, pero son bienvenidos a ejecutar las pruebas si lo desea. Se requieren pasos de configuración especiales para validar estos requisitos. La configuración incluye lo siguiente:
- Un sistema abierto con I²C /UART accesible pins/ports
- Modificaciones en ACPI para exponer el dispositivo de prueba I²C/UART al software
- Un dispositivo de prueba específico (WITT) conectado al sistema bajo validación
Para obtener información adicional sobre la configuración, consulte la documentación del Kit de laboratorio de hardware (HLK).
Controladores periféricos
Los periféricos se enumeran mediante ACPI y, por lo general, son estáticos. Los controladores de función periféricos determinan sus recursos de bus adecuados mediante la interacción con las extensiones de marco. Los periféricos y controladores no son jerárquicos, y los periféricos pueden usar varios SPB, GPIO, Serie y otros buses de alta velocidad. Los controladores periféricos que acceden a dispositivos incrustados, como sensores, dispositivos de entrada, módems y radios, se pueden escribir en modo kernel o modo de usuario. Estos controladores pueden ser portátiles en diferentes configuraciones de placa OEM o ODM siempre que ACPI se actualice correctamente.
Firmware
La configuración acpI del controlador y los parámetros de bus son específicos del proveedor y dependen del controlador en particular. En la tabla siguiente se resume la configuración de ACPI para el controlador y el bus periférico.
En bus | Configuración acpI del controlador | Configuración de ACPI periférico |
---|---|---|
I²C | Direcciones del controlador Configuración de patillas |
Dirección del bus Velocidad de reloj Modo esclavo Modo de direccionamiento |
SPI | Direcciones del controlador Configuración de patillas |
Línea de selección de chip Velocidad de reloj Polaridad del reloj Fase de reloj Modo de conexión Selección de dispositivos Polaridad de selección de dispositivos Modo esclavo |
UART | Dirección del controlador/patilla Configuración de la velocidad de baudios inicial |
Velocidad inicial de baudios Parity Longitud de bit de inicio y detención de bits Método de control de flujo(Hardware/Software/None) Líneas en uso Tamaño del búfer de recepción Tamaño del búfer de transmisión Endian-ness |
Para obtener un ejemplo de ACPI, consulte Cómo obtener la configuración de conexión de un dispositivo. Para obtener más información sobre cómo integrar dispositivos en buses de bajo consumo, consulte Acceso a dispositivos GPIO, I2C y UART.
Herramientas y referencia técnica
Título del recurso | Tipo de contenido | Descripción | Vínculo |
---|---|---|---|
Uso de Windows Driver Framework para crear mejores controladores | Vídeo | Describe cómo WDF puede mejorar la confiabilidad de los controladores y cómo obtener un mejor ahorro de energía e implementar controladores en varias versiones de Windows. | Channel 9 |
Descripción de Low-Power Buses | Vídeo | Muestra cómo integrar un dispositivo en los nuevos buses y crear un controlador. Aprenderá a escribir ACPI para enumerar el periférico y empezar a escribir y probar un controlador periférico. | Channel 9 |
Guía de diseño del marco de trabajo del controlador de Kernel-Mode | Artículo | Presenta Kernel-Mode Driver Framework (KMDF). | MSDN |
Guía de diseño de UMDF 1.x | Artículo | Presenta User-Mode Driver Framework (UMDF). | MSDN |
Programa de compatibilidad de hardware de Windows | Artículo | Proporciona información sobre el Programa de certificación de Windows. | MSDN |