Bagikan melalui


Gangguan GPIO

Beberapa perangkat pengontrol I/O tujuan umum (GPIO) dapat mengonfigurasi pin GPIO mereka untuk berfungsi sebagai input permintaan interupsi. Input permintaan interupsi ini didorong oleh perangkat periferal yang terhubung secara fisik ke pin GPIO. Driver untuk pengontrol GPIO ini dapat mengaktifkan, menonaktifkan, menutupi, membuka kemasan, dan menghapus permintaan interupsi pada pin GPIO individual.

Dukungan untuk interupsi GPIO bersifat opsional. Ekstensi kerangka kerja GPIO (GpioClx) tidak memerlukan pengontrol GPIO untuk mendukung gangguan GPIO.

Di bagian ini

Topik Deskripsi

Interupsi Primer dan Sekunder

Penanganan gangguan GPIO secara inheren merupakan proses dua tahap. Interupsi dari pengontrol I/O tujuan umum (GPIO), yang menyebabkan ekstensi kerangka kerja GPIO (GpioClx) mengganggu rutinitas layanan (ISR) untuk dijalankan, disebut gangguan utama. ISR ini memetakan pin GPIO yang mengganggu ke gangguan sistem global (GSI), dan meneruskan GSI ini ke lapisan abstraksi perangkat keras (HAL). HAL menghasilkan interupsi sekunder untuk menjalankan ISR kedua yang secara logis terhubung ke pin GPIO melalui GSI ini. Proses ini ditunjukkan dalam diagram dalam Gambaran Umum Dukungan Driver GPIO.

Sumber daya Interupsi Berbasis GPIO

Driver untuk perangkat periferal yang mengirim interupsi ke pin I/O tujuan umum (GPIO) memperoleh gangguan GPIO sebagai sumber daya interupsi Windows abstrak. Driver kerangka kerja driver mode kernel (KMDF) menerima sumber daya ini melalui fungsi panggilan balik peristiwa EvtDevicePrepareHardware mereka.

ISR Tingkat Pasif

Dimulai dengan Windows 8, driver kerangka kerja driver mode kernel (KMDF) dan driver kerangka kerja driver mode pengguna (UMDF), dapat, sebagai opsi, mendaftarkan rutinitas layanan interupsi (ISR) mereka untuk berjalan pada tingkat pasif.

Panggilan Balik Terkait Interupsi

Sebagai opsi, driver untuk pengontrol I/O tujuan umum (GPIO) dapat memberikan dukungan untuk gangguan GPIO. Untuk mendukung gangguan GPIO, driver pengontrol GPIO menerapkan serangkaian fungsi panggilan balik untuk mengelola gangguan ini. Driver menyertakan pointer ke fungsi panggilan balik ini dalam paket pendaftaran yang disediakan driver ketika mendaftarkan dirinya sebagai klien ekstensi kerangka kerja GPIO (GpioClx).

Interupsi Sinkronisasi untuk Driver Pengontrol GPIO

Driver pengontrol GPIO dapat memanggil metode GPIO_CLX_AcquireInterruptLock dan GPIO_CLX_ReleaseInterruptLock untuk memperoleh dan melepaskan kunci interupsi yang diterapkan secara internal oleh ekstensi kerangka kerja GPIO (GpioClx). Kode driver yang berjalan di IRQL = PASSIVE_LEVEL dapat memanggil metode ini untuk disinkronkan ke rutinitas layanan interupsi (ISR) di GpioClx. GpioClx mendedikasikan kunci interupsi terpisah untuk setiap bank pin di pengontrol GPIO.

Mengaktifkan dan Menonaktifkan Interupsi GPIO Bersama

Dalam beberapa kasus, mengganggu baris permintaan dari dua atau beberapa perangkat periferal mungkin terhubung ke pin I/O tujuan umum (GPIO) fisik yang sama. Pin GPIO untuk baris interupsi bersama biasanya dikonfigurasi untuk interupsi yang dipicu tingkat.

Masker Interupsi GPIO

Pin I/O tujuan umum (GPIO) yang dikonfigurasi sebagai input interupsi dapat ditutupi dan dibuka kemasnya selain diaktifkan dan dinonaktifkan.