Linux裝置驅動模型(sysfs)

2022-03-14 04:22:38 字數 2120 閱讀 1869

匯流排模型概述

>

隨著技術的發展,系統的拓撲結構也越來越複雜,對熱插拔。跨平台移植性的要求越來越高,從linux2.6核心開始提供全新的裝置模型。將所有的驅動掛載到計算機的匯流排上(比如

usb匯流排),當有裝置連線到匯流排上的時候,匯流排能夠感知到,這時系統就會把掛載到匯流排上是所有驅動和裝置匹配。通過不同的識別方式,知道找到相應的驅動。

《匯流排裝置驅動》

定義並描述匯流排裝置:

struct bus_type

向linux系統註冊匯流排

:bus_register(struct bus_type *bus)

如果註冊成功,新匯流排將被新增進系統,

並在/sys/bus下看到相應的目錄。

向linux系統登出匯流排:

void bus_unregister(struct bus_type *bus)

定義並描述linux匯流排驅動:

struct device_driver

向linux系統註冊匯流排驅動:

int driver_register(struct device_driver *drv)

向linux系統登出匯流排驅動

:void driver_unregister(struct device_driver*drv)

裝置

>

描述裝置:

struct device

註冊:int device_register(struct device *dev)

登出:void device_unregister(struct device *dev)

在匯流排上掛載乙個裝置

:平台匯流排對匯流排驅動模型做詳細的講解:

平台匯流排裝置設計

>

1)平台匯流排概述

平台匯流排(platform bus)是

linux2.6

核心中加入的一種虛擬匯流排,其優勢在於採用了匯流排模型對驅動和裝置進行管理,這樣提高了程式的可移植性。也就是說核心中已經給我們建立好了這種匯流排,只需要將裝置和驅動掛在到匯流排上就行了。

平台匯流排開發流程:

平台匯流排裝置和驅動的匹配機制:

(1)如果驅動中有

id_table ,

這就用裝置號進行匹配

(2)但是大多是用裝置名和驅動名進行匹配

2)平台裝置

描述平台裝置:

struct platform_device;

注意:裝置資源,主要是指裝置中的暫存器,中斷號等。

struct resource ;

註冊平台裝置:

int platform_device_register(struct platform _device *pdev)

3)平台驅動

描述平台結構:

備註:在linux 裝置模型中的,在「核心」中使用kobject 結構來表示,在"使用者空間"使用sysfs來表示,表象形式是資料夾和檔案樹。

a:kobject 代表sysfs 系統中的乙個目錄,其中name就是其中的該目錄的名稱

b:kobjec 在sysfs 中的位置(組織層次結構)由parent 指定.

所有屬於該kset 的kobject的parent指標都指向kset 的kobject

所有屬於該kset 的kobject的kset 指標都指向該kset

c:當kobject中的引用計數為0 時,系統將呼叫kobj_type 中的函式release()將驅動所占有的資源釋放掉

d:新增非預設屬性檔案的呼叫函式

int sysfs_create_file(struct kobject *kobj,const struct atrribute *attr)

e:kobj_type

所謂屬性,是指對於任何乙個硬體有該硬體的特點,比如硬體喇叭,會有最基本的音量屬性。

Linux裝置驅動模型

核心版本 2.6.29 裝置驅動模型框架是linux驅動程式設計的基礎。它通過kobject,kset,ktype等底層資料結構將bus type,device,device driver 等高層資料結構組織起來,形成乙個層次 分類清晰的驅動模型。優點如下 1.重用。將物件抽象為匯流排 驅動 裝置三...

linux驅動模型 裝置

thebasic device structure see the kerneldoc for the struct device.programminginte ce 檢測到裝置的匯流排驅動使用如下函式將裝置註冊到核心 int device register struct device dev 匯...

Linux裝置驅動模型

一 裝置驅動模型 驅動模型提供硬體的抽象,核心可以使用該抽象完成很多重複的工作。這些抽象主要有 電源管理,即插即用裝置支援,與使用者空間的通訊 二 核心資料結構 kobject 通過它可以以樹狀結構來管理裝置 kobj type 用來表示kobject的屬性 三 三大元件 匯流排 裝置 驅動 匯流排...