linux 应用层gpio中断_如何在嵌入式Linux中检测GPIO线路上的中断?

在pandaboard OMAP4中,GPIO_39上每隔10ms产生一次中断.我已在Linux驱动程序代码中为此注册了处理程序,但由于未检测到中断,因此未处理该处理程序.

我确保在硬件级别(通过探测gpio引脚)确实正在生成中断.只是软件无法检测到它.

我在驱动程序代码中有以下内容.

#define GPIO_NO 39

iowrite16(0x3,gpio_39_address + 2); /* Configured the pin 22 to be used as gpio. */

ret = gpio_request(GPIO_NO,”Claiming GPIO”);

if(ret

{

printk(KERN_ALERT “%s: Claiming GPIO_%d failedn”,__func__,GPIO_NO);

return -1;

}

else

{

printk(KERN_INFO “%s: Claiming GPIO_%d successfuln”,GPIO_NO);

}

ret = gpio_direction_input(GPIO_NO);

if(ret

{

printk(KERN_INFO “%s: Setting GPIO direction to input failedn”,__func__);

return -1;

}

else

{

printk(KERN_INFO “%s: Direction of GPIO_%d set to inputn”,GPIO_NO);

}

GPIO_IRQ = gpio_to_irq(GPIO_NO);

if(GPIO_IRQ

{

printk(KERN_INFO “%s: Mapping GPIO_%d to IRQ failedn”,GPIO_NO);

return -1;

}

else

{

printk(KERN_INFO “%s: Mapping GPIO_%d to IRQ_%d successfuln”,GPIO_NO,GPIO_IRQ);

}

if((request_irq(GPIO_IRQ,ten_ms_int,IRQF_TRIGGER_FALLING,DEVICE_NAME,NULL)))

{

printk(KERN_ALERT “%s: requeseting GPIO_IRQ %d failedn”,GPIO_IRQ);

return -1;

}

else

{

printk(KERN_INFO “%s: requesting GPIO_IRQ %d successfuln”,GPIO_IRQ);

}

irqreturn_t ten_ms_int(int irq,void *dev_id)

{

T_UINT32 l;

/* Enable spi channel */

l = ioread32(spi_base + SPI_CHCONF0);

l |= SPI_CHCONF0_FORCE;

iowrite32(l,(spi_base + SPI_CHCONF0));

l = ioread32(spi_base + SPI_CHCTRL0);

l |= SPI_CHCTRL_EN;

iowrite32(l,(spi_base + SPI_CHCTRL0));

/* Enable dma channel 0 */

l = ioread32(sdma_base + SDMA_CCR(CHANNEL0));

l |= SDMA_CCR_ENABLE;

iowrite32(l,sdma_base + SDMA_CCR(CHANNEL0));

/* Enable dma channel 1 */

l = ioread32(sdma_base + SDMA_CCR(CHANNEL1));

l |= SDMA_CCR_ENABLE;

iowrite32(l,sdma_base + SDMA_CCR(CHANNEL1));

//printk(KERN_INFO “%s: 10ms interrupt detected %dn”,irq); /* I know that I’ve to remove this printk statement */

return IRQ_HANDLED;

}

GPIO_39属于存储体GPIO2,相应的中断 为32.但是,gpio_to_irq()的返回值为199.这是另一个引起关注的原因.

如果代码中有问题或错过了某些内容,请告诉我.

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25302 人正在系统学习中 相关资源:菜鸟耍人专用-软件测试其他资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月13日
下一篇 2021年1月13日

相关推荐