linux核心中匯流排驅動模型

2021-09-11 18:08:09 字數 1475 閱讀 4885

最近學習了linux系統的匯流排驅動模型,在這就簡單的講一下自己對於其中的理解

在這個驅動模型中由幾個重要的概念 :

匯流排:這個"匯流排"不是我們通常所說的傳輸資料的匯流排,而是將裝置和驅動聯絡起來的乙個中介軟體,在這個匯流排上掛載了許多裝置,在註冊驅動模組的時候,它就會根據某種固定的匹配規則找到你想要操作的裝置,然後進行操作.

裝置:這個"裝置"是和匯流排相互聯絡的,等待驅動程式操控的

驅動:由我們自己來寫,實現某種裝置的驅動.

講了這麼一些,理解起來也不是很準確,接下來來看**:

/* 定義並初始化匯流排結構體,其中和我們相關的有這兩個成員 */

static struct bus_type demobus = ;

這個是我們寫的匯流排匹配規則函式,需要注意的是,匹配成功返回1,否則返回0

傳進來的引數就是之前我們所說的裝置結構體物件和驅動結構體物件

static int  mara_match(struct device *dev, struct device_driver *drv)

關於匯流排就講上面一些,接下裡講關於裝置結構的部分:

對匯流排結構體物件做外部宣告

extern struct bus_type demobus;

定義我們自己的裝置結構體,裡面包含核心結構體物件struct device

struct pridevice ;
當驅動模型的裝置和驅動由匯流排匹配成功後,核心會自動指向對應驅動模型的驅動物件

static struct pridevice demodev1 = ,

.name = "spring_1",

};

/*裝置物件的註冊和移除*/

device_register(&demodev1.device);

device_unregister(&demodev1.device);

接下來將關於驅動部分的**:

對匯流排結構體物件做外部宣告

extern struct bus_type demobus;

/*定義關於驅動的結構體,有這麼幾個成員需要我們注意*/

static struct device_driver demodrv1 = ;

當匯流排的match函式返回1時,則由核心呼叫驅動物件的probe指標指向的 函式

static int demo_probe (struct device *dev)

至此,整個匹配過程結束.有不對的地方還請批評和指正.

Linux核心中LED驅動框架

朱有鵬老師驅動開發學習筆記 1 讀寫led裝置屬性檔案 led裝置屬性的show和store方法 led裝置驅動程式 操作led硬體裝置 2 led classdev結構體定義 struct led classdev 3 編寫led驅動程式其實就是填充led classdev結構體內的成員,並在模組...

Linux的匯流排裝置驅動模型

在linux中,一開始bus下的device有乙個device鍊錶,driver也有乙個鍊錶,當註冊platform device的時候,會把新的platform device結構體放入device鍊錶,然後從driver的鍊錶中把已有的driver乙個乙個地取出來跟platform device結...

Linux 匯流排裝置驅動模型 (一)

匯流排裝置驅動模型 一.匯流排模型概述 隨著技術的不斷進步,系統的拓撲結構也越來越複雜,對熱插拔,跨平台移植性的要求也越來越高,2.4核心已經難以滿足這些需求。為適應這種形勢的需要,從linux2.6核心開始提供了全新的裝置模型。二.匯流排 1.描述裝置 1.在linux 核心中,匯流排由bus t...