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

2022-08-31 09:00:09 字數 1376 閱讀 9404

匯流排裝置驅動模型

一. 匯流排模型概述

隨著技術的不斷進步,系統的拓撲結構也越來越複雜,對熱插拔,跨平台移植性的要求也越來越高,

2.4核心已經難以滿足這些需求。為適應這種形勢的需要,從linux2.6核心開始提供了全新的裝置模型。

二. 匯流排

1. 描述裝置

1. 在linux 核心中, 匯流排由bus_type結構表示, 定義在

structbus_type

const char*name; /*匯流排名稱*/

int(*match)  (structdevice *dev, structdevice_driver*drv);    /*驅動與裝置的匹配函式*/

2. int(*match)(structdevice * dev, structdevice_driver* drv)

當乙個新裝置或者新驅動被新增到這個匯流排時,該函式被呼叫。用於判斷指定的驅動程式是否能處理指定的裝置。若可以,則返回非零。

2. 註冊

匯流排的註冊使用如下函式bus_register(structbus_type*bus)若成功,新的匯流排將被新增進系統,並可在/sys/bus 下看到相應的目錄

3. 登出

匯流排的登出使用函式 : void bus_unregister(structbus_type*bus) 

三. 驅動

1. 描述裝置 

在linux核心中, 驅動由device_driver結構表示。

structdevice_driver

const char*name; /*驅動名稱*/

structbus_type*bus;  /*驅動程式所在的匯流排*/

int(*probe) (structdevice *dev);

2. 註冊

#驅動的註冊使用如下函式

intdriver_register(structdevice_driver*drv)

3. 登出

#驅動的登出使用如下函式

void driver_unregister(structdevice_driver*drv)

四. 裝置

1. 描述裝置

在linux核心中, 裝置由structdevice結構表示。

structdevice 、

const char *init_name;  /*裝置的名字*/

struct bus_type*bus;  /*裝置所在的匯流排*/

2. 註冊

#裝置的註冊使用如下函式

intdevice_register(structdevice *dev)

3. 登出

#裝置的登出使用以下函式

void device_unregister(structdevice *dev)

匯流排 裝置 驅動模型

裝置元素 匯流排,驅動,裝置 匯流排 處理器和裝置之間的通道,在裝置模型中,所有的裝置都通過匯流排相連,甚至是內部的虛擬 platform 匯流排 定時器,看門狗並沒有直接相連 在linux裝置模型中,匯流排由bus type結構表示,定義在 匯流排的註冊使用 bus register struct...

匯流排裝置驅動模型

匯流排裝置驅動模型 匯流排是主機和裝置之間的通道,由bus type 結構描述。int bus register struct bus type bus 匯流排的註冊,若成功,新的匯流排將被新增進系統,並可在 sysfs 的 sys bus 下看到。void bus unregister struc...

匯流排裝置驅動模型

匯流排 乙個匯流排是處理器和乙個或多個裝置之間的通道。為裝置模型的目的,所有的裝置都通過乙個匯流排連線,甚至當它是乙個內部的虛擬的 平台 匯流排。裝置 裝置就是連線在匯流排上的物理實體。裝置是有功能之分的。具有相同功能的裝置被歸到乙個類 class 中。在linux 系統中,每個裝置由乙個 stru...