Linux设备驱动模型2——总线式设备驱动组织方式
生活随笔
收集整理的這篇文章主要介紹了
Linux设备驱动模型2——总线式设备驱动组织方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。
更深入理解資料:http://blog.csdn.net/oqqhutu12345678/article/details/78933386
1、總線
(1)物理上的真實總線及其作用(英文bus);
(2)驅動框架中的總線式設計;
- 相當于中間的管理者,管理設備和驅動,包括兩者的匹配等內容。
(3)bus_type結構體
- 關鍵是match函數(負責設備和驅動的匹配)和uevent函數。
(4)總線管理設備(有一個設備鏈表)、驅動(有一個驅動鏈表)
- 它們之間通過名字來匹配。
2、設備
(1)struct device是硬件設備在內核驅動框架中的抽象;
(2)device_register,由內核開發者提供的框架提供,用于向內核驅動框架注冊一個設備;
(3)通常device不會單獨使用,而是被包含在一個具體設備結構體中,如struct usb_device。
3、驅動
(1)struct device_driver是驅動程序在內核驅動框架中的抽象;
(2)關鍵元素1:name
- 驅動程序的名字,很重要,經常被用來作為驅動和設備的匹配依據;
(3)關鍵元素2:probe
- 驅動程序的探測函數,用來檢測一個設備是否可以被該驅動所管理(該設備是否正常、以及一些初始化,見頂頭的博文描述);
4、類
(1)相關結構體:struct class(類) 和 struct class_device(類下面的某個設備)
(2)udev的使用離不開class;
(3)class的真正意義在于作為同屬于一個class的多個設備的容器。
- 也就是說,class是一種人造概念,目的就是為了對各種設備進行分類管理。
- 當然,class在分類的同時還對每個類貼上了一些“標簽”,這也是設備驅動模型為我們寫驅動提供的基礎設施。
5、總結
(1)模型思想很重要,其實就是面向對象的思想;
(2)全是結構體套結構體,對基本功(語言功底和大腦復雜度)要求很高
總結
以上是生活随笔為你收集整理的Linux设备驱动模型2——总线式设备驱动组织方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keil4如何设置自动缩进_在Keil中
- 下一篇: Linux设备驱动模型4——平台总线实践