gpt4 book ai didi

c - 发出中断时不会调用中断处理程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:09 24 4
gpt4 key购买 nike

我正在为在 ARM 上运行的设备编写驱动程序。

这是 probe() 和 interrupt_handler() 的代码:

static irqreturn_t interrupt_handler(int irq, void *dev_id){
printk(KERN_ALERT "MY_IRQ: Interrupt handler executed!\n");
return IRQ_HANDLED;
}

static int mydevice_probe (struct platform_device *pdev) {
printk("-----------------------------------------PROBE CALLED \n");
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if(r == NULL) {
printk("platform_get_resource failed\n");
return -ENODEV;
}
irq = platform_get_irq(pdev,0);
if (irq < 0) {
printk("platform_get_irq failed\n");
return -ENODEV;
}

ret = request_irq(irq, interrupt_handler, IRQF_SHARED, pdev->name, &dev_num);
ret = misc_register(&mydevice_miscdevice);
return 0;
}

request_irq 成功返回 0 并将 IRQ #17 分配给驱动程序。问题是,当发出中断时,中断处理程序没有得到执行。

有什么想法吗?我错过了什么?

非常非常感谢!

最佳答案

首先,一个好的实践问题 - 对 request_irqmisc_register 的调用应该受到 if 子句的保护,printk在失败时返回 -EIO

也许您没有启用中断。您可能应该添加代码以在调用 request_irq 后清除并启用中断。

关于c - 发出中断时不会调用中断处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com