SPB(Simple Peripheral Bus)

참고

이 문서에는 Microsoft에서 더 이상 사용하지 않는 용어인 슬레이브라는 용어에 대한 참조가 포함되어 있습니다. 소프트웨어에서 용어가 제거되면 이 문서에서 해당 용어가 제거됩니다.

이 항목에서는 Windows 10의 Simple Peripheral Bus에 대한 권장 사항에 대해 설명합니다. Windows에는 KMDF(Kernel Mode Driver Framework) 아키텍처의 프레임워크 확장을 사용하는 I²C(Inter Integrated Circuit) 및 SPI(Simple Peripheral Interface)와 같은 저전력의 단순 버스에 대한 지원이 포함되어 있습니다. 컨트롤러 드라이버는 기본 제공되지 않습니다. 칩셋 공급업체, OEM 또는 IHV는 KMDF에서 구현된 컨트롤러 드라이버를 개발해야 합니다. 이 아키텍처는 제어 및 데이터 트랜잭션을 위한 버스의 동시 사용을 지원하는 유연한 디바이스 구성 토폴로지와 신호 및 인터럽트용 GPIO를 제공합니다. 전체 디바이스 정의는 ACPI(고급 구성 및 전원 인터페이스)를 통해 정의됩니다.

Windows에서 버스는 KMDF 컨트롤러 드라이버를 통해 지원됩니다. KMDF 플랫폼의 도움으로 컨트롤러 드라이버는 주로 컨트롤러 기능을 사용하도록 설정하는 데 필요한 하드웨어별 인터페이스를 정의하는 데 사용됩니다.

Windows 인프라는 버스를 공유하는 디바이스, 동일한 라인에서 멀티플렉싱되는 버스, ACPI를 통한 디바이스 구성을 지원합니다. Windows는 ACPI를 디바이스 식별, 구성 및 제어의 기본 수단으로 사용합니다.

다음 표에는 Simple Peripheral Bus에 대한 지원이 요약되어 있습니다.

버스 인박스 지원 프레임워크 확장 제공 타사 허용 추가 지원 세부 정보
I²C 예, SPB Framework 확장 사용

마스터 전용

"일반 호출"은 지원되지 않음

DMA(직접 메모리 액세스)가 지원됨

SPI 예, SPB Framework 확장 사용

마스터 전용, "일반 호출"은 지원되지 않음

전이중 지원됨

DMA 지원됨

MIPI-HSI 예, WDF(Windows 드라이버 파운데이션) 사용
MIPI-SLIMbus 예, WDF 사용
MIPI-CSI 예, WDF 사용
UART 예, 직렬 프레임워크 확장(SerCx2) 사용

DMA 지원됨

사용자 지정 전송 모드가 SerCx2로 지원됨

SPB에 대한 디자인 고려 사항

다음은 SPB에 대한 몇 가지 일반적인 고려 사항입니다.

  • SPB는 플러그 앤 플레이 버스가 아닙니다. 주변 장치 디바이스는 일반적으로 SPB에 고정 연결되어 있으며 제거할 수 없습니다. 시스템 제조업체는 플러그 앤 플레이 관리자용 SPB 연결 주변 장치 디바이스를 열거하기 위해 ACPI에서 정확한 정보를 확인하고 각 디바이스 전용 하드웨어 리소스를 지정해야 합니다.

  • SPB에 대한 대역 내 인터럽트 지원은 없습니다. 대부분의 주변 장치는 별도의 인터럽트(종종 GPIO 기반) 메커니즘을 통해 디바이스 신호를 지원하고 ACPI에서 정확하게 매핑됩니다.

  • Windows는 Windows 8 이상에서 SPB 클래스 확장(spbcx.sys)에 대한 지원을 제공합니다. SoC 파트너는 적절한 SPB 컨트롤러 드라이버를 개발하고 재배포할 책임이 있습니다.

  • SPB 디바이스용 주변 장치 드라이버는 일반적으로 SPB 디바이스 파트너가 제공합니다. Microsoft는 HID over I²C(hidi2c.sys)용 SPB 디바이스용 클래스 드라이버를 하나 제공합니다.

  • 디바이스 클래스는 I²C와 관련된 다음 항목에 대한 HLK 요구 사항 또는 WEG 지침을 제공할 수 있습니다.

    • 다른 디바이스와 I²C 컨트롤러 공유
    • 선호하는 I²C 신호 속도
    • I²C 및 GPIO를 통한 전원 관리 및 절전 모드 해제 시나리오.
  • I²C(Inter Integrated Circuit): I²C는 SPB의 일부로 검증된 기본 버스이며 SoC 시스템에서 적극 권장됩니다.

    Microsoft는 I²C에 대한 Windows 하드웨어 호환성 프로그램 요구 사항을 제공합니다. Windows HLK(Hardware Lab Kit)를 사용하여 이러한 요구 사항에 대해 디바이스를 테스트합니다.

  • SPI(Simple Peripheral Interface): SPI 지원은 선택 사항이며 SoC 파트너에게 달려 있습니다. Windows 하드웨어 호환성 프로그램에는 SPI 버스와 관련된 요구 사항이 포함되어 있지 않습니다.

시스템 간 SPB 지원

Microsoft는 Arm 시스템 및 x86/x64 플랫폼(S3 구성에서 실행)에서 SPB를 지원합니다. Microsoft는 CS(연결된 대기) 및 S3 구성 모두에서 실행되는 플랫폼에서 SPB를 지원합니다.

드라이버 및 지원을 받으려면 플랫폼 공급자에게 문의하세요.

연결에 SPB를 활용하는 여러 디바이스 시나리오가 있습니다. I²C는 CS 및 S3 기존 전원 모델에서 사용할 수 있습니다. on-SoC 센서 저전력 코어를 사용하는 최신 SoC는 필요에 따라 비 I²C 솔루션을 구현할 수 있습니다.

이동식 도크/포트의 디바이스도 WEG에 포함된 도킹 시나리오에 대한 지침을 따라야 합니다. 이러한 디바이스 중 일부는 I²C보다는 USB와 같은 버스에 더 적합할 수 있습니다.

SPB 프레임워크 확장

SPB 프레임워크 확장 라이브러리는 드라이버 프레임워크를 확장하여 SPB 드라이버를 지원합니다. SPB 프레임워크는 SPB 컨트롤러 드라이버 개발을 간소화하고 I/O 요청을 처리하는 드라이버의 "상반부"에 대한 일반적인 구현을 제공하여 주변 장치 드라이버와 컨트롤러 드라이버 간의 호환성을 향상시킵니다(상반부에 의해 구동되고 하드웨어를 제어하는 "하반부" 대비). SPB 프레임워크 확장은 KMDF 확장 라이브러리입니다. SPB 요청의 선행 처리 및 컨트롤러 드라이버에 전달되는 시퀀스를 처리합니다. SPB 프레임워크 확장은 I²C 및 SPI 버스를 지원하도록 설계되었으며 유사한 의미 체계를 가진 다른 버스에 적합할 수 있습니다.

직렬 프레임워크 확장

직렬 프레임워크 확장 라이브러리는 Windows 드라이버 프레임워크를 확장하여 직렬 컨트롤러 드라이버를 지원합니다. SPB 프레임워크와 유사하게 직렬 프레임워크는 직렬 컨트롤러 드라이버 개발을 간소화하고 I/O 요청을 처리하는 드라이버의 "상반부"에 대한 일반적인 구현을 제공하여 주변 장치 드라이버와 컨트롤러 드라이버 간의 호환성을 향상시킵니다. 직렬 프레임워크 확장은 KMDF 확장 라이브러리입니다. 직렬 API에 대한 호출의 선행 처리 및 컨트롤러 드라이버에 전달되는 시퀀스를 처리합니다. 직렬 프레임워크 확장은 최신 UART 컨트롤러를 지원하고 컨트롤러 드라이버 구현 및 진단 기능을 간소화하도록 설계되었습니다.

I²C 및 UART HLK 요구 사항

I²C 및 UART 컨트롤러에 대한 하드웨어 호환성 프로그램 요구 사항이 있습니다. SPI에 대한 요구 사항도 향후 고려 중입니다. 로고 요구 사항은 주로 버스 인터페이스 하드웨어 및 관련 컨트롤러 드라이버용 SoC 실리콘 공급업체를 위한 것입니다. OEM 및 ODM은 하드웨어 또는 컨트롤러 드라이버의 유효성을 다시 검사할 필요가 없지만 원하는 경우 테스트를 실행할 수 있습니다. 이러한 요구 사항의 유효성을 검사하려면 특별한 설정 단계가 필요합니다. 설정에는 다음이 포함됩니다.

  • 액세스 가능한 I²C /UART 핀/포트가 있는 개방형 시스템
  • I²C/UART 테스트 디바이스를 소프트웨어에 노출하기 위한 ACPI 수정
  • 유효성 검사 중 시스템에 연결된 특정 테스트 디바이스(WITT)

추가 설정 정보는 HLK(Hardware Lab Kit) 설명서를 참조하세요.

주변 장치 드라이버

주변 장치는 ACPI에 의해 열거되며 일반적으로 정적입니다. 주변 장치 기능 드라이버는 프레임워크 확장과 상호 작용하여 적절한 버스 리소스를 결정합니다. 주변 장치 및 컨트롤러는 계층형이 아니며 주변 장치는 여러 SPB, GPIO, 직렬 및 기타 고속 버스를 사용할 수 있습니다. 센서, 입력 디바이스, 모뎀 및 라디오와 같은 임베디드 디바이스에 액세스하는 주변 장치 드라이버는 커널 모드 또는 사용자 모드로 작성할 수 있습니다. 이러한 드라이버는 ACPI가 적절하게 업데이트되는 한 다양한 ODM 또는 OEM 보드 구성에서 이식할 수 있습니다.

펌웨어

컨트롤러 ACPI 설정 및 버스 매개 변수는 공급업체별로 다르며 특정 컨트롤러에 따라 달라집니다. 다음 표에는 컨트롤러 및 주변 장치 버스에 대한 ACPI 설정이 요약되어 있습니다.

버스 컨트롤러 ACPI 설정 주변 장치 ACPI 설정
I²C

컨트롤러 주소

핀 구성

버스 주소

클록 속도

슬레이브 모드

주소 지정 모드

SPI

컨트롤러 주소

핀 구성

칩 선택 라인

클록 속도

클록 극성

클록 위상

유선 모드

디바이스 선택

디바이스 선택 극성

슬레이브 모드

UART

컨트롤러 주소/핀

초기 전송 속도 구성

초기 전송 속도

Parity

시작 비트 및 정지 비트 길이

흐름 제어 방법(하드웨어/소프트웨어/없음)

사용 중인 라인

수신 버퍼 크기

전송 버퍼 크기

엔디언

ACPI 예제는 디바이스에 대한 연결 설정을 가져오는 방법을 참조하세요. 저전력 버스에 디바이스를 통합하는 방법에 대한 자세한 내용은 GPIO, I2C 및 UART 디바이스 액세스를 참조하세요.

도구 및 기술 참조

리소스 제목 내용 유형 Description 링크
Windows 드라이버 프레임워크를 사용하여 더 나은 드라이버 빌드 동영상 WDF가 드라이버 안정성을 향상시킬 수 있는 방법과 절전을 더 잘 실현하고 여러 버전의 Windows에 드라이버를 배포하는 방법에 대해 설명합니다. Channel 9
저전력 버스 이해 동영상 새 버스에 디바이스를 통합하고 드라이버를 만드는 방법을 보여줍니다. ACPI를 작성하여 주변 장치를 열거하고 주변 장치 드라이버 작성 및 테스트를 시작하는 방법을 알아봅니다. Channel 9
커널 모드 드라이버 프레임워크 디자인 가이드 아티클 KMDF(커널 모드 드라이버 프레임워크)를 소개합니다. MSDN
UMDF 1.x 디자인 가이드 아티클 UMDF(사용자 모드 드라이버 프레임워크)를 소개합니다. MSDN
Windows 하드웨어 호환성 프로그램 아티클 Windows 인증 프로그램에 대한 정보를 제공합니다. MSDN