Bagikan melalui


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 mengontrol pengontrol SPB mereka secara langsung 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 sedikit koneksi listrik, SPB sering digunakan dalam aplikasi di mana daya baterai harus dikonservasi.

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 interupsi yang digunakan driver untuk menyambungkan ISR-nya. Namun, sumber daya perangkat keras untuk perangkat tidak menyertakan memori untuk register 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. Sebagai gantinya, 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 pendaftaran perangkat keras perangkat keras secara serial melalui SPB. Untuk informasi selengkapnya, lihat Interupsi dari perangkat-perangkat periferal SPB-Connected.