Як налаштувати GPIO як переривання в Linux?

Доступ до вхідного GPIO в ядрі Linux

  1. Переконайтеся, що GPIO дійсний чи ні.
  2. Якщо він дійсний, ви можете запитати GPIO з підсистеми ядра GPIO.
  3. Встановіть напрямок GPIO як вхід.
  4. Встановіть інтервал усунення дребезгу.
  5. Прочитайте GPIO.
  6. Ви вмикаєте IRQ також для ініціювання краю/рівня, якщо вам це потрібно.

Резюме: як запустити переривання GPIO

  1. Напишіть ISR, всередині якого ви. …
  2. Зв'яжіть ISR з правим вектором переривання.
  3. Налаштуйте подію GPIO, яка має ініціювати переривання. …
  4. Увімкніть переривання для контакту всередині GPIO. …
  5. Увімкніть переривання всередині контролера переривань.

Тож, наприклад, якщо я хочу встановити GPIO, мені доведеться:

  1. Визначте номер лінії GPIO.
  2. Експортуйте GPIO, записавши його номер у /sys/class/gpio/export.
  3. Налаштуйте рядок GPIO як вихідний запис у /sys/class/gpio/gpioX/direction.
  4. Установіть для GPIO запис 1 на /sys/class/gpio/gpioX/value.

Найбільш часто використовуваною бібліотекою для цієї мети є Бібліотека ESP-IDF (Iot Development Framework)., який розробляє та підтримує Espressif (компанія, що виробляє ESP32). Цей код налаштовує контакт GPIO 2 як вихід і встановлює для нього значення High. У цьому випадку світлодіод, підключений до Pin2, увімкнеться.

Переривання може бути викликане програмним шляхом за допомогою інструкції ' int '. Наприклад, системний виклик Linux використовував int $0x80. Отже, якщо ми хочемо викликати переривання IRQ11, програмно ми повинні додати 11 до вектора IRQ0.