Linux内核中断的上半部与下半部简介

本文介绍了Linux内核中断框架的上半部和下半部概念,强调如何根据处理速度和时间敏感性划分操作,以及如何利用下半部机制优化中断处理。通过实例说明了如何在电容触摸屏中断处理中进行优化。
摘要由CSDN通过智能技术生成

一.  简介

上一篇文章学习了 Linux内核提供的中断 API函数。文章地址如下:

Linux内核中断框架简介与中断API函数-CSDN博客

本文继续来学习 Linux内核中断框架。主要来学习一下:Linux内核中断的上半部与下半部,为了实现中断驱动开发做准备。

二.  Linux内核中断的上半部与下半部

1.  Linux内核中断的上半部与下半部简介

我们在使用 request_irq()函数 申请中断的时候,注册的中断服务函数属于中断处理的上半部,只要中断触发,那么 中断处理函数就会执行。

举例说明:

有些中断处理过程就是比较费时间,我们必须要对其进行处理,缩小中断处理函数的执行时间。比如,电容触摸屏通过中断通知 SOC(例如 IMX6ULL芯片) 有触摸事件发生, SOC 响应中断,然后 通过 IIC 接口读取触摸坐标值,并将其上报给系统。 但是,我们都知道 IIC 的速度最高也只有 400Kbit/S ,所以,在中断中通过 IIC 读取数据就会浪费时间。
我们可以将通过 IIC 读取触摸数据 的操作暂后执行,中断处理函数仅仅相应中断,然后清除中断标志位即可。
这个时候中断处理 过程就分为了两部分:

上半部:上半部就是中断处理函数,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。

下半部:如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部 去执行,这样中断处理函数就会快进快出。

2.  如何分配上半部与下半部功能实现

因此, Linux 内核将中断分为上半部和下半部的主要目的就是实现中断处理函数的快进快 出,那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。
剩下的所 有工作都可以放到下半部去执行。例如, 在上半部将数据拷贝到内存中,关于数据的具体处理就 可以放到下半部去执行。
至于哪些代码属于上半部,哪些代码属于下半部并没有明确的规定, 一切根据实际使用情况去判断,这个就很考验驱动编写人员的功底了。
这里有一些可以借鉴的参考点:

(1)如果要处理的内容不希望被其他中断打断,那么可以放到上半部。

(2)如果要处理的任务对时间敏感,可以放到上半部。

(3)如果要处理的任务与硬件有关,可以放到上半部

除了上述三点以外的其他任务,优先考虑放到下半部。

上半部处理很简单,直接编写中断处理函数就行了,关键是下半部该怎么做呢? Linux 核提供了多种下半部机制,接下来我们来学习一下这些下半部机制。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值