다음을 통해 공유


I2C 전송을 통해 HID에 대한 아키텍처 및 개요

이 문서에서는 I2C 전송을 통해 HID를 지원하는 디바이스의 드라이버 스택에 대해 설명합니다.

아키텍처 및 개요

HID I2C 드라이버 스택은 Microsoft에서 제공하는 기존 및 새 구성 요소와 I2C 실리콘 제조업체에서 제공하는 구성 요소로 구성됩니다. 다음 그림에서는 스택 및 이러한 구성 요소를 보여 줍니다.

는 i2c 드라이버 스택을 통해 숨겨져 있습니다.

Windows 8은 운영 체제와 효과적으로 통신할 수 있는 저전력의 간단한 버스를 위한 인터페이스를 제공합니다. 이 인터페이스는 간단한 SPB(주변 버스)라고 하며 I2C(Inter-Integrated Circuit) 및 SPI(직렬 주변 장치 인터페이스)와 같은 버스를 지원합니다. SPB에 대한 자세한 내용은 간단한 주변 장치 버스를 참조 하세요.

Windows 8은 I2C를 통해 HID에 대한 프로토콜 사양 버전 1.0을 구현하는 KMDF 기반 HID 미니포트 드라이버를 제공합니다. 이 드라이버의 이름은 HIDI2C.sys. Windows는 ACPI(고급 구성 및 전원 인터페이스)에 의해 노출되는 호환 ID 일치를 기반으로 이 드라이버를 로드합니다. 드라이버는 HID IOCTL 및 API 집합을 사용하는 소프트웨어에 HID IOCTLs 애플리케이션 수준 호환성을 사용하는 앱을 보장합니다. 디바이스는 주의가 필요하거나 데이터가 있는 경우 호스트를 어설션합니다. 그러나 어설션이 발생하기 전에 GPIO 연결이 있어야 합니다.

참고 HIDI2C.sys 디바이스 드라이버는 I2C 버스만 지원합니다. Windows 8에서는 SPI, SMBUS 또는 기타 저전력 버스를 지원하지 않습니다.

I2C 컨트롤러 드라이버

I2C 컨트롤러 드라이버는 읽기 및 쓰기 작업을 수행하기 위해 SPB(직렬 주변 장치 버스) IOCTL 인터페이스를 노출합니다. 이 드라이버는 실제 컨트롤러 내장 함수(예: I2C)를 제공합니다. 컨트롤러 드라이버를 대신하여 SPB 클래스 확장은 리소스 허브와의 모든 상호 작용을 처리하고 동시 대상을 관리하는 데 필요한 큐를 구현합니다.

HID I2C 드라이버는 SPB 플랫폼과 호환되는 I2C 버스가 없는 시스템에서 작동하지 않습니다. 시스템 제조업체에 문의하여 디바이스 시스템의 I2C 버스가 SPB 플랫폼과 호환되는지 확인합니다.

GPIO 컨트롤러 드라이버

GPIO(범용 입력/출력) 컨트롤러는 GPIO를 통해 디바이스에서 인터럽트(인터럽트)를 제공합니다. 이 컨트롤러는 종종 GPIO 핀을 사용하여 Windows에 새 데이터 또는 기타 이벤트의 신호를 표시하는 간단한 하위 구성 요소입니다. GPIO는 I2C 채널 이외의 방법으로 디바이스를 제어할 수도 있습니다.

리소스 허브

SoC 플랫폼에서 사용되는 버스에 디바이스 열거에 대한 표준이 없기 때문에 일반적으로 SoC 플랫폼의 연결은 검색할 수 없습니다. 따라서 이러한 디바이스는 ACPI(고급 구성 및 전원 인터페이스)에서 정적으로 정의되어야 합니다. 또한 구성 요소에는 엄격한 분기 트리 구조가 아닌 여러 버스에 걸쳐 여러 종속성이 있는 경우가 많습니다.

리소스 허브는 모든 디바이스 및 버스 컨트롤러 간의 연결을 관리하는 프록시입니다. HIDI2C 드라이버는 리소스 허브를 사용하여 디바이스 열기 요청을 적절한 컨트롤러 드라이버로 다시 라우팅합니다. 리소스 허브에 대한 자세한 내용은 SPB 연결된 디바이스에 대한 연결 ID를 참조 하세요.