- 論壇徽章:
- 0
|
開發(fā)一個(gè)LINUX下的PCI驅(qū)動(dòng),在
static int __init PCI9030_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
printk("<1>entre myprobe\n";
/* 啟動(dòng)PCI設(shè)備*/
if(pci_enable_device(dev));
return -EIO;
if((card=kmalloc(sizeof(struct PCI9030_card),GFP_KERNEL))==NULL)
{
printk(KERN_ERR"CI9030ut of memory\n";
return -ENOMEM;
}
memset(card,0,sizeof(struct PCI9030_card));
card->iobase1=pci_resource_start(dev,1);
card->iobase2=pci_resource_start(dev,2);
card->CI_dev=*dev;
card->pci_deviceID=id->device;
card->iobase1len=pci_resource_len(dev,1);
card->iobase2len=pci_resource_len(dev,2);
card->iobase1flag=pci_resource_flags(dev,1);
card->iobase2flag=pci_resource_flags(dev,2);
card->next=NULL;
unsigned long testReadConfig;
printk("<1>card iobase1flag,iobase2flag:%lx , %lx \n",card->iobase1flag,card->iobase2flag);
return 0;
}
打印出來的FLAG值居然是f8a3dd10,顯然是個(gè)錯(cuò)誤代碼,
現(xiàn)在的驅(qū)動(dòng)能訪問到PCI配置空間,但是訪問不了IO和IO內(nèi)存空間,是沒給IO空間分配資源么????
在/sys/bus/puc/*/下看到我的硬件對(duì)應(yīng)的resource文件里的內(nèi)容為
0x00000000febffc00 0x00000000febffc7f 0x0000000000000200
0x00000000000ec00 0x000000000000ec7f 0x000000000000101
0x000000000000e880 0x000000000000e8bf 0x00000000000101
0x00000000000000 0x0000000000000000 0x0000000000000000
(數(shù)是64位的)
但是該目錄下另外三個(gè)文件resource0,resource1,resource2里的都沒有值
是沒分配資源么????急急急 |
|