學習筆記 裝置,驅動,匯流排

2021-08-03 00:15:59 字數 1359 閱讀 3508

結構體 struct device ; 標頭檔案位於linux/include/linux/device.h

用於描述裝置相關的資訊裝置之間的層次關係,以及裝置與匯流排、驅動的關係。

這篇講如何建立裝置

結構體

device_register(&tdev);

device_unregister(&tdev);

學過了裝置驅動後,就開始看匯流排。之所以電腦可以識別插入的裝置,就是靠匯流排分離和配對裝置及驅動。

這篇文章已經講解了相關的**。

當裝置插入時,匯流排會呼叫probe函式,讀其結構體,了解 到底是什麼裝置什麼匹配規則,然後初始化呼叫相對應的驅動。

裝置和驅動的拔出則使用remove函式釋放。

如果裝置註冊時沒有歸類(class)和加入匯流排(bus),不出錯但也沒意義。而驅動在沒有匯流排的情況下不能註冊入核心。

bus_register(&bus_type)

bus_unregister(&bus_type)

乙個類是乙個裝置的高層檢視,它抽象掉了底層的實現細節。它幫助裝置歸類,mdev自動生成裝置檔案於/dev。

struct

class

一樣有註冊登出:

class_register(&cls);

class_unregister(&cls);

struct class_device

呼叫函式:註冊登出

int class_device_register(struct class_device *class_dev);

void class_device_unregister(struct class_device *class_dev);

不易分類的可以分到雜裝置:miscdevice

/include/linux/ioport.h

struct resource ;

struct resource_list ;

resource->start描述裝置實體在cpu匯流排上的線性起始實體地址;

resource->end -描述裝置實體在cpu匯流排上的線性結尾實體地址;

resource->name 描述這個裝置實體的名稱,這個名字開發人員可以隨意起,但最好貼切;

resource->flag 描述這個裝置實體的一些共性和特性的標誌位;

沒有對應的結構體需要自己封裝。

struct my_device

struct device

....

匯流排 裝置和驅動

一 匯流排 linux中,使用struct bus type表示一條匯流排,該結構定義在linux device.h中,先只看其中的兩個字段,name表示匯流排的名字,比如usb i2c spi等,match方法用於匹配新增到該匯流排上的裝置和驅動,如果匹配成功,則呼叫驅動中的probe函式。註冊一...

匯流排 裝置 驅動模型

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

匯流排裝置驅動模型

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