Bagikan melalui


Manajemen daya near-field proximity (NFP) untuk platform Modern Standby

Perangkat jarak dekat (NFP) adalah perangkat pemancar/penerima radio jarak pendek yang memungkinkan PC Windows untuk mengaitkan dan memasangkan dengan komputer lain yang dilengkapi NFP.

Perangkat NFP diekspos ke sistem operasi Windows melalui antarmuka GUID_DEVINTERFACE_NFP Plug and Play (PnP). Driver pihak ketiga, yang disediakan oleh vendor perangkat NFP, bertanggung jawab untuk mengimplementasikan antarmuka GUI_DEVINTERFACE_NFP dan mengelola daya perangkat NFP fisik. Perangkat NFP biasanya terhubung ke pin antarmuka I2C dari System on a Chip (SoC) atau silikon inti.

Umumnya, perangkat NFP dapat memasuki mode daya rendah (mode siaga atau mode penghapusan daya) ketika tidak ada klien perangkat lunak yang memiliki publikasi atau langganan kedekatan, atau semua publikasi dan langganan dinonaktifkan. Dari sudut pandang pengembangan driver, kondisi ini terjadi ketika tidak ada handel yang luar biasa pada perangkat. Perangkat NFP harus ditempatkan dalam mode siaga atau mode dihapus daya ketika tidak ada handel ke perangkat yang terbuka dan diaktifkan.

Ketika platform memasuki Siaga Modern dan layar dimatikan, perangkat NFP harus memasuki mode siaga atau mode daya yang dilepaskan. Jika konsumsi daya perangkat NFP dalam mode siaga rata-rata lebih besar dari satu miliwatt, maka perangkat harus memasuki mode 0 watt yang dilepaskan dayanya.

Driver perangkat NFP tidak secara langsung diberi tahu ketika platform memasuki dan keluar dari Siaga Modern. Sebagai gantinya, Windows memberi tahu driver secara tidak langsung dengan menonaktifkan handel ke pengandar pada entri ke Siaga Modern, dan mengaktifkan handel yang sama ini saat keluar dari Siaga Modern. Setelah platform memasuki Siaga Modern, Windows mengirimkan pemberitahuan nonaktifkan ke setiap handel terbuka yang belum dinonaktifkan. Ketika platform keluar dari Siaga Modern, Windows mengirimkan pemberitahuan aktifkan ke setiap handel yang sebelumnya dinonaktifkan. Handel terbuka yang sudah dinonaktifkan sebelum Siaga Modern dimasukkan tetap dinonaktifkan setelah keluar dari Siaga Modern.

Mode manajemen daya perangkat

Dimulai dengan Windows 8, perangkat NFP untuk platform Modern Standby diharapkan memiliki tiga mode daya — aktif, menganggur, dan siaga — selain mode yang dilepas daya (di mana semua input daya ke perangkat NFP telah dimatikan oleh mekanisme perangkat keras eksternal ke perangkat). Hubungi vendor perangkat keras untuk perangkat NFP untuk detail tentang mode manajemen daya yang didukung oleh perangkat.

Tabel berikut menjelaskan mode daya perangkat untuk perangkat NFP.

Mode daya perangkat Deskripsi Konsumsi daya rata-rata Keluar dari latensi ke aktif Mekanisme transisi

Aktif

Perangkat NFP secara aktif berkomunikasi dengan perangkat NFP lain di komputer terdekat.

< 50 miliwatt

T/A

T/A

Idle

Perangkat NFP sedang menunggu komputer lain dengan NFP berada di dekatnya. Driver untuk perangkat NFP memiliki publikasi dan langganan terbuka.

< 5 miliwatt

< 10 milidetik (khas)

Otonom perangkat keras

Siaga

Perangkat NFP memiliki daya yang diterapkan, tetapi tidak ada publikasi atau langganan yang luar biasa (tidak ada handel terbuka).

< 1 miliwatt (tergantung perangkat)

< 50 milidetik (khas)

Perintah driver atau pin GPIO dari SoC atau silikon inti.

Power-removed

Perangkat NFP tidak memiliki daya yang diterapkan karena platform tidak menyala atau entitas eksternal telah mematikan daya.

0 watt

< 100 milidetik

Entitas eksternal menghapus daya atau menerapkan daya melalui firmware ACPI sebagai respons terhadap D3 IRP.

Catatan

  • Dalam tabel sebelumnya, istilah siaga mengacu pada mode daya perangkat yang berbeda dari Siaga Modern, yang merupakan status daya di seluruh platform.
  • Dalam tabel sebelumnya, istilah D3 IRP mengacu pada permintaan IRP_MN_SET_POWER jenis DevicePowerState.

Konsumsi daya yang ditentukan dari perangkat NFP dalam mode siaga akan bervariasi menurut nomor bagian dan produsen. Perancang sistem harus bekerja dengan vendor perangkat untuk memahami konsumsi daya siaga khusus perangkat. Jika konsumsi daya dalam mode siaga lebih dari satu miliwatt, perangkat NFP harus dilampirkan ke rel daya yang dapat dialihkan sehingga perangkat dapat dimasukkan ke dalam mode pelepas daya selama Siaga Modern.

Mekanisme manajemen daya perangkat lunak

Windows mengandalkan vendor perangkat NFP untuk menyediakan driver pihak ketiga yang mengelola perangkat NFP dengan daya. Windows mengharapkan pengandar ini memantau jumlah handel terbuka saat ini ke driver perangkat NFP dan status handel ini untuk menentukan kapan harus menempatkan perangkat NFP dalam mode daya rendah.

Sebaiknya pengembang driver NFP menggunakan User-Mode Driver Framework (UMDF) untuk mengembangkan driver mereka. UMDF mencakup sejumlah fitur yang mempermudah pengembangan manajemen daya run-time perangkat.

Dukungan D3

Pengembang driver NFP didorong untuk menempatkan perangkat NFP dalam status D3 ketika semua handel ke perangkat telah ditutup atau semua handel terbuka ke perangkat telah menerima pemberitahuan IOCTL_NFP_DISABLE . Semua handel terbuka akan menerima pemberitahuan IOCTL_NFP_DISABLE setelah platform memasuki Siaga Modern dan desktop pengguna dikunci.

Bahkan jika perangkat NFP dapat mencapai konsumsi daya kurang dari satu miliwatt dalam mode daya diam, transisi ke D3 masih direkomendasikan ketika semua handel ditutup atau telah menerima pemberitahuan IOCTL_NFP_DISABLE . Melakukan transisi ke D3 memungkinkan semua driver dalam tumpukan driver untuk perangkat NFP diberi tahu bahwa perangkat keras memasuki mode daya rendah. Selain itu, transisi ke D3 dapat dideteksi oleh instrumentasi yang dibangun ke dalam Windows. Toolkit Performa Windows dan alat diagnostik performa lainnya dapat digunakan untuk mengamati transisi ini. Dukungan diagnostik bawaan ini mengurangi biaya untuk integrator sistem untuk memverifikasi bahwa perangkat NFP IOCTL_NFP_DISABLE melakukan manajemen daya dengan benar.

Untuk beberapa bus, perangkat di bus harus beralih ke D3 sebelum pengontrol bus dapat memasuki status daya rendah. Untuk perangkat NFP yang terhubung dengan I2C, tidak ada ketergantungan seperti itu pada perangkat NFP titik akhir yang memasuki D3 agar pengontrol bus I2C dimatikan.

Namun, jika platform Modern Standby di masa mendatang menggunakan Universal Serial Bus (USB) untuk terhubung ke perangkat NFP, perangkat NFP harus dapat memasukkan D3 sehingga pengontrol host USB dapat mati dan SoC atau silikon inti dapat memasuki status diam berdaya rendah selama Siaga Modern. Pengembang driver perangkat NFP didorong untuk mentransisikan perangkat mereka ke D3 ketika mereka siap untuk memasuki mode berdaya rendah, terlepas dari bus yang mendasar, untuk memungkinkan penggunaan kembali driver di masa depan dan diagnostik manajemen daya yang mudah.

Jika, untuk memasuki mode daya siaga, perangkat NFP memerlukan perintah untuk dikirim dari driver perangkat NFP melalui bus komunikasi, perintah ini harus dikirim sebagai bagian dari transisi ke D3 di driver.

Jika perangkat NFP memerlukan pin GPIO dari SoC untuk dialihkan untuk memasuki mode daya siaga, transisi ke D3 diperlukan. Memulai transisi ke D3 memberi tahu driver Windows ACPI, Acpi.sys, yang menjalankan metode kontrol _PS3 yang diterapkan di bawah perangkat NFP di namespace ACPI. Metode _PS3 dapat mengalihkan baris GPIO melalui wilayah operasi GPIO. Untuk membuat driver perangkat NFP lebih portabel, penundaan khusus platform atau batasan waktu lainnya harus diimplementasikan di firmware platform sehingga driver perangkat NFP tidak perlu disesuaikan untuk platform tertentu.

Untuk mengaktifkan transisi perangkat NFP ke D3 saat perangkat diam dan platform berada dalam status daya sistem S0 (berfungsi), driver UMDF memanggil metode IWDFDevice2::AssignS0IdleSettingsEx. Dalam panggilan ini, driver memasok pointer ke struktur WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS sebagai parameter input, dan mengatur anggota DxState dari struktur ini ke PowerDeviceD3.

Jika konsumsi daya perangkat NFP dalam mode siaga lebih besar dari satu miliwatt, perangkat harus dimasukkan ke dalam mode power-removed ketika semua handel ditutup atau semua handel telah dikirim pemberitahuan IOCTL_NFP_DISABLE . Agar firmware dan perangkat keras yang mendasar menghapus daya dari perangkat NFP, perangkat harus sudah memasuki D3 (yaitu, D3hot) dan driver perangkat NFP sebelumnya harus mengaktifkan transisi ke D3cold. Mengaktifkan D3cold menyiratkan bahwa driver untuk perangkat NFP menyimpan status perangkat keras perangkat sebelum transisi ke D3 sehingga semua daya dapat dilepas dari perangkat. Perangkat harus dapat melanjutkan operasi normal di lain waktu setelah perangkat dinyalakan (yaitu, perangkat keluar dari D3cold) dan driver memulihkan status perangkat keras perangkat. Untuk mengaktifkan D3cold, driver UMDF memanggil metode IWDFDevice2::AssignS0IdleSettingsEx. Dalam panggilan ini, driver memasok pointer ke struktur WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, dan mengatur anggota ExcludeD3Cold dari struktur ini ke WdfFalse.

Untuk informasi selengkapnya, lihat Mendukung D3cold di Driver.

Manajer radio

Jika perangkat NFP menggunakan mekanisme RF (radio) untuk mendeteksi peristiwa kedekatan, vendor perangkat NFP harus menyediakan manajer radio selain driver perangkat NFP. Manajer radio adalah COM DLL yang mengimplementasikan API antarmuka pengguna manajemen radio dan berkomunikasi secara privat dengan driver perangkat NFP. Ketika pengguna mengubah status radio aktif/nonaktif perangkat NFP di aplikasi Pengaturan Windows, driver perangkat NFP menerima pemberitahuan perubahan melalui manajer radio. Pengembang driver harus menentukan antarmuka privat untuk mengomunikasikan status manajemen radio antara objek COM manajer radio dan driver perangkat NFP. Ketika driver perangkat NFP menerima perintah dari objek manajer radio untuk mengatur status hidup/mati radio perangkat ke nonaktif, driver harus menyimpan status perangkat keras perangkat, mematikan komponen RF apa pun yang terkait dengan perangkat NFP, dan transisi perangkat ke D3. Perhatikan bahwa kuantitas dan status semua handel dari antarmuka GUID_DEVINTERFACE_NFP yang sudah terbuka saat perangkat memasuki D3 harus dipertahankan saat perangkat berada di D3.

Setelah manajer radio menunjukkan bahwa komponen RF di perangkat NFP harus diaktifkan dan dinyalakan, perangkat NFP harus segera beralih kembali ke D0 ketika salah satu hal berikut terjadi:

  • Klien membuka handel baru ke driver perangkat NFP.
  • Handel yang sudah terbuka menerima pemberitahuan IOCTL_NFP_ENABLE .

Pemberitahuan IOCTL_NFP_ENABLE akan dikirim oleh Windows ke driver perangkat NFP ketika platform keluar dari Siaga Modern dan pengguna memasukkan kata sandi mereka.

Jika manajer radio telah menunjukkan bahwa komponen RF di perangkat NFP harus dinonaktifkan dan dimatikan, perangkat NFP harus tetap berada di D3—bahkan jika handel baru dibuka atau handel yang ada diaktifkan—sampai manajer radio menunjukkan bahwa komponen RF harus diaktifkan dan dinyalakan.

Jika perangkat NFP memerlukan perintah untuk dikirim untuk mengembalikan perangkat NFP ke mode diam, perintah ini dapat dikirim melalui bus komunikasi (biasanya I2C) dan harus terjadi sebagai bagian dari penyelesaian transisi ke D0 di driver perangkat NFP.

Transisi perangkat NFP ke D0 memungkinkan metode kontrol _PS0 di bawah perangkat di namespace ACPI dijalankan. Jika diperlukan, metode kontrol ini dapat mengalihkan baris GPIO dari SoC ke perangkat NFP untuk mengembalikan perangkat ke mode diam.

Konfigurasi daya perangkat keras yang didukung

Perangkat NFP harus mengonsumsi daya tidak lebih dari satu miliwatt, rata-rata, sementara platform perangkat keras berada di Modern Standby. Jika perangkat mengonsumsi daya tidak lebih dari satu miliwatt saat dalam mode siaga, driver perangkat NFP dapat menempatkan perangkat dalam mode siaga saat perangkat tidak digunakan. Jika tidak, perancang sistem harus melampirkan perangkat ke rel daya khusus yang dapat dimatikan saat perangkat tidak digunakan.

Daya siaga kurang dari satu miliwatt

Jika perangkat NFP mengonsumsi kurang dari satu miliwatt daya dalam mode siaga, perangkat NFP dapat ditempatkan pada rel daya sistem apa pun dan dapat berbagi rel ini dengan sejumlah perangkat lain. Transisi perangkat ke mode daya siaga terjadi sebagai bagian dari transisinya ke D3.

Entri perangkat NFP ke mode siaga dapat dimulai baik dengan mengirim perintah melalui bus komunikasi (biasanya I2C) atau dengan beralih ke baris SoC GPIO yang dirutekan ke perangkat NFP.

Jika perangkat NFP memerlukan pengalihan baris GPIO dari SoC untuk memasuki mode siaga, baris GPIO harus dijelaskan di wilayah operasi GPIO di namespace ACPI. Integrator sistem harus menerapkan metode _PS3 dan _PS0 di bawah perangkat NFP di namespace ACPI. Implementasi metode _PS3 harus mengalihkan baris GPIO untuk mengalihkan perangkat NFP ke mode siaga. Implementasi metode _PS0 harus mengalihkan baris GPIO untuk mengalihkan perangkat NFP dari mode siaga ke mode diam. Pengalih baris ini mungkin tunduk pada batasan waktu khusus platform atau khusus perangkat.

Seperti yang dijelaskan sebelumnya, driver perangkat NFP harus memulai transisi ke D3 ketika semua handel ditutup, atau semua handel telah menerima pemberitahuan IOCTL_NFP_DISABLE , atau manajer radio telah meminta agar komponen RF di perangkat NFP dimatikan.

Daya siaga lebih dari satu miliwatt

Jika konsumsi daya perangkat NFP dalam mode siaga lebih dari satu miliwatt, perangkat NFP harus ditempatkan pada rel daya khusus yang dapat dinyalakan dan dinonaktifkan secara independen di bawah kendali GPIO dari SoC. Ketika semua handel ditutup, atau semua handel telah menerima pemberitahuan IOCTL_NFP_DISABLE , atau manajer radio telah meminta agar komponen RF dimatikan, perangkat NFP terlebih dahulu beralih ke D3, lalu beralih ke mode yang dihapus daya saat rel daya dimatikan.

Rel daya yang dapat dialihkan harus dikontrol oleh garis GPIO dari SoC atau silikon inti. Baris GPIO harus digambarkan sebagai bagian dari wilayah operasi GPIO di namespace ACPI. Selain itu, namespace ACPI harus menyertakan Power Resource yang menjelaskan rel daya yang dapat dialihkan dan yang mengimplementasikan metode kontrol _ON dan _OFF. Metode kontrol _ON dan _OFF mengalihkan garis GPIO yang dijelaskan di wilayah operasi GPIO untuk menghidupkan dan mematikan rel daya. _PR3 dan paket _PR0 harus ditempatkan di bawah perangkat NFP di namespace ACPI dan harus ditautkan ke Power Resource yang menjelaskan rel daya.

Seperti yang dijelaskan sebelumnya, driver perangkat NFP harus mengaktifkan D3cold. Selain itu, driver harus memulai transisi ke D3 ketika semua handel ditutup, atau semua handel telah menerima pemberitahuan IOCTL_NFP_DISABLE , atau manajer radio meminta agar komponen RF dimatikan. Ketika driver ACPI menerima D3 IRP, driver tersebut akan menjalankan metode _OFF pada Sumber Daya Daya yang ditunjukkan oleh paket _PR3. Metode ini akan mengalihkan baris GPIO yang mengontrol perangkat keras peralihan daya untuk melepas daya dari perangkat NFP.

Jika manajer radio telah menunjukkan bahwa komponen RF harus diaktifkan, driver perangkat NFP harus melakukan transisi ke D0 ketika handel baru dibuka atau handel yang ada telah menerima pemberitahuan IOCTL_NFP_ENABLE . Ketika driver ACPI menerima D0 IRP (permintaan IRP_MN_SET_POWER jenis DevicePowerState), driver ACPI akan menjalankan metode _ON pada Power Resource yang ditunjukkan oleh paket _PR0. Metode ini akan mengalihkan baris GPIO yang mengontrol perangkat keras pengalihan daya untuk menerapkan kembali daya ke perangkat NFP.

Kekhawatiran bangun

Tidak ada kekhawatiran bangun untuk perangkat NFP. Perangkat NFP tidak diizinkan untuk mendukung membangunkan SoC saat platform berada di Modern Standby.

Pengujian dan validasi

Sangat penting bagi perancang sistem untuk memverifikasi bahwa perangkat NFP dengan andal memasuki mode siaga atau mode yang dihapus dayanya saat layar dimatikan untuk Siaga Modern. Solusi manajemen daya untuk perangkat NFP sangat tergantung pada implementasi driver pihak ketiga. Oleh karena itu, integrator sistem didorong untuk mendiskusikan metode terbaik untuk menguji dan memvalidasi fungsionalitas perangkat NFP dengan vendor perangkat NFP.

Jika driver perangkat NFP memulai transisi ke D3 ketika semua handel ke driver ditutup atau dinonaktifkan, alat XPerf dapat digunakan untuk mengamati transisi ini. Metode validasi ini mirip dengan yang dijelaskan di tempat lain untuk pengontrol sentuh dan perangkat sensor.

Jika driver mengirim perintah melalui bus komunikasi untuk mentransisikan perangkat ke dalam dan ke luar mode siaga, driver harus mendukung pelacakan peristiwa sehingga integrator sistem dapat dengan mudah memvalidasi operasi manajemen daya. Instrumentasi dapat dengan mudah ditambahkan ke driver Windows menggunakan peristiwa Event Tracing for Windows (ETW). Untuk informasi selengkapnya, lihat Menambahkan Pelacakan Peristiwa ke Driver Kernel-Mode. Keuntungan dari pelacakan ETW adalah dapat dilihat menggunakan rangkaian alat Windows Performance Toolkit, yang mencakup XPerf.

Daftar periksa manajemen daya perangkat NFP

Integrator sistem dan vendor NFP harus meninjau daftar periksa di bawah ini untuk memverifikasi bahwa desain manajemen daya sistem mereka kompatibel dengan Windows 8 ke atas.

  • Pilih perangkat NFP yang memiliki mode siaga yang mengonsumsi rata-rata kurang dari satu miliwatt daya.
  • Verifikasi bahwa driver perangkat NFP memulai transisi ke D3 ketika semua handel ke perangkat ditutup, atau semua handel terbuka telah menerima pemberitahuan IOCTL_NFP_DISABLE, atau manajer radio meminta agar komponen RF di perangkat NFP dinonaktifkan dan dimatikan.
  • Verifikasi bahwa driver perangkat NFP memulai transisi ke D0 jika manajer radio telah menunjukkan bahwa komponen RF harus diaktifkan dan kemudian handel pertama dibuka ke perangkat atau handel terbuka pertama menerima pemberitahuan IOCTL_NFP_ENABLE.
  • Jika driver perangkat NFP mengirim perintah kustom melalui bus komunikasi untuk memberi tahu perangkat NFP untuk memasuki mode siaga, bekerja samalah dengan vendor perangkat NFP untuk menentukan cara terbaik untuk memverifikasi bahwa perangkat NFP memasuki mode daya siaga sebagai respons terhadap perintah ini.
  • Jika konsumsi daya untuk perangkat NFP lebih besar dari satu miliwatt, pastikan perangkat ditempatkan pada rel daya yang dapat dialihkan.
  • Jika perangkat NFP terletak di rel daya yang dapat dialihkan:
    • Verifikasi bahwa perangkat mendukung penghapusan daya sepenuhnya dari perangkat saat tidak digunakan, dan bahwa memulihkan daya secara otomatis mengaktifkan kembali dan menginisialisasi ulang perangkat.
    • Verifikasi bahwa rel daya dikendalikan oleh garis GPIO dari SoC atau silikon inti.
    • Petakan garis GPIO ke wilayah operasi GPIO yang diterapkan dalam firmware ACPI sistem.
    • Sediakan Power Resource untuk menjelaskan power rail, dan sertakan metode kontrol _ON, _OFF, dan _STA di Power Resource ini.
    • Berikan paket _PR0 dan _PR3 di bawah perangkat NFP di firmware ACPI sistem dan pastikan bahwa mereka mereferensikan Power Resource.
    • Jika perangkat NFP memerlukan penundaan daya sebelum driver dapat mengaksesnya, kodekan penundaan ini dalam implementasi metode kontrol _ON.
  • Mulai beberapa transisi ke dalam dan ke luar Siaga Modern, lalu uji stres pengoperasian perangkat NFP saat layar diaktifkan.