在我正在使用的设备树中,在其中一个节点中,归档的interrupts
是:
interrupts = <0x0 0x1d 0x4>;
(来自Pynq板的设备树,配备带双核ARM A9的ZYnq设备)
现在,在设备树.probe
函数中,我使用Linux内核API:
irq_line = platform_get_irq(pdev, 0);
以获取irq用于函数request_irq
(在ldd3第10章中描述)。
如果irq_line = platform_get_irq(pdev, 0);
被执行,我得到的值0x2e
与设备树的interrupts
的字段不匹配。
<0x0 0x1d 0x4>
个数是多少?我知道,根据elinux.org,interruptts - 设备节点的属性,包含一个中断说明符列表,一个用于设备上的每个中断输出信号。
如何使用 irq line (可能从这些数字开始)? irq line 与设备树相关吗?
为什么我得到的值与interrupts
的任何一个字段都不匹配?
我确信我误解了一些重要的话题,对不起。感谢您阅读问题并分享您的知识。
答案 0 :(得分:1)
什么是&lt; 0x0 0x1d 0x4&gt;号码?据我所知, 到elinux.org,(中断=&lt; 0x0 0x1d 0x4&gt ;;)
首先你需要查看设备节点的中断 - 父节点,这个父节点将是#interrupt-cells属性specifies number of bits needed to encode a interrupt source,所以从你的条目中断=&lt; 0x0 0x1d 0x4&gt ;;表示以下内容:
0x0 = shared processor interrupts
0x1d = interrupt number
0x4 = active high level-sensitive/[IRQ_TYPE_LEVEL_HIGH][2]
如何使用irq线(可能从这些数字开始)? irq线是否与设备树相关?
为什么我得到的值与任何一个字段都不匹配 中断?