interrupt-parent
是设备树(Device Tree)中用于描述硬件中断路由的一个属性,其核心作用是指定设备中断信号的上级控制器。以下是中文分步解释:
1. 基本概念
- 中断(Interrupt):硬件设备(如GPIO、网卡)通过中断信号通知CPU有事件需要处理(如数据到达)。
- 中断控制器:管理多个设备中断的硬件模块(如GIC、PIC),负责将中断信号路由到CPU。
2. interrupt-parent
的作用
- 当一个设备(如GPIO控制器)需要触发中断时,系统需知道该中断应由哪个中断控制器处理。
interrupt-parent
属性明确指定了该设备的直接上级中断控制器,确保中断信号能被正确路由。
3. 典型场景
假设系统中有以下硬件结构:
CPU
└── 中断控制器A(GIC)
└── 中断控制器B(GPIO中断控制器)
└── GPIO设备
- GPIO设备的中断需先到达
中断控制器B
,再由中断控制器B
转发给中断控制器A
,最终到达CPU。 - 在设备树中,
GPIO设备
的节点需设置:gpio-controller { interrupt-parent = <&interrupt_controller_b>; interrupts = <0 8>; // 中断号和触发方式 };
interrupt-parent
指向其直接上级控制器interrupt_controller_b
。
4. 与 parent
属性的区别
parent
:表示设备树节点的逻辑父节点(如GPIO控制器属于某个总线)。interrupt-parent
:仅用于中断路由,与设备逻辑层级无关。
5. 实际应用
- 在嵌入式Linux开发中,正确配置
interrupt-parent
可避免中断无法触发或路由错误的问题。 - 例如,ARM平台的GIC(Generic Interrupt Controller)通常作为顶级中断控制器,子控制器需通过
interrupt-parent
指向它。
通过 interrupt-parent
,设备树能够清晰描述复杂硬件的中断拓扑,确保系统正确响应硬件事件。