SPB(Simple Peripheral Bus) 드라이버 디자인 가이드

이 섹션에서는 간단한 SPB( 주변 버스 ) 컨트롤러 디바이스 또는 SPB에 연결된 주변 디바이스용 드라이버를 작성하는 방법을 설명합니다. SPB 범주에는 I²C 및 SPI와 같은 버스가 포함됩니다. SPB 컨트롤러 디바이스용 하드웨어 공급업체는 컨트롤러의 하드웨어 기능을 관리하는 SPB 컨트롤러 드라이버를 제공합니다. 이 드라이버는 유사한 컨트롤러 디바이스 제품군을 지원할 수 있습니다. SPB 연결 주변 장치용 하드웨어 공급업체는 주변 디바이스의 하드웨어 기능을 관리하는 SPB 주변 장치 드라이버를 제공합니다. 이 드라이버는 호환되는 SPB를 제공하는 다양한 하드웨어 플랫폼에서 주변 장치 제품군을 지원할 수 있습니다.

Windows 8 이전 버전의 Windows에서 운영 체제는 플랫폼 펌웨어를 통해서만 간접적으로 PC 마더보드의 SPB 연결 디바이스에서 정보를 얻었습니다. Windows 8 시작하여 하드웨어 공급업체는 Windows 드라이버를 제공하여 SPB 컨트롤러 및 SPB에 연결된 주변 장치를 직접 제어하고 운영 체제 및 애플리케이션에서 이러한 디바이스를 사용할 수 있도록 할 수 있습니다. 자세한 내용은 SPB 컨트롤러 드라이버SPB 주변 장치 드라이버를 참조하세요.

SPB는 저속 주변 장치를 마더보드 칩셋 및 System on a Chip(SoC) 모듈에 연결하는 데 자주 사용됩니다. 통합 회로를 사용하려면 시계 주기당 여러 비트의 데이터를 전송하는 병렬 버스보다 직렬 버스에 연결하는 데 필요한 핀 수가 적습니다. 일반적으로 SPB는 낮은 핀 수와 간단한 연결이 데이터 전송 속도보다 더 중요한 비용에 민감한 애플리케이션에서 사용됩니다. SPB는 저속으로 실행되며 전기 연결이 거의 필요하지 않으므로 배터리 전원을 보존해야 하는 애플리케이션에서 자주 사용됩니다.

예를 들어 노트북 컴퓨터의 PC 마더보드는 I²C 버스를 사용하여 배터리 잔량을 모니터링하는 저속 디바이스와 통신할 수 있습니다. 마찬가지로, 스마트폰 또는 기타 모바일 디바이스의 SoC 모듈은 I²C 버스를 사용하여 가속도계, GPS 디바이스 또는 온도 센서와 같은 센서 디바이스에 연결할 수 있습니다.

SPB는 플러그 앤 플레이 버스가 아닙니다. 주변 장치 디바이스는 일반적으로 SPB에 고정 연결되어 있으며 제거할 수 없습니다. SPB의 슬롯에서 주변 장치를 분리할 수 있더라도 슬롯은 일반적으로 이 디바이스 전용입니다. 시스템을 시작하는 동안 하드웨어 플랫폼의 ACPI 펌웨어는 플러그 앤 플레이 관리자에 대한 SPB 연결 주변 디바이스를 열거하고 각 디바이스 전용 하드웨어 리소스를 지정합니다.

이러한 리소스에는 SPB에 대한 디바이스의 연결을 식별하는 연결 ID가 포함되어 있습니다. 연결 ID는 SPB 컨트롤러가 디바이스에 대한 연결을 설정하는 데 필요한 정보(예: 버스 주소 및 버스 클록 빈도)를 캡슐화합니다. 다른 하드웨어 리소스에는 드라이버가 ISR을 연결하는 인터럽트를 포함할 수 있습니다. 그러나 디바이스의 하드웨어 리소스에는 디바이스 레지스터에 대한 메모리가 포함되지 않습니다. SPB 연결 주변 장치는 메모리가 매핑되지 않으며 SPB를 통해서만 액세스할 수 있습니다. 자세한 내용은 SPB-Connected 주변 장치에 대한 연결 ID를 참조하세요.

SPB는 주변 장치에서 프로세서로 인터럽트 요청을 전달하는 버스 관련 수단을 제공하지 않습니다. 대신 SPB 연결 주변 장치는 SPB 및 SPB 컨트롤러 외부에 있는 별도의 하드웨어 경로를 통해 인터럽트 신호를 보냅니다. SPB에 연결된 주변 디바이스에 대한 ISR(인터럽트 서비스 루틴)은 SPB를 통해 디바이스의 하드웨어 레지스터에 직렬로 액세스하기 위해 I/O 요청을 동기적으로 보낼 수 있도록 IRQL = PASSIVE_LEVEL 실행해야 합니다. 자세한 내용은 SPB-Connected 주변 장치의 인터럽트 를 참조하세요.