Panduan Desain Driver Bus Periferal Sederhana (SPB)

Bagian ini menjelaskan cara menulis driver untuk perangkat pengontrol bus periferal sederhana (SPB) atau untuk perangkat periferal yang terhubung ke SPB. Kategori SPB mencakup bus seperti I²C dan SPI. Vendor perangkat keras untuk perangkat pengontrol SPB menyediakan driver pengontrol SPB untuk mengelola fungsi perangkat keras di pengontrol. Driver ini mungkin mendukung keluarga perangkat pengontrol serupa. Vendor perangkat keras untuk perangkat periferal yang terhubung dengan SPB menyediakan driver periferal SPB untuk mengelola fungsi perangkat keras di perangkat periferal. Driver ini mungkin mendukung keluarga perangkat periferal di berbagai platform perangkat keras yang menyediakan SPB yang kompatibel.

Dalam versi Windows sebelum Windows 8, sistem operasi memperoleh informasi dari perangkat yang terhubung dengan SPB pada motherboard PC hanya secara tidak langsung melalui firmware platform. Dimulai dengan Windows 8, vendor perangkat keras dapat menyediakan driver Windows untuk secara langsung mengontrol pengontrol SPB dan perangkat periferal yang terhubung dengan SPB mereka, dan untuk membuat perangkat ini tersedia untuk digunakan oleh sistem operasi dan oleh aplikasi. Untuk informasi selengkapnya, lihat Driver Pengontrol SPB dan Driver Perangkat Periferal SPB.

SPB sering digunakan untuk menghubungkan perangkat periferal berkecepatan rendah ke chipset motherboard dan modul System on a Chip (SoC). Sirkuit terintegrasi memerlukan lebih sedikit pin untuk terhubung ke bus serial daripada ke bus paralel, yang mengirimkan beberapa bit data per siklus jam. Biasanya, SPB digunakan dalam aplikasi yang sensitif terhadap biaya di mana jumlah pin rendah dan koneksi sederhana lebih penting daripada kecepatan transmisi data. Karena SPB berjalan pada kecepatan rendah dan membutuhkan beberapa koneksi listrik, mereka sering digunakan dalam aplikasi di mana daya baterai harus dilestarikan.

Misalnya, motherboard PC di komputer laptop mungkin menggunakan bus I²C untuk berkomunikasi dengan perangkat berkecepatan rendah yang memantau tingkat baterai. Demikian pula, modul SoC di ponsel pintar atau perangkat seluler lainnya mungkin menggunakan bus I²C untuk terhubung ke perangkat sensor, seperti akselerometer, perangkat GPS, atau sensor suhu.

SPB bukan bus Plug and Play. Perangkat periferal biasanya memiliki koneksi tetap ke SPB dan tidak dapat dihapus. Bahkan jika perangkat periferal dapat dilepas dari slot pada SPB, slot biasanya didedikasikan untuk perangkat ini. Selama startup sistem, firmware ACPI di platform perangkat keras menghitung perangkat periferal yang terhubung dengan SPB untuk manajer Plug and Play, dan menentukan sumber daya perangkat keras yang didedikasikan untuk setiap perangkat.

Disertakan dalam sumber daya ini adalah ID koneksi yang mengidentifikasi koneksi perangkat ke SPB. ID koneksi merangkum informasi (misalnya, alamat bus dan frekuensi jam bus) yang diperlukan pengontrol SPB untuk membuat koneksi ke perangkat. Sumber daya perangkat keras lainnya mungkin termasuk gangguan di mana driver menyambungkan ISR-nya. Namun, sumber daya perangkat keras untuk perangkat tidak menyertakan memori untuk daftar perangkat. Perangkat periferal yang terhubung dengan SPB tidak dipetakan memori dan hanya dapat diakses melalui SPB. Untuk informasi selengkapnya, lihat ID Koneksi untuk Perangkat Periferal SPB-Connected.

SPB tidak menyediakan cara khusus bus untuk menyampaikan permintaan interupsi dari perangkat periferal ke prosesor. Sebaliknya, perangkat periferal yang terhubung dengan SPB menandakan gangguan melalui jalur perangkat keras terpisah yang terletak di luar spb dan pengontrol SPB. Rutinitas layanan interupsi (ISR) untuk perangkat periferal yang terhubung dengan SPB harus berjalan di IRQL = PASSIVE_LEVEL sehingga dapat secara sinkron mengirim permintaan I/O untuk mengakses daftar perangkat keras perangkat keras secara serial melalui SPB. Untuk informasi selengkapnya, lihat Gangguan dari Perangkat Periferal SPB-Connected.