设备树配置中断:interrupts属性详解

版权申诉
0 下载量 54 浏览量 更新于2024-08-08 收藏 17KB DOCX 举报
"设备树的interrupt" 在嵌入式系统和操作系统中,设备树(Device Tree)是一种描述硬件结构的数据结构,它帮助内核理解硬件的组织和配置。中断是计算机硬件与处理器通信的关键机制,用于通知CPU特定事件的发生。在设备树中,中断的处理和配置至关重要。本文将详细解释设备树中与中断相关的知识点。 1. **中断控制器**: - `interrupt-controller` 属性:这是一个空属性,用于声明节点是一个中断控制器,意味着它可以接收和管理中断请求。例如,GPIO、GPIO控制器或系统级中断控制器(如ARM的GIC)通常会有这个属性。 2. **#interrupt-cells**: - 这个属性定义了中断控制器节点需要多少个“单元”来描述一个中断。每个单元通常包含一个或多个32位整数,这些整数描述了中断的特性,如中断号、中断类型等。例如,如果`#interrupt-cells = <3>`,那么一个中断描述可能包括中断域、触发方式和CPU接口信息。 3. **interrupt-parent**: - 这个属性指定了设备节点所属的中断控制器。如果未设置,设备节点将默认关联到其父节点所关联的中断控制器。在示例中,`interrupt-parent = <&gic>;` 表明中断控制器是GIC(Generic Interrupt Controller)。 4. **interrupts**: - 这是设备节点的一个关键属性,用于指定设备的中断标识符列表。每个中断标识符可以是中断号,也可以是包含多个单元的复合值,具体取决于`#interrupt-cells`的设置。在示例中,`interrupts=<GIC_PPI13(IRQ_TYPE_EDGE_RISING|GIC_CPU_MASK_SIMPLE(2))>;` 描述了一个中断,其中包含了中断类型和触发方式。 5. **中断类型和触发方式**: - 在示例中,`IRQ_TYPE_EDGE_RISING`代表上升沿触发的中断,而`GIC_CPU_MASK_SIMPLE(2)`可能表示中断将发送到CPU的第二个核。 6. **中断控制器实例**: - 示例中的`gic:interrupt-controller@d000`节点是中断控制器的一个实例,兼容ARM Cortex-A9的GIC,它有自己的`#interrupt-cells`、地址和中断控制器属性。 7. **中断描述符**: - 当`#interrupt-cells`为3时,中断描述符通常包含中断域、中断触发方式和CPU接口信息。在某些情况下,中断域可能被省略,例如当所有设备共享相同的中断域时。 设备树的中断描述允许操作系统在初始化阶段有效地配置和管理硬件中断,确保系统能够正确响应硬件事件。理解这些中断相关的属性和概念对于编写有效的设备树源文件以及调试硬件中断问题至关重要。