Bagikan melalui


Bus Periferal Sederhana (SPB)

Catatan

Artikel ini berisi referensi ke istilah slave, istilah yang tidak lagi digunakan Microsoft. Ketika istilah ini dihapus dari perangkat lunak, kami akan menghapusnya dari artikel ini.

Topik ini membahas rekomendasi untuk Simple Peripheral Bus di Windows 10. Windows mencakup dukungan untuk bus berdaya rendah dan sederhana, seperti Inter Integrated Circuit (I²C) dan (I²C) dan Simple Peripheral Interface (SPI), menggunakan ekstensi kerangka kerja arsitektur Kernel Mode Driver Framework (KMDF). Driver pengontrol tidak disediakan dalam kotak. Vendor chipset, OEM, atau IHV harus mengembangkan driver pengontrol yang diterapkan di KMDF. Arsitektur ini menyediakan topologi konfigurasi perangkat fleksibel yang mendukung penggunaan bus secara bersamaan untuk kontrol dan transaksi data, serta GPIO untuk sinyal dan interupsi. Definisi perangkat lengkap didefinisikan melalui Konfigurasi Tingkat Lanjut dan Antarmuka Daya (ACPI).

Di Windows, bus didukung melalui driver pengontrol KMDF. Dengan bantuan platform KMDF, driver pengontrol digunakan sebagian besar untuk menentukan antarmuka khusus perangkat keras yang diperlukan untuk mengaktifkan fungsi pengontrol.

Infrastruktur Windows mendukung perangkat yang berbagi bus, bus yang di-multipleks pada baris yang sama, dan konfigurasi perangkat melalui ACPI. Windows menggunakan ACPI sebagai sarana utama untuk identifikasi, konfigurasi, dan kontrol perangkat.

Tabel berikut ini meringkas dukungan untuk Simple Peripheral Bus.

Bus Dukungan Kotak Masuk Ekstensi kerangka kerja disediakan Pihak ketiga diizinkan Detail dukungan tambahan
I²C Tidak Ya Ya, menggunakan ekstensi SPB Framework

Master saja

"Panggilan Umum" tidak didukung

Akses Memori Langsung (DMA) didukung

SPI Tidak Ya Ya, menggunakan ekstensi SPB Framework

Hanya master, "Panggilan Umum" tidak didukung

Dupleks penuh didukung

DMA didukung

MIPI-HSI Tidak Tidak Ya, menggunakan Windows Driver Foundation (WDF)
MIPI-SLIMbus Tidak Tidak Ya, menggunakan WDF
MIPI-CSI Tidak Tidak Ya, menggunakan WDF
UART Tidak Ya Ya, menggunakan ekstensi Serial Framework (SerCx2)

DMA didukung

Mode transfer kustom didukung dengan SerCx2

Pertimbangan desain untuk SPB

Berikut ini adalah beberapa pertimbangan umum untuk SPB:

  • SPB bukan bus Plug and Play. Perangkat periferal biasanya memiliki koneksi tetap ke SPB dan tidak dapat dihapus. Produsen sistem harus memastikan informasi yang akurat di ACPI untuk menghitung perangkat periferal yang terhubung dengan SPB untuk manajer Plug and Play, dan menentukan sumber daya perangkat keras yang didedikasikan untuk setiap perangkat.

  • Tidak ada dukungan interupsi dalam band untuk SPB. Sebagian besar periferal mendukung sinyal perangkat melalui mekanisme interupsi terpisah (sering kali berbasis GPIO), dan dipetakan secara akurat di ACPI.

  • Windows menyediakan dukungan untuk Ekstensi Kelas SPB (spbcx.sys) di Windows 8 dan seterusnya. Mitra SoC bertanggung jawab untuk mengembangkan dan mendistribusikan kembali driver Pengontrol SPB yang sesuai.

  • Driver periferal untuk perangkat SPB umumnya disediakan oleh mitra Perangkat SPB. Microsoft menyediakan satu driver kelas untuk perangkat SPB untuk HID melalui I²C (hidi2c.sys).

  • Kelas perangkat dapat memberikan persyaratan HLK atau panduan WEG sekeliling topik berikut yang terkait dengan I²C:

    • Berbagi pengontrol I²C dengan perangkat lain
    • Kecepatan sinyal I²C pilihan
    • Manajemen daya dan skenario bangun melalui I²C dan GPIO.
  • Inter Integrated Circuit (I²C): I²C adalah bus utama yang divalidasi sebagai bagian dari SPB dan sangat direkomendasikan pada sistem SoC.

    Microsoft menyediakan persyaratan Program Kompatibilitas Perangkat Keras Windows untuk I²C. Gunakan Windows Hardware Lab Kit (HLK) untuk menguji perangkat terhadap persyaratan tersebut.

  • Simple Peripheral Interface (SPI): Dukungan untuk SPI bersifat opsional dan hingga mitra SoC. Program Kompatibilitas Perangkat Keras Windows tidak berisi persyaratan apa pun khusus untuk bus SPI.

Dukungan untuk SPB di seluruh sistem

Microsoft mendukung SPB pada sistem Arm dan platform x86/x64 (berjalan dalam konfigurasi S3). Microsoft mendukung SPB pada platform yang berjalan di konfigurasi Connected Standby (CS) dan S3.

Silakan hubungi penyedia platform Anda untuk driver dan dukungan.

Ada sejumlah skenario perangkat yang memanfaatkan SPB untuk konektivitas. I²C tersedia pada model daya tradisional CS dan S3. SoC modern dengan inti daya rendah sensor on-SoC dapat menerapkan solusi non-I²C sesuai kebutuhan.

Perangkat pada dok/port yang dapat dilepas juga harus mengikuti panduan sekeliling skenario docking, juga termasuk dalam WEG. Beberapa perangkat tersebut mungkin lebih masuk akal melalui bus seperti USB daripada I²C.

Ekstensi kerangka kerja SPB

Pustaka ekstensi kerangka kerja SPB memperluas Windows Driver Framework untuk mendukung driver SPB. Kerangka kerja SPB menyederhanakan pengembangan driver pengontrol SPB dan meningkatkan kompatibilitas antara driver periferal dan driver pengontrol dengan memberikan implementasi umum "bagian atas" driver yang memproses permintaan I/O (dibandingkan dengan "paruh bawah", yang didorong oleh bagian atas dan mengontrol perangkat keras). Ekstensi Kerangka Kerja SPB adalah pustaka ekstensi KMDF. Ini menangani pemrosesan permintaan SPB di muka dan urutan di mana mereka diserahkan ke driver pengontrol. Ekstensi kerangka kerja SPB dirancang untuk mendukung bus I²C dan SPI, dan mungkin sesuai untuk bus lain dengan semantik serupa.

Ekstensi Serial Framework

Pustaka ekstensi kerangka kerja serial memperluas kerangka kerja driver Windows untuk mendukung driver pengontrol serial. Demikian pula dengan kerangka kerja SPB, kerangka kerja serial menyederhanakan pengembangan driver pengontrol serial dan meningkatkan kompatibilitas antara driver periferal dan driver pengontrol dengan memberikan implementasi umum dari "setengah atas" driver yang memproses permintaan I/O. Ekstensi kerangka kerja serial adalah pustaka ekstensi KMDF. Ini menangani pemrosesan panggilan di muka ke API serial dan urutan di mana mereka diserahkan ke driver pengontrol. Ekstensi kerangka kerja serial dirancang untuk mendukung pengontrol UART modern dan menyederhanakan implementasi dan diagnosbilitas driver pengontrol.

Persyaratan I²C dan UART HLK

Ada persyaratan Program Kompatibilitas Perangkat Keras untuk pengontrol I²C dan UART. Persyaratan untuk SPI juga sedang dipertimbangkan untuk masa depan. Persyaratan logo terutama ditujukan untuk vendor silikon SoC untuk perangkat keras antarmuka bus dan driver pengontrol terkait. OEM dan ODM tidak diperlukan untuk memvalidasi ulang perangkat keras atau driver pengontrol tetapi dipersilakan untuk menjalankan pengujian jika diinginkan. Langkah-langkah pengaturan khusus diperlukan untuk memvalidasi persyaratan ini. Penyiapan mencakup hal-hal berikut:

  • Sistem terbuka dengan pin I²C /UART/port yang dapat diakses
  • Modifikasi di ACPI untuk mengekspos perangkat uji I²C/ UART ke perangkat lunak
  • Perangkat uji tertentu (WITT) yang terpasang pada sistem di bawah validasi

Untuk informasi pengaturan tambahan, silakan lihat dokumentasi Hardware Lab Kit (HLK).

Driver periferal

Periferal dijumlahkan oleh ACPI dan umumnya statis. Driver fungsi periferal menentukan sumber daya bus yang sesuai dengan berinteraksi dengan ekstensi kerangka kerja. Periferal dan pengontrol tidak hierarkis, dan periferal dapat menggunakan beberapa SPB, GPIO, Serial, dan bus berkecepatan tinggi lainnya. Driver periferal yang mengakses perangkat yang disematkan, seperti sensor, perangkat input, modem, dan radio, dapat ditulis dalam mode kernel atau mode pengguna. Driver ini mungkin portabel di berbagai konfigurasi papan ODM atau OEM selama ACPI diperbarui dengan tepat.

Firmware

Pengaturan ACPI pengontrol dan parameter bus khusus vendor dan tergantung pada pengontrol tertentu. Tabel berikut ini meringkas pengaturan ACPI untuk pengontrol dan bus periferal.

Bus Pengaturan ACPI pengontrol Pengaturan ACPI periferal
I²C

Alamat pengontrol

Menyematkan konfigurasi

Alamat bus

Laju jam

Mode budak

Mode alamat

SPI

Alamat pengontrol

Menyematkan konfigurasi

Chip pilih baris

Laju jam

Polaritas jam

Fase jam

Mode kawat

Pilihan perangkat

Polaritas pemilihan perangkat

Mode budak

UART

Alamat / pin pengontrol

Mengonfigurasi laju baud awal

Laju baud awal

Paritas

Mulai bit dan hentikan panjang bit

Metode kontrol aliran(Perangkat Keras/Perangkat Lunak/Tidak Ada)

Garis yang digunakan

Menerima ukuran buffer

Mengirimkan ukuran buffer

Endian-ness

Untuk contoh ACPI, lihat Cara Mendapatkan Pengaturan Koneksi untuk Perangkat. Untuk informasi selengkapnya tentang cara mengintegrasikan perangkat pada bus berdaya rendah, lihat Mengakses Perangkat GPIO, I2C, dan UART.

Alat dan referensi teknis

Judul Sumber Daya Jenis konten Deskripsi Tautan
Menggunakan Windows Driver Framework untuk membangun driver yang lebih baik Video Membahas bagaimana WDF dapat meningkatkan keandalan driver dan cara mewujudkan penghematan daya dan menyebarkan driver dengan lebih baik pada beberapa versi Windows. Channel 9
Memahami Bus Low-Power Video Menunjukkan cara mengintegrasikan perangkat pada bus baru dan membuat driver. Anda akan mempelajari cara menulis ACPI untuk menghitung periferal Anda dan mulai menulis dan menguji driver periferal. Channel 9
Panduan Desain Kerangka Kerja Driver Kernel-Mode Artikel Memperkenalkan Kernel-Mode Driver Framework (KMDF). MSDN
Panduan Desain UMDF 1.x Artikel Memperkenalkan User-Mode Driver Framework (UMDF). MSDN
Program Kompatibilitas Perangkat Keras Windows Artikel Menyediakan informasi tentang Program Sertifikasi Windows. MSDN