카메라 하드웨어
토폴로지 개요
Windows 드라이버 지원과 관련하여 카메라 하위 시스템에는 카메라 센서, 선택적 자동 초점 장치, 플래시 및 기타 관련 하드웨어와 같은 Off-SoC(System on a Chip) 구성 요소가 포함되어 있습니다. 카메라 하드웨어에는 On-SoC 이미지 처리 장치도 포함됩니다.
On-SoC 이미지 처리 하드웨어는 SoC 공급업체에서 제공하는 PEP(전원 엔진 플러그 인)으로 전원을 관리해야 합니다. 이미지 처리 하드웨어는 ACPI에서 단일 디바이스로 열거되어야 하며 WDF(Windows Driver Framework) 드라이버에서 관리해야 합니다. PEP가 SoC에 고유한 모든 클록 및 전원 레일 공유 토폴로지를 제어할 수 있도록 이미지 처리 디바이스 유휴 시간 제한의 시스템 관리를 사용하도록 설정합니다. 모든 On-SoC 이미지 처리 하드웨어는 카메라 디바이스가 꺼질 때마다 전원을 꺼야 합니다.
일부 SoC 설계에는 카메라 캡처와 기타 이미지 및 그래픽 처리를 모두 수행하는 공유 기능 블록이 있습니다. 이러한 SoC를 사용하는 플랫폼에서 SoC 공급업체가 제공하는 PEP는 이 공유 블록의 사용을 참조 카운트하고 모든 클라이언트가 유휴 상태일 때 전원을 꺼야 합니다.
일부 플랫폼에서는 On-SoC 이미지 처리 하드웨어가 두 개 이상의 카메라 디바이스 간에 공유될 수 있습니다. 이 경우 이미지 처리 하드웨어는 카메라 디바이스 간에 다중화됩니다. 각 카메라 디바이스의 구성 요소는 ACPI 네임스페이스에서 독립적으로 설명되어야 하며 Windows 플러그 앤 플레이 관리자에 대해 별도의 디바이스 개체로 열거되어야 합니다.
두 개(또는 그 이상)의 임베디드 카메라가 있는 플랫폼은 Windows에서 개별 카메라가 지원하는 모드와 해상도의 모든 조합으로 두 카메라 양쪽(또는 모든) 카메라를 동시에 사용(콘텐츠 스트리밍)할 수 있어야 합니다. 이 요구 사항을 충족할 수 없는 SoC 공급업체는 드라이버 및 시스템 펌웨어 구현에 대한 지침을 위해 Microsoft와 직접 협력해야 합니다.
지원되는 전원 구성
Windows는 최신 대기 플랫폼에서 카메라 디바이스에 대한 단일 하드웨어 전원 관리 구성을 지원합니다. 간단히 말해서, 각 카메라 센서는 MIPI-CSI 링크를 통해 SoC(System on a Chip)에 연결되어야 하며 선택적으로 I2C 버스 및 하나 이상의 GPIO 핀에 연결할 수 있습니다. 카메라 센서 디바이스, 옵션 플래시 및 기타 Off-SoC 카메라 구성 요소는 ACPI 펌웨어로 켜고 끌 수 있는 전원 레일에 배치해야 합니다.
MIPI-CSI 링크 외에 카메라 디바이스에 카메라 센서 또는 플래시 디바이스를 제어하기 위한 I2C 또는 GPIO 핀이 있는 경우 이 핀을 SoC의 I2C 컨트롤러 또는 GPIO 컨트롤러의 해당 핀으로 라우팅해야 합니다. 시스템 통합자는 ACPI 네임스페이스의 카메라 디바이스 아래 _CRS 개체에서 카메라 센서와 플래시 디바이스 모두에 대한 I2C 및 GPIO 리소스를 열거해야 합니다.
참고 시스템 통합자는 카메라 하위 시스템 드라이버 개발자와 협력하여 카메라 드라이버가 GPIO 및 I2C 리소스를 주문하는 방식을 결정해야 합니다. 예를 들어, 두 개의 I2C 리소스를 수신하는 드라이버는 리소스 목록에 나타나는 순서에 따라 두 I2C 리소스를 구별합니다. 마찬가지로 3개의 GPIO 리소스를 수신하는 드라이버는 이러한 리소스가 특정 순서로 나열될 것으로 예상합니다. 시스템 통합자는 _CRS 개체에서 동일한 순서로 I2C 및 GPIO 리소스를 열거해야 합니다.
카메라 센서와 플래시 디바이스는 ACPI 제어 방식으로 켜고 끌 수 있는 전원 레일에 배치해야 합니다. SoC의 GPIO 핀을 사용하여 전원 스위치 하드웨어를 제어하는 것이 좋습니다. GPIO는 ACPI 제어 방법에 의해 상태가 변경될 수 있도록 GPIO 작업 영역에서 열거되어야 합니다. 시스템 통합자는 ACPI 네임스페이스에서 카메라 디바이스(센서, 플래시 또는 기타 카메라 구성 요소)의 전원 리소스를 설명해야 합니다. 이 리소스는 전원 스위치 하드웨어로 라우팅되는 GPIO 신호의 상태를 변경하기 위해 _ON 메서드와 _OFF 메서드를 포함해야 합니다. ACPI 네임스페이스의 카메라 디바이스 아래에서 시스템 통합자는 전원 리소스를 참조하는 _PR0 개체 및 _PR3 개체를 제공해야 합니다.
카메라 컨트롤러 드라이버가 모든 스트리밍 핀이 KSSTATE_STOP 상태에 들어간 것을 검색하면 프라이빗 인터페이스를 사용하여 Off-SoC 카메라 구성 요소를 제어하는 드라이버에 캡처가 더 이상 필요하지 않음을 알립니다. 차례로 이러한 드라이버는 IWDFDevice2::ResumeIdle 메서드를 호출하여 하드웨어가 유휴 상태임을 드라이버 프레임워크에 알립니다. 이에 대한 응답으로 드라이버 프레임워크는 D3로의 전환을 시작하여 D3 IRP가 카메라 디바이스 드라이버 스택을 통해 흐르게 합니다. (D3 IRP는 PowerDeviceD3의 DEVICE_POWER_STATE 열거 값을 지정하는 IRP_MJ_POWER IRP입니다.) Windows ACPI 드라이버인 Acpi.sys는 D3 IRP를 관찰하고 ACPI 네임스페이스의 카메라 디바이스 아래에 있는 _PR3 개체로 식별되는 전원 리소스의 _OFF 메서드를 실행합니다.
앞 단락의 마지막 문장은 전원 리소스가 하나의 카메라 디바이스 이외의 디바이스에 전원을 공급하지 않는다고 가정합니다. 다른 디바이스에 이 전원 리소스에 대한 참조가 있는 경우 Acpi.sys는 전원 리소스를 참조하는 다른 모든 디바이스가 D3으로 전환된 후에만 _OFF 메서드를 실행합니다. 자세한 내용은 D3cold로 전환 사용하도록 설정을 참조하세요.
카메라 하드웨어를 활성 전원 상태로 되돌리는 것도 유사한 프로세스입니다. 카메라 컨트롤러 드라이버가 KSSTATE_ACQUIRE 상태로 들어가는 첫 번째 스트림 캡처 핀을 검색하면 카메라 컨트롤러 드라이버는 카메라 하위 시스템을 구성하는 다른 On-SoC 및 Off-SoC 구성 요소에 대한 드라이버와 통신합니다. 이에 대한 응답으로 On-SoC 이미지 처리 디바이스를 제어하는 드라이버는 IWDFDevice2::StopIdle 메서드를 호출하여 PEP에 이미지 처리 디바이스 하드웨어의 전원을 켜야 함을 알립니다. 카메라 컨트롤러 드라이버는 Off-SoC 카메라 구성 요소를 제어하는 드라이버에게 활성 상태로 돌아가야 한다고 알려줍니다. 차례로, 이러한 드라이버는 StopIdle을 호출하여 하드웨어가 더 이상 유휴 상태가 아님을 드라이버 프레임워크에 알리고, 이로 인해 D0 IRP가 카메라 디바이스 드라이버 스택을 통해 흐르게 됩니다. (D0 IRP는 PowerDeviceD0의 DEVICE_POWER_STATE 열거 값을 지정하는 IRP_MJ_POWER IRP입니다.) Acpi.sys는 ACPI 네임스페이스의 카메라 디바이스 아래에 있는 _PR0 개체로 식별되는 전원 리소스의 _ON 메서드를 실행하여 D0 IRP에 응답합니다.
플랫폼에 여러 카메라 디바이스가 있는 경우 각 카메라 디바이스에는 ACPI 네임스페이스에 설명된 자체적으로 전환 가능한 전원 레일 및 전원 리소스가 있어야 합니다. ACPI 네임스페이스의 각 카메라 디바이스에 대해 시스템 통합자는 카메라 디바이스가 컴퓨터의 전면에 있는지 아니면 후면에 있는지를 나타내는 _PLD 개체를 제공해야 합니다. 카메라 디바이스가 폴더형 폼 팩터 컴퓨터의 덮개에 내장되어 있고 덮개가 열려 있을 때 사용자를 향하고 있는 경우 이 디바이스의 _PLD 개체는 카메라가 플랫폼 전면에 있음을 나타내야 합니다. 카메라 디바이스가 폴더형 폼 팩터 컴퓨터의 덮개에 내장되어 있고 덮개가 열려 있을 때 사용자와 반대 방향을 향하고 있는 경우 이 디바이스의 _PLD 개체는 카메라가 시스템 뒷면에 있음을 나타내야 합니다.
절전 모드 해제 문제
카메라 디바이스 하드웨어는 절전 모드 해제를 지원하지 않아야 합니다. Windows는 카메라 디바이스가 최신 대기 상태 동안 가장 낮은 전력 상태에서 SoC 절전 모드 해제할 수 있을 것으로 기대하지 않습니다. 많은 휴대폰의 경우 사용자가 카메라 단추를 누르면 SoC가 절전 모드를 해제하도록 할 수 있습니다. 카메라 단추는 Windows에서 카메라 디바이스, 센서 및 옵션 플래시의 시스템 통합 또는 전원 관리와 별도로 작동하는 사용자 입력 디바이스로 처리됩니다.