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