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 |
---|---|
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. |
|
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. |
|
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. |
|
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). |
|
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. |
|
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. |
|
Pin I/O tujuan umum (GPIO) yang dikonfigurasi sebagai input interupsi dapat ditutupi dan dibuka kemasnya selain diaktifkan dan dinonaktifkan. |