阅读:1468回复:15
同类型多板卡的驱动问题
各位高手,你们好!
今天一不小心被老板逮了个问题,同样的板卡装在一台机子上,驱动应该怎样处理,当场被问死,为了寻求解决办法,请高手们支援,否则,我过年都怕回不了家了。 在此,先行谢过。 |
|
|
沙发#
发布于:2003-12-29 14:48
不好意思,这里指的是多块同样的板子共存于一台机子上,请问驱动怎样写才行?
|
|
|
板凳#
发布于:2003-12-29 16:45
用户被禁言,该主题自动屏蔽! |
|
论坛版主
|
地板#
发布于:2003-12-29 17:38
原来的驱动肯定是不能用了,除非你每块卡安一个驱动,而且要创建的设备名就要不一样,这个可以通过注册表判断有几块卡,要不就在一个驱动里面把多卡情况也考虑到,直接处理多卡,ISR的中断号可以共享,改的地方就是有中断来了去读卡的中断状态寄存器判断是谁来的中断,另外就是对上层来的请求根据你自己的策略看发送给谁。可以自定义FILE_DEVICE_XXX后让IOCTL不同的代码来区分我看可以。这种情况对于卡数目固定的好办,如果不清楚有几块,而且可以动态添加的就需要注册表了吧,麻烦一点儿,但也只是工作量的问题。
|
|
地下室#
发布于:2003-12-29 18:00
首先得谢谢以上两位朋友的热心指点。不过,以前没有接触过类似的问题,而且对于驱动基本上没什么概念,虽然写过几个,但都是单卡的情况,请问能不能讲的具体一点,或者发点代码实例什么的,就感激不尽了。
E-mail:edbert@hotmail.com |
|
|
5楼#
发布于:2003-12-29 18:04
浏览了以往的一个类似的问题,有人答复说创建多个linkname,那么请问在APP中虽然是打开的linkname不一样,但是最终进入的驱动却是同一个,这是否涉及了代码重入?DeviceExtensioin中定义的全局变量岂不是受到限制和影响?
|
|
|
6楼#
发布于:2003-12-29 18:34
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于:2003-12-30 09:33
谢谢pengenwen,让我明白了DeviceExtension不受影响的道理。那么,我直接在AddDevice()中根据被调用的情况生成不同的linkname,
然后在APP中对不同的设备执行CreatFile(linkname_n),可以吗?是不是每有一个新的设备都会调用一次AddDevice()? 谢谢! |
|
|
8楼#
发布于:2003-12-30 09:36
还有就是,除了AddDevice()需要修改以外,在单卡驱动的基础上,还要修改那些部分?
|
|
|
9楼#
发布于:2003-12-30 10:35
谢谢pengenwen,让我明白了DeviceExtension不受影响的道理。那么,我直接在AddDevice()中根据被调用的情况生成不同的linkname, 应该是每有一个新的设备都会调用一次AddDevice() |
|
|
10楼#
发布于:2003-12-30 10:47
还有就是,除了AddDevice()需要修改以外,在单卡驱动的基础上,还要修改那些部分? 还有就是要注意全局变量和静态变量最好改成DeviceExtensioin的一个member value,不然的话,它们的值会影响所有的设备。 |
|
|
11楼#
发布于:2003-12-30 10:52
那么,现在有没有那位大师把解决同类型多块板卡共存一机的驱动问题给一个详尽的总结性陈述。我想,这将为我以及更多的关注这一问题的朋友带来深刻的影响和莫大的帮助。
这里先谢了。 另分数我可是捏的两手出汗了,^_^。 |
|
|
12楼#
发布于:2003-12-30 11:15
用户被禁言,该主题自动屏蔽! |
|
13楼#
发布于:2003-12-30 15:11
我决定给分:pengenwen 和 seaquester ,如何送出分数?二位,拜托!
|
|
|
14楼#
发布于:2003-12-30 15:32
用户被禁言,该主题自动屏蔽! |
|
15楼#
发布于:2003-12-30 18:51
不好意思,分是太少了点。以后补上。因为看见默认分是20,又想给两个人,所以....
|
|
|