Lazy loaded image
02. 中断资源获取与设备树配置详解
Words 3017Read Time 8 min
2025-12-23
本节详细介绍在嵌入式Linux设备树中指定中断的方法,以及在驱动代码中获取中断号的多种途径。内容涵盖中断控制器的描述属性、interrupt-parent与interrupts的使用、interrupt-map映射机制,并结合GIC和GPIO实例详解中断配置,最后介绍内核提供的各类API函数用于解析和获取中断资源。

一、设备树中断配置详解

1. 中断控制器的基本属性
2. 设备节点中断配置方式
3. interrupt-map复杂映射机制

二、设备树中断解析流程

三、驱动中获取中断号的API详解

1. Platform设备标准方法
2. 设备树直接解析方法
3. GPIO转中断方法

四、中断获取流程可视化

五、实际应用示例

完整的按键驱动中断处理

六、API函数对比总结

API函数
适用场景
优点
缺点
platform_get_irq()
Platform设备驱动(MMIO设备、SoC内置外设)
最标准,支持ACPI和DT,自动处理资源
仅适用于platform_device
irq_of_parse_and_map()
直接从设备树节点解析(非platform设备)
灵活,可用于任何设备树节点
不支持ACPI,需手动管理
of_irq_get()
I2C/SPI设备驱动,需要错误处理
返回负数错误码便于处理,适合总线设备
相比parse_and_map多一次函数调用
gpio_to_irq()
GPIO引脚作为中断源(传统GPIO编号)
简单直接,兼容旧代码
需要先申请GPIO,使用全局GPIO编号
gpiod_to_irq()
GPIO引脚作为中断源(使用GPIO描述符)
类型安全,推荐新代码使用,支持设备树
需要GPIO子系统支持

七、调试技巧

 
上一篇
宏的用法
下一篇
Guide to Linux System

Comments
Loading...