hothand
驱动牛犊
驱动牛犊
  • 注册日期2002-01-11
  • 最后登录2009-02-05
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1614回复:16

多块相同PCI卡的驱动开发及应用问题!放分罗!!

楼主#
更多 发布于:2003-06-16 16:14
制作了多块相同的PCI卡,所有的卡功能相同,工作方式相同,只是
映射不同的储存空间,
请问:是否编写一个驱动程序就可以了?(使用DS)
      驱动程序里面如何区分这些卡
      应用程序如何区分这些卡
刚开始开发,幼稚问题,也请回答几句!

目前一块PCI已经可以工作正常,不知道多块加上去怎么办?

最新喜欢:

pplppl
Hothand
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-06-16 18:57
一个drvier就够了。
app可以通过guid来识别
driver就不说了。。。
hothand
驱动牛犊
驱动牛犊
  • 注册日期2002-01-11
  • 最后登录2009-02-05
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-17 08:36
老大,能不能详细一点,
inf文件要修改吗?
每一片的NVROM的值是不是都一样?
不同的GUID在那里创建的,我目前用的是linkname打开创建句柄

来个step-step帮助吧!谢谢

问题解决,还要重谢哟!呵呵
Hothand
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-06-17 11:26
inf也不用改。
---------------
每一片的NVROM的值是不是都一样?
---------------
不知道。
用linkname?那简单,创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2,呵呵
hothand
驱动牛犊
驱动牛犊
  • 注册日期2002-01-11
  • 最后登录2009-02-05
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-17 11:33
创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2

怎么加?驱动里面是不是自动完成1,2,3添加的?
不解呀!
Hothand
jjs
jjs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录2004-06-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-17 15:38
通过判断板卡所在的槽位号进行控制也许可以吧
linjing
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2008-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-17 18:22
通过判断板卡所在的槽位号进行控制也许可以吧


请教怎么判断槽位号??
粼粼
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-06-17 19:24
创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2

怎么加?驱动里面是不是自动完成1,2,3添加的?
不解呀!

看art baker的《2K driver设计指南》
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2003-06-17 19:44
在waly oney的书上也找了一段 :D

UNICODE_STRING devname;
static LONG lastindex = -1;
LONG devindex = InterlockedIncrement(&lastindex);
WCHAR name[32];
_snwprintf(name, arraysize(name), L\"\\\\Device\\\\SIMPLE%2.2d\", devindex);
RtlInitUnicodeString(&devname, name);
IoCreateDevice(...);

仅作参考
hothand
驱动牛犊
驱动牛犊
  • 注册日期2002-01-11
  • 最后登录2009-02-05
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-18 08:33
看看我这种想法对不对?

先开发一块PCI卡的驱动,正常运转。
再插上一切相同的卡,硬件和NVROM中的内容都一样,
驱动程序遍历所有的PCI槽,识别这几个PCI卡,多次调用
AddDevice();从而创建不同的FDO,当然也创建了不同的
linkName0、linkname1,linkname2等等,应用程序则使用
不同的linkname打开相应的设备。

是不是?现在还没有实践,呵呵!
Hothand
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2003-06-18 10:19
不需要你的driver去查找PCI设备了。有bus driver呢。
对应每个你的PCI卡,AddDevice都会被调用,你在AddDevice用linkname也好,用guid(IoRegisterDeviceInterface)也好,不同的卡就可以有不同的linkname or interface
至于怎么把linkname或interface给app,看你怎么组织了。
xishuwang
驱动牛犊
驱动牛犊
  • 注册日期2003-04-27
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-20 16:01
你的问题很好解决,卡当然应该是完全一样,只要一个驱动程序就可以,不过你的驱动应该是针对多卡选一而设计的,这样的话,你的驱动入口参数可以多加一个(一般为两个vender_id,device_id),就是再加一个索引id,这样就完全可以去访问你要的那块卡。
我现在也有类似你的开发,不过比你惨多了,因为我不能改动驱动程序(驱动程序是针对一卡开发的),却要实现多卡选一的功能,不知道你有什么好方法??交流交流,谢谢11111
linjing
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2008-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-20 22:29
你的问题很好解决,卡当然应该是完全一样,只要一个驱动程序就可以,不过你的驱动应该是针对多卡选一而设计的,这样的话,你的驱动入口参数可以多加一个(一般为两个vender_id,device_id),就是再加一个索引id,这样就完全可以去访问你要的那块卡。
我现在也有类似你的开发,不过比你惨多了,因为我不能改动驱动程序(驱动程序是针对一卡开发的),却要实现多卡选一的功能,不知道你有什么好方法??交流交流,谢谢11111


请问在加的一个索引id,是不是每一个卡的这个id都要写成不一样的?请务必回答。
粼粼
xishuwang
驱动牛犊
驱动牛犊
  • 注册日期2003-04-27
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-21 12:05
当然不一样,0―N
linjing
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2008-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-21 12:20
当然不一样,0―N
 


那你是写在eeprom的保留区域的吧,有驱动程序去读取。
粼粼
zhpzh
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2005-12-02
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-29 20:28
我越看越糊涂了。看看WINDRIVER不就清楚了?
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-07-01 00:11
驱动程序置一变量,初始为0,每次bus driver调用你的adddevice(也就是bus driver 发现了有一块卡)时加1,这样显然就得到了要得区分设备的id
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
游客

返回顶部