wzxghost
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2010-11-10
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1155回复:4

为什么我的地址不能显示

楼主#
更多 发布于:2003-03-21 14:54
如下的程序:
for(i=0;;i++){
pdev = pci_find_device(vendorid, deviceid, pdev);//return pdev->next?
if(!pdev)
break;
printk(\" found device (%04X,%04X,%d) on\"
\" Bus: %d  Device :%d Function: %d\\n\",
vendorid,deviceid,i,pdev->bus->number,pdev->devfn>>3, pdev->devfn&0x7);
device_data.io_base = pci_resource_start(pdev,0);
device_data.mem_base = pci_resource_start(pdev,1);
printk(\"I found IRQ %d\\n\",pdev->irq);
printk(\" base(%d) I/O add= %04lX  MEM add= %04lX\\n\",i,device_data.io_base,device_data.mem_base);
}


为什么
PCI扳子插上后,键入
 #cat /proc/pci
可显示出 vendor id , device id, bus 等
但没能把 baseaddress等显示出来。
不知道程序的哪里出错误了?谢谢!
gyh2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-22 17:06
可能是因为你没有用pdev->来指向pci的地址.

[编辑 -  3/22/03 by  gyh2002]
wzxghost
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2010-11-10
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-22 17:34
device_data.io_base = pci_resource_start(pdev,0);返回的不是吗?你说的地址是指什么?谢谢
gyh2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-22 17:49
你看一下下面的写法是如何打印出地址的:
pciaddr = pdev->resource[(pci_flags >> 4) & 7].start;
printk(KERN_INFO \"Found %s at PCI address %#lx, mapped IRQ %d.\\n\", pci_tbl[chip_idx].name, pciaddr, pdev->irq);
wzxghost
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2010-11-10
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-22 17:53
谢谢!
游客

返回顶部