linux下bus,device,driver三者關係

來源:互聯網
上載者:User
linux下bus,device,driver三者關係

                            

  1.bus:

  匯流排作為主機和外設的串連通道,有些匯流排是比較規範的,形成了很多協議。如PCI,USB,1394,IIC等。任何裝置都可以選擇合適的匯流排串連到主機。當然主機也可能就是CPU本身。記憶體也是通過BUS串連到主機的,可記憶體使用量的匯流排不是外設匯流排,因此和記憶體使用量相同類型的匯流排的裝置,談及BUS比較含糊。

  一塊網卡在嵌入式開發中,直接通過記憶體匯流排接入到CPU。我們在寫網卡驅動時,要給該BUS定義就麻煩了。

  2.driver:

  驅動程式是在CPU運行時,提供操作的軟體介面。所有的裝置必須有與之配套驅動程式才能正常工作。一個驅動程式可以驅動多個類似或者完全不同的裝置。

  3.device:

  裝置就是串連在匯流排上的物理實體。裝置是有功能之分的。具有相同功能的裝置被歸到一個類(CLASS中)。如音訊裝置(和聲音相關的都算),輸入裝置(滑鼠,鍵盤,遊戲杆等)。。。。

  從宏觀考慮,任何裝置必須要串連到主機才能發揮其作用。一個滑鼠離開了電腦主機就不再是滑鼠了。提到了串連就必然出現匯流排BUS。任何裝置要正常運行必須有軟體支援,所有的裝置必須有DRIVER。裝置的目的就是完成功能,根據功能的分類,該裝置必然屬於某個CLASS。

  1.三者的定義在 include/linux/device.h裡。

  2.匯流排中的那兩條鏈表是怎麼形成:

  這要求每次出現一個裝置就要向匯流排彙報,或者說註冊,每次出現一個驅動,也要向匯流排彙報,或者說註冊。比如系統初始化的時候,會掃描串連了哪些裝置,並為每一個裝置建立起一個struct device的變數,每一次有一個驅動程式,就要準備一個struct device_driver結構的變數。把這些變數統統加入相應的鏈表,device 插入devices 鏈表,driver插入drivers鏈表。這樣通過匯流排就能找到每一個裝置,每一個驅動.然而,假如電腦裡只有裝置卻沒有對應的驅動,那麼裝置無法工作。反過來,倘若只有驅動卻沒有裝置,驅動也起不了任何作用。

  3.匯流排上的兩條鏈表已經有了,鏈表裡的device和driver又是如何聯絡

  每一個要用的device在電腦啟動之前就已經插好了,插放在它應該在的位置上,然後電腦啟動,然後作業系統開始初始化,匯流排開始掃描裝置,每找到一個裝置,就為其申請一個struct device結構,並且掛入匯流排中的devices鏈表中來;

  然後每一個驅動程式開始初始化,開始註冊其struct device_driver結構,然後它去匯流排的devices鏈表中去尋找(遍曆),去尋找每一個還沒有綁定driver的裝置,即struct device中的struct device_driver指標仍為空白的裝置,然後它會去觀察這種裝置的特徵,看是否是他所支援的裝置,如果是,那麼調用一個叫做 device_bind_driver的函數。換句話說,把struct device中的struct
device_driver driver指向這個driver,而struct device_driver driver把struct device加入他的那張struct klist klist_devices鏈表中來。就這樣,bus、device和driver,這三者之間或者說他們中的兩兩之間,就給聯絡上了

  4.熱插拔:

  device可以在電腦啟動以後在插入或者拔出電腦了。因此,很難再說是先有 device還是先有driver了。因為都有可能。device可以在任何時刻出現,而driver 也可以在任何時刻被載入,所以,出現的情況就是,每當一個struct device誕生,它就會去bus的drivers鏈表中尋找自己的另一半,反之,每當一個一個struct device_driver誕生,它就去bus的devices鏈表中尋找它的那些裝置。如果找到了合適的,那麼ok,和之前那種情況一下,調用
device_bind_driver綁定好.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.