ad603
驱动牛犊
驱动牛犊
  • 注册日期2003-12-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1446回复:6

PCI总线如何分辨不同的板卡

楼主#
更多 发布于:2004-01-12 23:35
我不知PCI总线如何分辨不同的板卡,是在EEPROM中的基址寄存器中,还是要复位后在PCI总线上送什么数据,实在困惑,望请解答
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-01-13 09:23
用户被禁言,该主题自动屏蔽!
ad603
驱动牛犊
驱动牛犊
  • 注册日期2003-12-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-14 10:27
您能说得清楚点吗?那个配置空间?我实在郁闷坏了!由於我
ad603
驱动牛犊
驱动牛犊
  • 注册日期2003-12-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-15 09:25
怎么没人理我?太郁闷了!!!!!
wuvincentcn
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2006-09-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-15 10:34
老兄看源码吧,不用多说!
NTSTATUS FindPci(IN PUNICODE_STRING  RegistryPath,IN PDRIVER_OBJECT DriverObject,
PPCI_COMMON_CONFIG pPciCfgInfo, PCM_RESOURCE_LIST * pResourceList,ULONG *BusNum)
{
PCI_SLOT_NUMBER      PciSlotNumber;
CM_RESOURCE_LIST     ResourceList;
NTSTATUS Status;
    ULONG   BusNumber,i,f,j;
    BOOLEAN flag;
flag=TRUE;
  
PciSlotNumber.u.bits.Reserved=0;

 for (BusNumber=0;flag;BusNumber++)
 {
for (i=0;i<PCI_MAX_DEVICES&&flag;i++)
{      
PciSlotNumber.u.bits.DeviceNumber=i;
for (f=0;f<PCI_MAX_FUNCTION;f++)
{
PciSlotNumber.u.bits.FunctionNumber=f;

j= HalGetBusData(
  PCIConfiguration,
  BusNumber,
  PciSlotNumber.u.AsULONG,
  pPciCfgInfo,
  PCI_COMMON_HDR_LENGTH
  );

if (j==0)
{//The specified PCI bus does not exist.
flag=FALSE;
break;
}
   
if (pPciCfgInfo->VendorID==PCI_INVALID_VENDORID)
{   // skip to next slot
break;
}


if ( pPciCfgInfo->DeviceID==AMCC_DEVICE_ID &&  
 pPciCfgInfo->VendorID==AMCC_VENDOR_ID)
   //find the s5933 device,pci information stored in PciCfgInfo,
//then assign slot resource such as PciCfgInfo.u.type0
// AMCC_VENDOR_ID 0x10e8
{
*BusNum=BusNumber;
Status=HalAssignSlotResources(
RegistryPath,
NULL,
DriverObject,              
NULL,
PCIBus,
BusNumber,
PciSlotNumber.u.AsULONG,
pResourceList);
 
    flag=FALSE;
    return Status;
}
}
}
}
return STATUS_NO_SUCH_DEVICE;
}
 :P
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-01-18 18:48
硬件板卡需要提供一个 id 号;
pc 机根据这个 id 号装载相应的驱动程序;

Pc 机识别 pci 板卡需要访问 pci 板卡的配置空间。
www.bjjcz.com
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-01-18 18:50
你的 pci 板卡需要用提供一个配置空间(请阅读 pci 协议),pc 机根据 pci 协议访问配置空间; 你需要实现这个协议功能。

不知道你想做什么?
www.bjjcz.com
游客

返回顶部