日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux设备驱动模型2——总线式设备驱动组织方式

發(fā)布時間:2023/12/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux设备驱动模型2——总线式设备驱动组织方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容源于朱有鵬嵌入式課程的學習,如有侵權(quán),請告知刪除。

更深入理解資料:http://blog.csdn.net/oqqhutu12345678/article/details/78933386


1、總線

(1)物理上的真實總線及其作用(英文bus);

(2)驅(qū)動框架中的總線式設(shè)計;

  • 相當于中間的管理者,管理設(shè)備和驅(qū)動,包括兩者的匹配等內(nèi)容。

(3)bus_type結(jié)構(gòu)體

  • 關(guān)鍵是match函數(shù)(負責設(shè)備和驅(qū)動的匹配)和uevent函數(shù)。


(4)總線管理設(shè)備(有一個設(shè)備鏈表)、驅(qū)動(有一個驅(qū)動鏈表)

  • 它們之間通過名字來匹配。


2、設(shè)備

(1)struct device是硬件設(shè)備在內(nèi)核驅(qū)動框架中的抽象;

(2)device_register,由內(nèi)核開發(fā)者提供的框架提供,用于向內(nèi)核驅(qū)動框架注冊一個設(shè)備;

(3)通常device不會單獨使用,而是被包含在一個具體設(shè)備結(jié)構(gòu)體中,如struct usb_device。

3、驅(qū)動

(1)struct device_driver是驅(qū)動程序在內(nèi)核驅(qū)動框架中的抽象;

(2)關(guān)鍵元素1:name

  • 驅(qū)動程序的名字,很重要,經(jīng)常被用來作為驅(qū)動和設(shè)備的匹配依據(jù)

(3)關(guān)鍵元素2:probe

  • 驅(qū)動程序的探測函數(shù),用來檢測一個設(shè)備是否可以被該驅(qū)動所管理(該設(shè)備是否正常、以及一些初始化,見頂頭的博文描述);

4、類

(1)相關(guān)結(jié)構(gòu)體:struct class(類) 和 struct class_device(類下面的某個設(shè)備)

(2)udev的使用離不開class;

(3)class的真正意義在于作為同屬于一個class的多個設(shè)備的容器。

  • 也就是說,class是一種人造概念,目的就是為了對各種設(shè)備進行分類管理。
  • 當然,class在分類的同時還對每個類貼上了一些“標簽”,這也是設(shè)備驅(qū)動模型為我們寫驅(qū)動提供的基礎(chǔ)設(shè)施。

5、總結(jié)

(1)模型思想很重要,其實就是面向?qū)ο蟮乃枷?/strong>

(2)全是結(jié)構(gòu)體套結(jié)構(gòu)體,對基本功(語言功底和大腦復雜度)要求很高

總結(jié)

以上是生活随笔為你收集整理的Linux设备驱动模型2——总线式设备驱动组织方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。