强大的arm板——中断与轮询你选择谁?

一.问题的引出

有这样一道嵌入式的面试题,中断方式与轮询方式哪个效率高?

   我们先谈谈中断与轮询。

二.中断

1.中断的定义

中断是指CPU在执行过程中出现了某些突发事件时,CPU必须暂时当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置,并继续执行。

2.中断诞生记

(1)外设设备的处理速度慢于CPU
(2)轮询,定期做设备检查做了不少无用功

3.中断注册函数

我的开发板是三星S5PV210,它的中断注册函数为:request_irq(irq,handler,flags,name,dev)
irq:中断号
handler:中断处理函数 irqreturn_t (*) (int,void*)
flags:中断标志位
IRQF_SHARED:表示多个设备可以共享一个中断号
IRQF_SAMPLE_RANDOM:随机数
IRQF_TRIGGER_RISING:上升沿触发
IRQF_TRIGGER_FALLING:下降沿触发
IRQF_TRIGGER_HIGH:高电平出发
IRQF_TRIGGER_LOW:低电平出发
name:名称
dev:传递给回调函数handler的参数
返回值:0  注册成功
     非0注册失败

4.中断的特点

(1)中断处理程序不属于任何一个进程
(2)在中断上下文中不能调用可能引起阻塞的函数,也不能执行sleep
(3)在中断上下文中不执行内核与用户空间的数据交换

5.中断处理流程


.轮询

1.轮询的定义

    轮询是一种CPU决策如何提供周边设备服务的方式,又称"程控输出入"(Programmed I/O)。轮询法的概念是,由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。


四.问题分析

    回到刚才的那个问题,如果面试官给你提了这个问题,给我的感觉是下了一个套。看了一些书籍,认为中断效率高于轮询,我的观点是:具体情况具体分析。
    为什么这么说呢?
如果请求设备是一个频繁请求CPU的设备,或者有大量数据请求的网络设备,轮询方式效率更高。
    如果该设备请求频率比较低,中断的效率会更高一些。


一般情况下,外接的设备请求率都比较低,大多数硬件设备驱动程序开发都采用中断方式。
  

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值