Глава 5.10 Связываем GPIO с прерываниями в ядре Linux: от Device Tree до gpiod_to_irq()
В этом видео мы подробно рассмотрели, как привязать GPIO-линии к системе прерываний (IRQ) в Linux на примере Raspberry Pi и собственного драйвера. Это позволяет обрабатывать нажатия кнопок и другие события мгновенно — без опросов (polling), и без избыточной нагрузки на процессор. 🔎 Что показано и объяснено: Как в .dts правильно описать interrupt-parent и interrupts = gpio_num flags Что означает IRQ_TYPE_EDGE_FALLING, IRQ_TYPE_LEVEL_HIGH и как это влияет на обработку Как получить IRQ из GPIO через gpiod_to_irq() Как зарегистрировать обработчик через request_irq() или devm_request_irq() Как выглядит функция irq_handler_t, что нужно возвращать, и как логировать прерывания Почему не стоит использовать poll() одновременно с IRQ 📦 Важные детали: Поддержка IRQ зависит от контроллера — не все GPIO это умеют Неверное описание в DT приведёт к -EINVAL при request_irq() Обработчик не должен быть "тяжёлым": быстрые действия, логика в workqueue/tasklet ✅ В результате мы: Связали Device Tree, pinctrl и IRQ subsystem Сделали кнопку на GPIO 17, которая вызывает прерывание по спаду сигнала Зарегистрировали key_isr() и убедились, что сообщение попадает в dmesg Осознали: IRQ + GPIO = идеальный способ реагировать на внешние сигналы в embedded-системах 🎯 Подходит для: разработчиков Linux-драйверов; тех, кто работает с GPIO, кнопками, сенсорами; embedded-разработчиков на Raspberry Pi; студентов, изучающих архитектуру Linux kernel.
Название:
Глава 5.10 Связываем GPIO с прерываниями в ядре Linux: от Device Tree до gpiod_to_irq()
Категория:
Разное