|
|
- #include <linux/module.h>
- #include <linux/pci.h>
- #include <linux/init.h>
- #define MODULENAME "fpga"
- static int __devinit fpga_init_one(struct pci_dev *pci_dev,const struct pci_device_id *pci_id)
- {
- printk("Hello PCI!");
- }
- static int __devexit fpga_remove_one(struct pci_dev *pci_dev)
- {
- printk("Bye PCI!");
- }
- static struct pci_device_id fpga_pci_tbl[] __initdata = {
- {PCI_ANY_ID,PCI_ANY_ID,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
- {0,}
- };
- /*MODULE_DEVICE_TABLE (pci, fpga_pci_tbl);*/
- static struct pci_driver fpga_pci_driver = {
- name: MODULENAME,
- id_table: fpga_pci_tbl,
- probe: fpga_init_one,
- remove: fpga_remove_one,
- };
- static int __init fpga_init_module(void)
- {
- printk(KERN_ALERT "enter insmod \n");
- pci_register_driver(&fpga_pci_driver);
- printk(KERN_ALERT "exit insmod \n");
- }
- static void __exit fpga_cleanup_module(void)
- {
- printk(KERN_ALERT "enter insmod \n");
- pci_unregister_driver(&fpga_pci_driver);
- printk(KERN_ALERT "exit insmod \n");
- }
- module_init(fpga_init_module);
- module_exit(fpga_cleanup_module);
复制代码
注册时,probe应该执行,并打印出“Hello PCI!”可是并没有
看到网上说只有在pci_device_id[]匹配到硬件中存在的设备才会执行probe指向的函数。
对于一个嵌入式系统来说,芯片本身就有PCI controller,也有vendor ID和device ID号。
所以应该能probe到自己嵌入式芯片上本身的PCI device。为什么我的probe中的打印没有执行? |
|