Bagikan melalui


Manajemen daya kamera

Mode manajemen daya

Komponen off-System on a Chip (SoC) dari subsistem kamera harus mendukung dua mode manajemen daya. Komponen kamera harus mendukung mode aktif di mana perangkat kamera secara aktif mengalirkan konten ke aplikasi. Selain itu, komponen kamera harus mendukung mode yang dilepas daya di mana perangkat kamera dimatikan, daya dilepas, dan perangkat kamera mengonsumsi nol watt. Tabel berikut ini menjelaskan mode manajemen daya aktif dan dihapus daya untuk perangkat kamera.

Mode Deskripsi Status daya perangkat (Dx) Konsumsi daya rata-rata Latensi keluar ke aktif Mekanisme transisi

Aktif (streaming)

Perangkat kamera secara aktif mengalirkan konten ke aplikasi. Kontennya mungkin penuh gerakan, pratinjau, atau pengambilan foto diam.

Ya

Sensor, AF, dan flash-specific.

T/A

Transisi D0 yang dimulai perangkat lunak.

(Aplikasi telah memulai streaming dengan mengatur status pin pengambilan ke KSSTATE_ACQUIRE.)

Daya - dihapus

Perangkat kamera tidak mengalirkan konten ke aplikasi apa pun. Tidak ada konteks yang dipertahankan pada sensor kamera, perangkat flash, atau mesin fokus otomatis.

Ya

0 watt

< 200 milidetik ke bingkai pertama (Lihat catatan tabel berikut.)

Transisi D3 yang dimulai perangkat lunak.

(Status semua pin streaming telah diatur ke nilai apa pun selain KSSTATE_RUN.)

Catatan Windows mengharapkan waktu transisi dari mode aktif ke mode yang dihapus daya (latensi nonaktif) kurang dari 100 milidetik. Sebagian besar upaya manajemen daya difokuskan pada pengurangan waktu transisi dari mode yang dihapus daya ke mode aktif (latensi on).

Dua mode manajemen daya yang sama, aktif dan dihapus daya, harus didukung oleh unit pemrosesan gambar on-SoC. Vendor SoC mendefinisikan komponen individual yang terdiri dari unit pemrosesan gambar dan status manajemen dayanya. Kami menyarankan agar satu driver mengontrol unit pemrosesan gambar on-SoC, dan bahwa semua unit pemrosesan gambar untuk tangkapan kamera disajikan ke plug-in mesin daya (PEP) sebagai komponen yang dikelola daya tunggal.

Mekanisme manajemen daya perangkat lunak

Baik unit pemrosesan gambar on-System on a Chip (SoC) dan komponen kamera di luar SoC diharapkan tidak mengonsumsi daya (nol watt) ketika sistem dalam siaga yang terhubung dan layar dimatikan. Mekanisme perangkat lunak utama untuk manajemen daya adalah penghitungan referensi pin tangkapan kamera. Jumlah referensi ini dipertahankan oleh driver pengontrol kamera, yang merupakan minidriver AVStream. Mekanisme manajemen daya dasar ini dapat digunakan kapan saja sistem diaktifkan, termasuk waktu ketika tampilan sistem dinyalakan.

Driver pengontrol kamera harus meneruskan transisi status manajemen daya ke driver yang mengontrol komponen di luar SoC seperti sensor kamera, fokus otomatis, dan lampu kilat. Sebagai tanggapan, driver yang mengontrol perangkat ini harus mengambil tindakan tertentu untuk mengubah status daya dan untuk menghapus atau menerapkan daya.

Subsistem kamera harus diekspos ke Windows melalui satu minidriver AVStream yang disebut driver pengontrol kamera. Kami menyarankan agar driver pengontrol kamera tidak mengakses perangkat keras secara langsung dan tidak secara langsung mengelola komponen perangkat keras. Sebaliknya, driver pengontrol kamera harus meneruskan manajemen daya dan permintaan perangkat keras ke driver lain yang terdiri dari subsistem kamera.

Perangkat keras pemrosesan gambar on-SoC harus dikelola daya oleh plug-in mesin daya SoC (PEP). Perangkat keras pemrosesan gambar harus dikelola oleh driver Windows Driver Frameworks (WDF) dan driver ini harus memungkinkan kerja sama dengan PEP dengan mengatur anggota IdleTimeout dalam struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS ke SystemManagedIdleTimeout. Pengaturan ini memungkinkan PEP untuk mengontrol topologi berbagi jam dan rel daya apa pun yang unik untuk perangkat keras SoC. Driver yang mengontrol unit pemrosesan gambar pada SoC harus mewakili seluruh unit pemrosesan gambar sebagai komponen yang dikelola daya tunggal sehingga kemampuan WDF default untuk manajemen daya dapat digunakan.

Komponen subsistem kamera off-SoC harus dikelola oleh satu atau beberapa driver Kernel-Mode Driver Framework (KMDF ). Driver untuk komponen di luar SoC harus beralih ke status dihapus daya (D3) ketika komponennya tidak lagi diperlukan untuk pengambilan kamera. Selain itu, driver untuk komponen di luar SoC harus mengaktifkan D3cold, yang memungkinkan subsistem ACPI yang mendasar untuk mengubah status garis GPIO untuk menerapkan dan menghapus daya. Untuk informasi selengkapnya, lihat Mendukung D3cold dalam Driver.

Diagram blok berikut menunjukkan arsitektur driver yang direkomendasikan.

arsitektur driver yang direkomendasikan untuk subsistem kamera

Semua driver yang terdiri dari subsistem kamera—termasuk driver pengontrol kamera, driver unit pemrosesan gambar, dan driver untuk komponen kamera off-SoC—harus dijumlahkan dalam file penginstalan driver (.inf) yang sama. Semua driver subsistem kamera harus menjadi anggota kelas penyiapan perangkat PnP pencitraan. ClassGuid untuk perangkat pencitraan adalah {6bdd1fc6-810f-11d0-bec7-08002be2092f}.

Setiap driver yang mewakili satu komponen kamera harus dijumlahkan sebagai satu perangkat di namespace ACPI.

Status aktif dan dihapus daya

Driver pengontrol kamera harus mentransisikan perangkat kamera ke status terhapus daya ketika tidak ada aplikasi yang mengalirkan konten dari perangkat kamera. Aplikasi dapat menghentikan streaming karena telah ditutup oleh pengguna atau ditransisikan ke latar belakang dan ditangguhkan.

Jika aplikasi memulai streaming dari kamera yang perangkatnya dalam keadaan terhapus daya, driver pengontrol kamera harus mentransisikan perangkat kamera kembali ke keadaan aktif dalam 100 milidetik.

Untuk mengubah status daya berbagai komponen subsistem kamera, driver pengontrol kamera menggunakan antarmuka kepemilikan untuk berkomunikasi dengan driver lain yang terdiri dari subsistem kamera. Untuk mengkueri antarmuka yang sesuai, driver subsistem kamera harus menggunakan metode standar, yaitu mengirim permintaan I/O IRP_MN_QUERY_INTERFACE yang mengambil sekumpulan penunjuk fungsi.

Driver pengontrol kamera harus menempatkan perangkat kamera dalam status dilepas daya ketika semua pin streaming telah memasuki status KSSTATE_STOP . Windows secara otomatis menangguhkan aplikasi latar depan ketika pengguna menekan tombol daya dan sistem memasuki siaga yang terhubung. Ketika aplikasi penangkapan ditangguhkan, API pengambilan kamera yang disediakan oleh Windows Runtime akan diberi tahu dan akan mengubah status pin tangkapan kamera, menyebabkannya memasuki status KSSTATE_STOP .

Saat pin streaming pertama memasuki status KSSTATE_ACQUIRE , driver pengontrol kamera harus menempatkan perangkat kamera—termasuk unit pemrosesan gambar on-SoC—dalam status aktif.

Fungsionalitas kamera terkait

Sensor kamera dan perangkat flash mungkin memiliki fungsi tingkat platform tambahan yang harus dikelola oleh driver. Fungsi-fungsi ini dapat mencakup hal-hal berikut:

  • Mengaktifkan, menonaktifkan, dan mengonfigurasi sensor kamera melalui bus I2C.
  • Mengonfigurasi laju ledakan lampu kilat dan tingkat kecerahan di atas bus I2C.
  • Mendeteksi kondisi termal dari modul flash melalui garis GPIO dari modul flash ke SoC.

Untuk menerapkan fungsi-fungsi ini, pengembang driver perangkat kamera harus menggunakan metode dan panduan yang dirangkum dalam tabel berikut.

Fungsi Deskripsi Koneksi perangkat keras/firmware Mekanisme perangkat lunak
Konfigurasi sensor Menghitung kemampuan perangkat keras sensor kamera atau mengonfigurasi mode operasinya saat ini. Komunikasi melalui bus I2C. Sumber daya I2C dijelaskan dalam metode _CRS di bawah perangkat kamera di namespace ACPI.

Antarmuka permintaan input/output (I/O) bus periferal sederhana digunakan untuk berkomunikasi dengan pengontrol host I2C dan perangkat sensor kamera.

Deteksi peristiwa sensor Naikkan peristiwa atau tunjukkan status menggunakan garis GPIO dari sensor kamera ke SoC. Sumber daya GPIO disediakan untuk perangkat kamera. Sumber daya ini dijelaskan dalam metode _CRS di bawah perangkat kamera di namespace ACPI. Pin GPIO yang memberi sinyal peristiwa harus digambarkan sebagai sumber daya interupsi GPIO.

Interupsi diproses oleh driver sebagai respons terhadap peristiwa GPIO.

Antarmuka permintaan I/O SPB digunakan untuk berkomunikasi dengan perangkat sensor untuk menentukan penyebab gangguan.

Konfigurasi flash Konfigurasikan perangkat flash untuk laju ledakan, jumlah LED yang terhubung, atau properti lainnya. Komunikasi melalui bus I2C. Sumber daya I2C dijelaskan dalam metode _CRS di bawah perangkat kamera di namespace ACPI.

Antarmuka permintaan I/O SPB digunakan untuk berkomunikasi dengan pengontrol host I2C dan perangkat sensor kamera.

Koordinasi dengan driver unit pemrosesan gambar Mulai dan koordinasikan pengambilan dengan sirkuit pemrosesan gambar pada SoC. T/A

Antarmuka privat diekspos oleh driver yang mengelola unit pemrosesan gambar.

Enumerasi perangkat kamera

Untuk mengidentifikasi perangkat kamera di platform, aplikasi biasanya meminta manajer Plug and Play (PnP) untuk instans perangkat kamera. Setiap instans PnP sesuai dengan satu perangkat kamera. Untuk mengidentifikasi instans seperti itu, integrator sistem mendefinisikan perangkat kamera di namespace ACPI. Perangkat kamera hanya dapat mengalirkan konten ke satu aplikasi pada satu waktu. Namun, aplikasi dapat melakukan streaming dari beberapa perangkat kamera secara bersamaan.

Setiap perangkat kamera yang diwakili oleh driver pengontrol kamera (minidriver AVStream) harus dijumlahkan di namespace ACPI sebagai perangkat terpisah yang merupakan anak dari driver grafis.

Sebagai kasus khusus, jika platform SoC tidak mampu melakukan streaming konten secara bersamaan dari semua perangkat kamera di platform pada kombinasi resolusi atau mode yang dilaporkan, satu perangkat kamera dapat dijumlahkan sebagai gantinya. Namun, implementasi ini memerlukan pertimbangan yang cermat dan harus dilakukan hanya dalam kolaborasi langsung dengan Microsoft.

Perangkat yang mewakili sisa subsistem kamera—termasuk unit pemrosesan gambar on-SoC dan sensor kamera di luar SoC, fokus otomatis, dan lampu kilat—harus dijumlahkan sebagai satu atau beberapa perangkat di namespace ACPI. Unit pemrosesan gambar on-SoC harus dijumlahkan sebagai perangkat yang terpisah dari perangkat yang mewakili komponen kamera di luar SoC.

Daftar periksa manajemen daya kamera

Integrator sistem, vendor sensor kamera, dan vendor System on a Chip (SoC) harus menggunakan daftar periksa dalam artikel ini untuk memastikan bahwa desain manajemen daya sistem mereka kompatibel dengan Windows 10.

  • Integrator sistem harus berkomunikasi dan berkolaborasi dengan vendor SoC saat memilih komponen sensor kamera dan mengintegrasikan perangkat kamera.
  • Pengembang driver pengontrol kamera harus melakukan hal berikut:
    • Matikan daya ke perangkat keras kamera saat aplikasi tidak lagi mengalirkan konten dari perangkat kamera. (Ini terjadi ketika semua pin pengambilan berada dalam status KSSTATE_STOP.)
    • Nyalakan daya ke perangkat keras kamera saat aplikasi mulai mengalir dari salah satu pin tangkapan pada perangkat kamera.
    • Kembangkan satu driver KMDF yang mengelola unit pemrosesan gambar on-SoC. Driver pengontrol kamera harus menggunakan antarmuka driver kustom untuk memberi tahu driver unit pemrosesan gambar untuk memulai atau mengakhiri pengambilan kamera.
    • Pastikan driver unit pemrosesan gambar terdaftar dengan kerangka kerja manajemen daya Windows (PoFx) sehingga PEP yang disediakan vendor SoC dapat mengontrol manajemen daya perangkat keras unit pemrosesan gambar.
    • Kembangkan satu driver Windows Driver Frameworks (WDF) untuk mengelola setiap komponen perangkat keras yang mengelola perangkat keras kamera di luar SoC, termasuk sensor kamera, fokus otomatis, dan lampu kilat opsional. Driver pengontrol kamera harus menggunakan antarmuka driver kustom untuk memberi tahu driver perangkat keras kamera di luar SoC untuk memulai atau mengakhiri pengambilan kamera.
    • Pastikan bahwa driver yang mengelola perangkat keras kamera di luar SoC memulai transisi D3 ketika komponen kamera harus dimatikan sehingga ACPI diberitahu tentang transisi D3 dan dapat menghilangkan daya dari komponen. • Pastikan bahwa driver yang mengelola perangkat keras kamera di luar SoC memulai transisi D0 ketika komponen kamera harus dinyalakan sehingga ACPI diberitahu tentang transisi D0 dan dapat menerapkan daya ke komponen.
    • Kembangkan kode driver apa pun untuk mengelola konfigurasi perangkat keras sensor kamera atau perangkat flash.
    • Beri tahu integrator sistem tentang urutan yang diharapkan dari sumber daya GPIO dan I2C apa pun yang diperlukan untuk mengelola perangkat keras sensor kamera atau perangkat flash.
    • Pastikan bahwa semua driver yang terdiri dari subsistem kamera dijumlahkan dalam file penginstalan driver (.inf) yang sama.
    • Pastikan bahwa semua driver yang terdiri dari subsistem kamera adalah anggota kelas penyiapan perangkat PnP pencitraan. ClassGuid untuk perangkat pencitraan adalah {6bdd1fc6-810f-11d0-bec7-08002be2092f}.
  • Integrator sistem harus merancang firmware ACPI platform untuk melakukan hal berikut:
    • Hitung setiap perangkat kamera sebagai perangkat terpisah di namespace ACPI.
    • Sertakan objek _PLD di bawah setiap perangkat kamera di namespace ACPI untuk menunjukkan apakah kamera berada di depan atau belakang komputer.
    • Sertakan sumber daya daya di akar namespace ACPI untuk setiap perangkat kamera. Semua komponen perangkat keras di luar SoC untuk perangkat kamera tertentu (sensor, AF, lampu kilat, dan sebagainya) harus berada dalam satu sumber daya daya.
    • Terapkan metode kontrol _ON dan _OFF untuk setiap sumber daya daya untuk mengubah status pin GPIO dari SoC yang mendorong perangkat keras pengalihan rel daya.
    • Berikan metode _PR0 dan _PR3 di bawah setiap perangkat kamera di namespace layanan untuk mereferensikan sumber daya daya untuk setiap perangkat kamera dan perangkat keras terkait.
    • Berikan objek _CRS di bawah setiap perangkat kamera di namespace ACPI untuk menghitung sumber daya GPIO dan I2C untuk sensor kamera dan perangkat keras flash. Sumber daya GPIO dan I2C harus dalam urutan yang ditentukan oleh pengembang driver sensor kamera.
  • Integrator sistem harus merancang perangkat keras platform dan perutean daya sehingga:
    • Setiap perangkat kamera memiliki rel dayanya sendiri, yang dapat dikontrol secara independen dari rel daya untuk perangkat kamera lain, dan yang dapat dinyalakan dan dimatikan oleh pin GPIO dari SoC.
  • Integrator sistem harus menguji dan memverifikasi bahwa:
    • Perangkat keras perangkat kamera tidak menggunakan daya (nol watt) ketika perangkat kamera tidak digunakan oleh aplikasi. Integrator sistem harus menggunakan perangkat keras berinstrumentasi untuk mengukur konsumsi daya ini.