现在的位置: 首页 > 综合 > 正文

中断上下半部原理以及实践

2013年11月29日 ⁄ 综合 ⁄ 共 578字 ⁄ 字号 评论关闭

中断一般可以分成上半部以及下半部,所谓中断上半部cpu通常是关中断的,这个时候主要是从硬件那里接收一些数据,然后触发中断下半部。一出中断后,根据相应的中断下半部的优先级去执行相应的中断下半部。中断下半部主要用于数据的处理,这个时候中断往往是打开的。为什么要有中断上下半部的原因主要有两点:

1 如果中断函数内处理的事情非常多的话,因为这个时候cpu 是关中断的,这样会无法及时相应其它的中断,对实时性损害太大。

2 中断的处理是可以是有优先级的,有的硬件设备的中断处理可以延迟处理,但是有的必须马上要处理,这也是为什么中断下半部有task 0 和workqueue, idle event的原因。

 

具体流程如下图所示:

rawos支持的中断下半部方法有task 0 以及workqueue, task 0 的优先级要高于workqueue。workqueue的优先级是高于idle event 的。task 0 和workqueue的区别是task 0 不能调用能引起睡眠的函数,但是workqueue是能调用引起睡眠的函数的, idle event是基于事件驱动的,优先级是最低的,也可以做为中断下半部去使用,如果这个中断的处理优先级是很低的话。

 综上所述,raw os为软件化的区分中断优先级提供了有效地手段,即task 0,workqueue以及idle event。对于系统的实时性也有了根本的保障。

抱歉!评论已关闭.