音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ū)動初始化問題
在做一塊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
有現(xiàn)成的驅(qū)動可以參考的啊
建議你找9052的供應(yīng)商要一個linux下的驅(qū)動來參考,會省很多事

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有關(guān)安裝雙系統(tǒng)(linux+win2000)的問題!請高手指點(diǎn)一下!!
linux下rpm文件安裝路徑問題請教
我在裝LINUX的時候?yàn)槭裁醋詈筇崾疚褿RUB安裝失敗啊 ?
linux下有什么C集成開發(fā)環(huán)境,想VC一樣的?
如何讓W(xué)INDOWS環(huán)境下的資料向虛擬機(jī)LINUX環(huán)境下轉(zhuǎn)移?
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號