linux内核中控制器中断no和中断no之间的关系

问题描述 投票:0回答:1

我正在i.mx6处理器中开发自己的CAN内核模块。现在我们要为CAN TX和RX编写ISR。我们可以编写ISR,但我的问题是使用request_irq函数注册我的ISR,我必须给出什么样的irq。控制器数据表中指定的中断no与上述函数中的irq no之间的关系是什么。

在此先感谢NSN

linux linux-kernel kernel linux-device-driver interrupt-handling
1个回答
0
投票

我们是在讨论片上FlexCAN还是像MCP2515这样的外部连接CAN控制器?内核中已有一个FlexCAN驱动程序。对于片上外设,IRQ已经在技术参考手册中定义。对于iMX6D / Q,请查看第3章中断和DMA事件。中断在设备树中指定,并使用request_irq进行检索。对于CAN控制器,假设通过SPI连接,GPIO可以用作中断,并且可以使用“interrupt-parents”和“interruptts”属性在设备树中指定中断。

对于确切的关系,让我们考虑一个例子。 CAN1节点是here,其“中断”属性的数量为110.如果查看TRM的第3节,假设FlexCAN1的IRQ号为142.由于ARM Cortex A9域号从32开始,只需减去这从142到110的数量。

编辑:似乎我没有完全清楚,并从设备树POV谈话。 request_irq的IRQ号应该来自对platform_get_irq的调用,它返回Linux IRQ号。另见this

© www.soinside.com 2019 - 2024. All rights reserved.