|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
問PCI驅(qū)動初始化問題 |
| 作者:evenaye 欄目:驅(qū)動編程 |
在做一塊PCI采集卡的驅(qū)動,2.4下(RedHat9),用的9052,碰到個問題,請教一下 PCI驅(qū)動的file_operations結(jié)構(gòu)是如何被初始化的。吭诰W(wǎng)上找了幾個驅(qū)動看了看,沒看到這部分,pci_module_init()初始化的是一個pci_driver結(jié)構(gòu),而常規(guī)的CHAR設(shè)備初始化(register_chrdev())的是file_operations結(jié)構(gòu),這里如何與file_operations聯(lián)系到一起的。 先說一下偶看到的東西,pci_module_init()中僅完成了驅(qū)動和設(shè)備的關(guān)聯(lián)啊,從代碼上看,僅僅能probe,能remove,但是設(shè)備的具體操作,就是那些open,CLOSE,ioctrl等函數(shù)(file_operations結(jié)構(gòu)成員)是如何和設(shè)備關(guān)聯(lián)的啊,當(dāng)然在chr設(shè)備中是在初始化時調(diào)用register_chrdev(&file_operations)將設(shè)備和操作建立關(guān)聯(lián)的。但是PCI設(shè)備呢?當(dāng)用戶在應(yīng)用程序中open設(shè)備時,這個open動作是怎么調(diào)用到或者說怎么找到驅(qū)動里的open函數(shù)呢?還是有些不明白 驅(qū)動結(jié)構(gòu)參照 http://industry.ccidnet.com/art/302/20050518/252693_3.html 這篇文章 下面是對pci_module_init()的分析 pci_module_init(struct pci_driver *drv)->pci_register_driver(struct pci_driver *drv); pci_register_driver(struct pci_driver *drv)的原型如下: int pci_register_driver(struct pci_driver *drv) { struct pci_dev *dev; int count = 0; list_add_tail(&drv->node, &pci_drivers); //把drv鏈接到雙向鏈表pci_drivers pci_for_each_dev(dev) { //正向遍歷全局設(shè)備鏈表pce_devices中的每一個PCI 設(shè)備 if (!pci_dev_driver(dev)) //如果設(shè)備還沒有相應(yīng)的驅(qū)動 count += pci_announce_device(drv, dev); //如果找到相應(yīng)的驅(qū)動則返回1 } return count; } 函數(shù)pci_dev_driver() struct pci_driver * pci_dev_driver(const struct pci_dev *dev) { if (dev->driver) return dev->driver; else { int i; for(i=0; i<=PCI_ROM_RESOURCE; i++) if (dev->resource.flags & IORESOURCE_BUSY) return &pci_compat_driver; } return NULL; } 請高手指教一下,或者能提供一個完整的PCI驅(qū)動學(xué)習(xí)一下,謝謝的說! |
| 2樓: | >>參與討論 |
| 作者: swimcrane 于 2007/5/11 16:51:00 發(fā)布:
有現(xiàn)成的驅(qū)動可以參考的啊 建議你找9052的供應(yīng)商要一個linux下的驅(qū)動來參考,會省很多事 |
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |