linux 底层驱动中断分析和一般使用(顶半部与底半部)

本文介绍了Linux系统下中断处理的概念,重点关注中断向量表和在Amlogic平台上的应用。通过request_irq函数详细阐述了中断号获取、中断服务函数设置以及参数配置。同时,讨论了中断的启用、关闭以及中断处理的顶半部和底半部,建议在适合的情况下使用tasklet或workqueue来处理底半部分,以适应不同场景的需求。
摘要由CSDN通过智能技术生成

中断是个老掉牙的概念了,无需在解释了。

中断到来时,CPU自动运行到某一个地址,那么中断很多,会形成很多个地址,那么多了就成了一个表格了,哎呀,中断向量表。。。。。

因为现在有amlogic的项目,所以就以amlogic的平台作为分析对象,讲解实际的使用方法以及注意事项。

   amlogic_gpio_to_irq(pdata->key[i].pin, MOD_NAME,
                    AML_GPIO_IRQ(irq_keyup, FILTER_NUM7,GPIO_IRQ_RISING));

                amlogic_gpio_to_irq(pdata->key[i].pin, MOD_NAME,
                    AML_GPIO_IRQ(irq_keydown, FILTER_NUM7,GPIO_IRQ_FALLING));
request_irq(irq_keyup + INT_GPIO_0, kp_isr, IRQF_DISABLED, "irq_keyup", kp)
这是一个普通GPIO的中断的申请。

static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
	    const char *name, void *dev)
{
	return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}

request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)

irq:是中断号,但是这个irq的话一般不会固定的去定义,一般会有一个函数叫做xxx_gpio_to_irq,通过实际的GPIO端口,返回gpio的实际在内核中的irq的中断号。

handler:中断服务函数,

flags:

/*
 * These flags used only by the kernel as part of the
 * irq handling routines.
 *
 * IRQF_DISABLED - keep irqs disabled when c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值