首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

间断服务子程序是不是就是驱动程序

2013-06-25 
中断服务子程序是不是就是驱动程序?中断服务子程序是不是就是驱动程序?进程向CPU发出中断请求-》保存CPU环

中断服务子程序是不是就是驱动程序?
中断服务子程序是不是就是驱动程序?

进程向CPU发出中断请求-》保存CPU环境-》转到中断服务子程序
这里的中断服务子程序是驱动程序吗?还是中断服务子程序会调用驱动程序?求大神?
[解决办法]
我来谈谈我的看法,举个例子比如看门狗驱动,设备节点名为watchdog,我们编写看门狗驱动,里面有open,read,write,ioctl等接口的实现。
fd=“/dev/watchdog”
write(fd,0)
这个应用层write怎么最终调用内核中的看门狗驱动中的write的呢?
应用层write先调用c库里的write,然后C库里的write会触发一个int $0x80软件中断,内核中有一个中断向量表,里面每一项都存放唯一的一个中断号,中断服务程序地址。当响应了$0x80这个软件中断后,内核根据应用层传来的fd,把这个fd转化成一种中断号,由这个中断号找到对应的中断服务程序,中断服务程序再进行很复杂的调用才走到看门狗驱动的write中。总结下,就是一般应用程序中的API调用C库,C库再调用内核中的系统调用,根据内核中的中断向量表,来执行相应的驱动。

但是你说的中断服务子程序是驱动程序的说法不错误的,其实内核中到处都是中断,没有中断机制,内核根本无法打断正在执行的事情,中断是中断,驱动是驱动。
根据前面的分析,你也会知道,任何应用层的函数,如read,write,open等都会进行系统调用(也就是触发一个软件中断),系统调用经过一系列复杂转换后最终都会调用驱动程序中对应的操作函数。
[解决办法]
中断分内部中断和外部中断,外部中断是由硬件触发的,用于告诉操作系统,外部硬件发生了一件事,然后系统去处理这件事,中断子程序就是处理这件事的方法。比如说sd卡插拔都会引起中断,系统根据中断初始化卡或者注销卡,中断子程序这段代码确实是包含在驱动中的,运行的时候也是在内核态运行的,但是这段代码只是驱动的一部分,内容很少的,只做一些必要的操作,比如清除中断位,搬运一些重要的数据等。所以中断子程序与驱动程序不能等同的看。
[解决办法]
不全对,这要看情况
[解决办法]
个人理解,中断服务子程序很多时候只是驱动程序的一部分

热点排行