阅读:899回复:0
pci卡资源分配的问题,高手帮忙啊
我有一块cpci的卡,就是可以热插拔的pci卡,按下面的步骤:
1、将卡插到系统中,再开机,启动windows。卡的驱动加载正常,系统也正常的给卡分配了 io、内存和中断。通过读写pci总线的配置空间,我把映射内存的三个地址、io和中断 相关的寄存器内容都记录下来。 2、如果将卡拔出,然后再正常开机,启动到windows里面。再将卡插入,读pci配置空间 发现BAR中都是0,也就是没有分配内存和io,然后中断号是ff,也没有分配中断。 我在设备管理器里面扫描硬件改动,windows能加载我的驱动程序,并且在设备管理器里 面出现了我的设备, 只是设备图标里面有一个叹号,查看属性的话,发现系统没有分配任何的中断、io和内 存,系统的提示是没有足够的资源分配,和别的设备冲突。可是我插卡了所有的设备所 用的资源,都不包括步骤1里面记下来我的卡所用的资源,也就是我认为这些资源应该 是可用的。读pci配置空间和扫描硬件之前一样,资源都是空的。 3、和步骤二相似,只是在扫描硬件改动之前,我把1步骤里面记录下的资源写到我的卡的配 置空间(通过查看发现也写进去了),然后步骤和2相同。这次设备的属性中有了那些 资源,但是在前面有一个红色的圈(里面还有一斜杠,就是不能用)。系统提示是内存 范围×××-×××不可用,输入/输出×××-×××不可用,中断倒是可用。通过 设备管理器里面选择“依类型排序资源”,倒是看见了那些资源也被我的卡占用了。 请问,为什么热插入,通过设备管理器中扫描硬件,系统不能分配资源?是因为不能用这种 方式启动设备,还是要调用pci总线的相关函数在我的驱动程序中自己申请资源? 我看有相关的资料说在pnp manager发送 IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP时 可以改动资源列表?不知道如何使用,能不能解决我的问题? |
|