Linux - Devicetree规范: 中断和中断映射

本文详细解析了devicetree规范中的中断管理和中断树模型,介绍了中断源、中断控制器、中断关系和相关属性的使用。实例展示了中断控制器如OpenPIC和PCI映射的配置方法,以及如何在设备树中表示中断路径。

参考:

Specifications - DeviceTree

Releases · devicetree-org/devicetree-specification · GitHub

devicetree-specification-v0.4-rc1.pdf (但里面标注是:Devicetree Specification Release v0.3-40-g7e1cc17)

2.4 中断和中断映射 Interrupts and Interrupt Mapping

DTSpec采用Open Firmware Recommended Practice:Interrupt Mapping, Version 0.9 中规定的表示中断的中断树模型。在设备树中存在一个逻辑中断树,它代表了平台硬件中中断的层次和路径。虽然一般被称为中断树,但在技术上是一个有向无环图(directed acyclic graph)。

中断源到中断控制器的物理线路在devicetree中用interrupt-parent属性表示。代表中断产生设备的节点包含一个interrupt-parent属性,它有一个phandle值,指向的是该设备的中断被接受的设备,通常是一个中断控制器。如果一个产生中断的设备没有interrupt-parent属性,那么它的interrupt-parent就被认为是它的devicetree的父节点。

每个产生中断的设备都包含一个interrupts属性,其值描述了该设备的一个或多个中断源。每个中断源用一个名为interrupt specifier的信息结构所表示。interrupt specifier的格式和含义是特定于中断域的,也就是说,它依赖于其中断域根部节点上的属性。中断域的根节点使用#interrupt-cells属性来定义编码interrupt-specifer所需的<u32>值的数量。例如,对于Open PIC中断控制器来说,一个interrupt-specifer需要两个32位的值,由中断号和中断的电平/感应信息组成。

中断域是解释interrupt specifier的上下文。域的根是(1)一个中断控制器(interrupt controller)或(2)一个中断关系(interrupt nexus)。

1. 中断控制器是一个物理设备,需要一个驱动程序来处理通过它路由的中断。它也可以级联到另一个中断域中。中断控制器是由devicetree中该节点上的显示的interrupt-controller属性所指定。

2. 中断关系定义了一个中断域和另一个中断域之间的转换。这种转换是基于特定于中断域和总线的信息。这种域之间的转换是通过interrupt-map属性进行的。例如,一个PCI控制器设备节点可以是一个interrupt nexus,它定义了从PCI中断命名空间(INTA、INTB等)到具有中断请求(IRQ)编号的中断控制器的转换。

当对中断树的遍历到达一个没有中断属性的中断控制器节点,从而没有明确的中断父节点时,中断树的根就确定了。

请看图2.3,这是一个带有中断父级关系的设备树的图形表示例子。它既显示了设备树的自然结构,也显示了每个节点在逻辑中断树中的位置。

图2.3 中断树举例

在图2.3的例子中:

 - open-pic中断控制器是整个中断树的根节点

 - 这个中断树有三个子设备,它们的中断会直接传递给open-pic

 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值