linux 裝置驅動模型

2021-10-25 08:16:36 字數 741 閱讀 9981

linux 裝置驅動模型(linux device model):

usb轉串列埠裝置插入centos主機中,核心將與裝置中的韌體程式進行通訊,得到usb裝置中的配置資訊,包括此裝置是哪種裝置,輸入裝置,或者是大容量儲存等等。然後核心到該匯流排的驅動程式鍊錶中查詢,哪個驅動程式與該裝置匹配(match),如果不匹配,查詢下乙個,如果匹配上了,則呼叫該驅動程式的probe函式 ,probe再次確認此裝置是否是自己能控制的裝置,然後將結果返回,如果成功,核心將該裝置和驅動配對。

那麼驅動程式是如何加入到某匯流排的驅動程式鍊錶中呢?通過驅動中的註冊**。驅動有兩模式,一是被編譯進核心中的,這種驅動在核心啟動時即被註冊了。另一種沒有編譯到核心中的,需要insmod 顯示讓他註冊。

配對成功後,會在/dev中自動生成乙個裝置節點,比如/dev/ttyusb0,應用程式可以讀寫這個節點,用來讀寫串列埠。

這個裝置結點是誰生成的呢?是systemd-udevd.service

它根據/sys/class/tty/ttyusb0中的dev和uevent檔案生成。這兩個檔案中都有主裝置號和次裝置號,以及裝置名字。

這個ttyusb0資料夾中的內容都是驅動**呼叫系統函式(如class_******_create)生成的。

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的屬性 三 三大元件 匯流排 裝置 驅動 匯流排...