阅读:1575回复:12
再问有关中断的问题,很郁闷
一个WLAN驱动,需要支持VLIO接口。
1)因为是一个NDIS驱动,需要在DriverEntry里面wrapper。那么入口就不能是XXX_Init()类型,是不是这样的? 2)而且,假设我的中断号能够保证唯一,那么是不是不需要用ISR?看文档上面说,是在不能保证唯一的时候才需要靠ISR中返回某个值来确定调用IST,尤其是PCI的。 3)ISR+IST和miniport_ISRHandler+miniport_HandleInterruptHandler有什么不同?是不是NDIS的ISR调miniport_ISRHandler,然后IST调miniport_HandleInterruptHandler?如果是的话,那么就没有必要自己写ISR和IST了是不是? 4)做接口转换一般需要做些什么改动? 5)是不是可以不指定Sysintr,而在程序里去查询得到? 6)本贴只能给100分,另外开贴给分。 请各位高手们帮帮忙啊。 |
|
沙发#
发布于:2005-01-12 15:00
我来说两句吧:
(1)应该使用DriverEntry函数,在此进行任何通用的与平台相关的初始化; (2)如果要进行硬件中断处理肯定需要isr,而且如还要做进一步处理的话那么还需要ist。文档的意思是说,对于多个设备共享的中断,在你的设备的isr中要返回与你的ist相关的那个逻辑中断值,只有这样你的ist才会被调用。对于独占的中断(你的情况就是),你的isr中也要返回这个值,只有这样你的ist才会被调用,这个值就是与你的硬件中断相对应的逻辑中断。 (4)你需要做哪些接口转换啊? (5)Sysintr既可以直接显式指定,也可以在程序里调用相应函数查询得到。 [编辑 - 1/12/05 by wwei_wang] |
|
|
论坛版主
|
板凳#
发布于:2005-01-12 15:22
1.网卡驱动是被NDIS WRAPPER和上层隔离的,MINIPORT的驱动需要实现哪些接口兄弟需要看看MSDN的帮助的NIC的文档
2.NIC的ISR始终是要的,你总要有代码首先响应中断并清除,在报告给系统 3.miniport_ISRHandler+miniport_HandleInterruptHandler就是NIC的ISR+IST 4.接口转换?什么接口 5.查询得到SYSINTR需要OEMIOCONTROL支持,如果有就可以 |
|
地板#
发布于:2005-01-12 15:39
谢谢先。
在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceddk5/html/wce50coninterruptnotifications.asp 里面说"You might choose to install an ISR to handle interrupts for the device. This is required if the interrupt is shared between two or more devices, which is a common occurrence with PCI devices"。 这不就是说如果我的中断没有共享的话就可以不用写ISR吗? 而且原来没有用ISR也一样工作呀。 接口是VLIO,有哪位大哥做过吗? |
|
论坛版主
|
地下室#
发布于:2005-01-12 15:51
兄弟,我们最都说干了(我记得说了好多次了喔),真的要ISR,真的,相信e MO错的:((
我还是解释一下吧,PCI总线总共只有4根中断线(没记错的话好像是INTA B C D)而总线上挂的设备可能有很多,所以有些需要共用一个中断信号,这些中断信号全部被连在一起送到中断控制器,当这个中断线上有信号过来,中断控制器将这个请求发送给处理器,处理器执行这个中断信号的中断服务程序,当多个设备共用一个中断的时候,中断服务程序需要能够为每个设备服务,为了满足系统扩展的要求,这个过程被设计成把所有这些设备的中断服务程序串在一起,当中断来后依次调用,那么前面的ISR就需要判断这个中断是不是来自自己的设备,如果是就处理后返回,不是自己的他要告诉系统,这样系统就会顺着这个链继续往下,直到找到提出中断的那个设备。你不写ISR谁来处理你的NIC的中断呢? 你不写isr系统也可以工作,其他设备的isr存在,但你的中断永远不会被响应。 |
|
5楼#
发布于:2005-01-12 15:54
不是不相信,只是没搞懂,想不明白。
呵呵,多谢多谢。 这个帖子没有分了,我再开一个吧。 |
|
6楼#
发布于:2005-01-12 15:55
就是嘛,只要处理硬件中断肯定要有isr,没有isr怎么处理中断?而ist则根据需要可有可无。
|
|
|
7楼#
发布于:2005-01-12 16:01
以前没有接触过CE和NDIS,不懂的地方太多了。谢谢两位。
|
|
论坛版主
|
8楼#
发布于:2005-01-12 16:23
哪里哪里,兄弟谦虚了,我是说我们好像都讨论了好多次了:)))
关键是先想想你的nic的工作过程,你如果有例子可以看看例子里面的isr,然后仿照着做就行了 |
|
9楼#
发布于:2005-01-12 16:32
大家都太谦虚了 :D :D :D
|
|
|
论坛版主
|
10楼#
发布于:2005-01-12 16:47
大家都得好好改改自己的这个毛病了!
|
|
11楼#
发布于:2005-01-13 07:14
哈哈,有道理有道理。
|
|
12楼#
发布于:2005-01-17 19:44
哈哈,有道理有道理。 |
|